<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Embrel Grim</title>
    <description>The latest articles on DEV Community by Embrel Grim (@rud9).</description>
    <link>https://dev.to/rud9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4236578%2F6724ea06-7bb7-433d-8785-603397d3b7ae.png</url>
      <title>DEV Community: Embrel Grim</title>
      <link>https://dev.to/rud9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rud9"/>
    <language>en</language>
    <item>
      <title>an attempt at hypernetworks on an RX 6600</title>
      <dc:creator>Embrel Grim</dc:creator>
      <pubDate>Tue, 10 Nov 2026 08:06:39 +0000</pubDate>
      <link>https://dev.to/rud9/an-attempt-at-hypernetworks-on-an-rx-6600-532p</link>
      <guid>https://dev.to/rud9/an-attempt-at-hypernetworks-on-an-rx-6600-532p</guid>
      <description>&lt;h2&gt;
  
  
  Where the Idea Came From
&lt;/h2&gt;

&lt;p&gt;I realized that my hardware couldn't run anything decent, so I decided to play it safe—buy proper components? Of course not—build my own architecture!&lt;/p&gt;

&lt;p&gt;Full of confidence, I sat down at my desk and started hacking away. In short, the idea was this: train a small model that takes our prompt as input and &lt;strong&gt;prints a first layer tailored to it&lt;/strong&gt;, runs the input through it, discards the layer, and prints the second one. In my crazy head, this was supposed to make the neural network more "suited" to the query (after all, it's generated specifically for it), and most importantly—drastically reduce the need for tens of gigabytes of fast memory.&lt;/p&gt;

&lt;p&gt;To compensate for the difficulty of transferring general knowledge from the "printer model" to the layers, I chose an exquisite approach—I threw knowledge out entirely and plugged Wikipedia into the runtime. The strangest thing is that the idea actually seems to have worked.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Came Out in the End
&lt;/h2&gt;

&lt;p&gt;In practice, several more decisions were made—such as taking &lt;strong&gt;one base layer and generating a delta layer, then summing the hidden states&lt;/strong&gt;, generating weights &lt;strong&gt;head-wise&lt;/strong&gt; (each attention and MLP head gets its own matrices), adding a trainable &lt;strong&gt;depth gate&lt;/strong&gt; (&lt;code&gt;sigmoid(depth_scale[l])&lt;/code&gt;, so that each iteration enters the residual with its own weight), zeroing out &lt;code&gt;W_o&lt;/code&gt; and &lt;code&gt;W_out&lt;/code&gt; at initialization so the generated layer starts as a no-op, plus a &lt;strong&gt;byte morph-patcher&lt;/strong&gt; for rare words and typos, and a &lt;strong&gt;compact vocabulary&lt;/strong&gt; with prefix fallback. And more.&lt;/p&gt;

&lt;p&gt;Ultimately, the idea took the following shape:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Base layer.&lt;/strong&gt; A single real Qwen2 decoder layer—specifically layer #6 from Qwen2.5-0.5B.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layer factory&lt;/strong&gt; (&lt;code&gt;CanonicalHeadwiseFactory&lt;/code&gt;). A small network that generates weights for the next layer based on the current hidden states and iteration number:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AttentivePooler&lt;/code&gt; — attention pooling over hidden states → context vector;&lt;/li&gt;
&lt;li&gt;concatenation with the "frontier" (last position / anchor) → &lt;code&gt;proj_in&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;depth_emb[l]&lt;/code&gt; — iteration index embedding;&lt;/li&gt;
&lt;li&gt;all this feeds into a &lt;code&gt;GRUCell&lt;/code&gt;, which carries state across iterations;&lt;/li&gt;
&lt;li&gt;from the GRU output, two MLPs generate &lt;strong&gt;per-head&lt;/strong&gt; matrices: &lt;code&gt;W_q, W_k, W_v, W_o&lt;/code&gt; (&lt;code&gt;d_head × d_head&lt;/code&gt;) for attention and &lt;code&gt;W_in&lt;/code&gt; (&lt;code&gt;d_head × gen_mlp&lt;/code&gt;), &lt;code&gt;W_out&lt;/code&gt; (&lt;code&gt;gen_mlp × d_head&lt;/code&gt;) for MLP.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generated block&lt;/strong&gt; (&lt;code&gt;CanonicalGeneratedBlock&lt;/code&gt;). The same structure as a Qwen2 layer (pre-norm → attention → residual → pre-norm → MLP → residual), but the attention and MLP weights come from the outside, via the factory. &lt;strong&gt;A single physical block is reused across all &lt;code&gt;depth&lt;/code&gt; iterations&lt;/strong&gt;—only the weights change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assembly.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   h = embed(tokens) + 0.1 * morph(bytes)
   g = g_init
   for l in 0..depth-1:
       g, W_attn, W_mlp = factory(h, g, l)
       base_out = base_layer(h)
       gen_out  = gen_block(h, W_attn, W_mlp)
       h = h_prev + σ(depth_scale[l]) · (base_out + gen_out − h_prev)
   logits = lm_head(norm(h))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Anchor.&lt;/strong&gt; The factory sees &lt;strong&gt;only the prompt&lt;/strong&gt; (positions &lt;code&gt;&amp;lt; anchor_len&lt;/code&gt;), not the response. This eliminates future leakage during training, makes training mode equivalent to generation, and allows KV-cache reuse within a segment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compact vocabulary.&lt;/strong&gt; Instead of Qwen's 151k tokens—11,264 tokens selected by coverage (0.999 of the corpus). Rare tokens map to the longest prefix in the dictionary. Tool markup (&lt;code&gt;&amp;lt;tool_call&amp;gt;&lt;/code&gt;, &lt;code&gt;arguments&lt;/code&gt;, &lt;code&gt;expression&lt;/code&gt;, etc.) is forcibly included to prevent JSON from breaking at inference time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Byte patcher.&lt;/strong&gt; For each token, its 8 bytes are taken → &lt;code&gt;Embedding(256, 32)&lt;/code&gt; → MLP → &lt;code&gt;d_model&lt;/code&gt;. Added to the regular embedding with a 0.1 weight. Helps with typos, rare words, and OOVs.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How It Was Trained
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;qwen36m&lt;/code&gt; preset in &lt;code&gt;build_neuroset.py&lt;/code&gt; (available on GitHub, link below):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;init: layer #6 from Qwen2.5-0.5B;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;depth=8&lt;/code&gt;, &lt;code&gt;base_layers=1&lt;/code&gt;, &lt;code&gt;d_model=896&lt;/code&gt;, &lt;code&gt;n_heads=14 × d_head=64&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;compact vocab: 11,264, strategy &lt;code&gt;coverage&lt;/code&gt;, 0.999 coverage;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;max_seq_len=512&lt;/code&gt;, &lt;code&gt;batch_size=4 × grad_accum=4&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lr=1.5e-5&lt;/code&gt; for the factory, &lt;code&gt;lr_base=3e-6&lt;/code&gt; for the base layer;&lt;/li&gt;
&lt;li&gt;budget: ~8 hours on an RX 6600 (8 GB), ~60M tokens;&lt;/li&gt;
&lt;li&gt;masking on assistant tokens, boosted loss weight on tokens inside &lt;code&gt;&amp;lt;tool_call&amp;gt;…&amp;lt;/tool_call&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;After many sleepless nights of failure and tormenting my RX 6600, I finally got a working 36-million parameter network, which is what we'll discuss next. Let me brag a little with some test runs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usr&amp;gt; how much is 47 * 13?
agt&amp;gt; &amp;lt;tool_call&amp;gt;
{"name":"calculate","arguments":{"expression":"47 * 13"}}
&amp;lt;/tool_call&amp;gt;
&amp;lt;tool_response&amp;gt;{"content":"611"}&amp;lt;/tool_response&amp;gt;
Total: 611.

usr&amp;gt; what is the capital of France?
agt&amp;gt; &amp;lt;tool_call&amp;gt;
{"name":"web_search","arguments":{"query":"capital of France"}}
&amp;lt;/tool_call&amp;gt;
&amp;lt;tool_response&amp;gt;{"content":"France is a sovereign country in Western Europe. Its capital is Paris…"}&amp;lt;/tool_response&amp;gt;
Per Wiki: France is a sovereign country in Western Europe. Capital — Paris…

usr&amp;gt; hello!
agt&amp;gt; Hello. I'm listening.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model &lt;strong&gt;decides on its own&lt;/strong&gt; when to call a tool, and &lt;strong&gt;synthesizes the answer itself&lt;/strong&gt; based on the retrieved fact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison with Same-Weight Competitors
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;============================================================
Model: veyra-ai/Veyra-30M-Instruct  (prompt language: en)
============================================================
usr&amp;gt; What is 47 * 13?
agt&amp;gt; Course Unit: Football Festival in the Himalayas

Hello there! I hope you're enjoying your meal and having fun. I'm sure you're going to do great things together! I'm an AI and I can't wait to share with you that. Would you like me to do that?

usr&amp;gt; What is the capital of France?
agt&amp;gt; In the realm of the bustling city of Paris, where the city's rich history and diverse culture intertwine the serene and serene landscape of the city, I stand before the grandeur of the bustling metropolis of Lisbon. This bustling metropolis, where the city's rich history and diverse culture intertwined, was born, is celebrated for its stunning landscapes and vibrant culture. As a result, the city's rich history and diverse culture are celebrated for its stun

usr&amp;gt; Hello!
agt&amp;gt; In the realm of technology and technology, the concept of "technology" is crucial for understanding the intersection of technology and technology. This concept is crucial in the field of technology and engineering, as it provides a framework for understanding how technology can be used to enhance or modify processes and systems. By examining the interactions between technology and engineering, we can gain insights into how these systems are developed and developed. This understanding can lead to more effective and effective technologies that are both practical and innovative. Moreover, it highlights the importance of interdisciplinary collaboration in address

============================================================
Model: VGribAI/Tensor-2-40m-instruct  (prompt language: ru)
============================================================
usr&amp;gt; Сколько будет 47 * 13?
agt&amp;gt; Чтобы найти вопрос 90 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15 = 15  15  1

usr&amp;gt; Какая столица Франции?
agt&amp;gt; Это задача про китайского мира, который вы можете использовать для создания и уважения. Вот несколько шагов, которые могут помочь:1. Установка: Затем выполните следующие шаги:1. Программа на создание типа: Законы искусственного интеллекта, котор

usr&amp;gt; Привет!
agt&amp;gt; Как я могу помочь тебе сегодня?Я здесь, чтобы помочь тебе сегодня?Я помогу вам сегодня?Я здесь, чтобы помочь тебе сегодня.Я здесь, чтобы помочь вам сегодня.Пользователь: Я могу помочь вам сегодня. Я могу помочь вам сегодня.Пользователь: Я
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, our architecture performs much better. And in terms of speed:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Params&lt;/th&gt;
&lt;th&gt;Prompt&lt;/th&gt;
&lt;th&gt;ms&lt;/th&gt;
&lt;th&gt;tok/s&lt;/th&gt;
&lt;th&gt;byte/s&lt;/th&gt;
&lt;th&gt;Bytes&lt;/th&gt;
&lt;th&gt;All 10 runs in ms&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Veyra-30M-Instruct&lt;/td&gt;
&lt;td&gt;34,611,712&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;355.2&lt;/td&gt;
&lt;td&gt;140.75&lt;/td&gt;
&lt;td&gt;579.87&lt;/td&gt;
&lt;td&gt;2060&lt;/td&gt;
&lt;td&gt;3552.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tensor-2-40M-Instruct&lt;/td&gt;
&lt;td&gt;40,036,832&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;787.7&lt;/td&gt;
&lt;td&gt;63.47&lt;/td&gt;
&lt;td&gt;224.69&lt;/td&gt;
&lt;td&gt;1770&lt;/td&gt;
&lt;td&gt;7877.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Neuroset assistant8&lt;/td&gt;
&lt;td&gt;35,849,352&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;579.2&lt;/td&gt;
&lt;td&gt;86.33&lt;/td&gt;
&lt;td&gt;169.20&lt;/td&gt;
&lt;td&gt;980&lt;/td&gt;
&lt;td&gt;5791.9&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We pay for intelligence and low parameter count with speed; however, this is primarily driven by aggressive tokenizer chunking, and it is also compensated for by huge weight compression, allowing one to buy less memory with higher bandwidth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmarks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Instruction Following
&lt;/h3&gt;

&lt;p&gt;Each model responds to 6 equivalent tasks &lt;strong&gt;in its native language&lt;/strong&gt;, and the results are compared directly. Correctness is evaluated (for arithmetic/capital/person — presence of the fact; for the rest — a coherent response in its language without repetitions).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;ours_36m&lt;/th&gt;
&lt;th&gt;TinyStories-Instr&lt;/th&gt;
&lt;th&gt;Stentor-30M&lt;/th&gt;
&lt;th&gt;Veyra-30M&lt;/th&gt;
&lt;th&gt;Tensor-2-40M&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hello!&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;⚠️ 50/50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How much is 47 × 13?&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What is the capital of France?&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who is Pushkin?&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What is gravity?&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What is the largest planet?&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TOTAL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5/6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1/6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0/6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0/6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.5/6&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Our 36M model handles &lt;strong&gt;almost all&lt;/strong&gt; tasks—including exact arithmetic via tool use and facts from Wikipedia. Competitors of the same size failed on these specific prompts: they fell into repetition loops or produced irrelevant text.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tool Use Skill (Our Model Only)
&lt;/h3&gt;

&lt;p&gt;Deterministic evaluation (91 checks; tool responses are fixed to isolate model intelligence from search noise):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;
&lt;code&gt;assistant8&lt;/code&gt; (36M)&lt;/th&gt;
&lt;th&gt;
&lt;code&gt;assistant_big6&lt;/code&gt; (129M)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Query formulation (query)&lt;/td&gt;
&lt;td&gt;27/39&lt;/td&gt;
&lt;td&gt;29/39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fact marker in final answer (answer)&lt;/td&gt;
&lt;td&gt;22/39&lt;/td&gt;
&lt;td&gt;35/39*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arithmetic (calculate)&lt;/td&gt;
&lt;td&gt;7/8&lt;/td&gt;
&lt;td&gt;8/8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Calibration (do not call tools for chitchat)&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Synthesis faithfulness (faith)&lt;/td&gt;
&lt;td&gt;0.42&lt;/td&gt;
&lt;td&gt;0.75&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;129M was evaluated using an older script and has not been recomputed with the new eval_det, see GitHub for details.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Scaling: 129M on Very Little Data
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;runs/assistant_big6&lt;/code&gt; (128.99M: base layer from Qwen2.5-1.5B, &lt;code&gt;d_model=1536&lt;/code&gt;, vocab 32,768) is an example showing that even with a tiny amount of training data, the architecture can already produce coherent speech. It was trained for ~45 hours on a single RX 6600 on the same data mix (~60M tokens; open-source models of this size are typically trained on trillions).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usr&amp;gt; tell me about Mars
agt&amp;gt; Per Wiki: Mars is the fourth planet from the Sun in the Solar System…
usr&amp;gt; what is gravity?
agt&amp;gt; From Wiki: Gravity is a universal fundamental interaction…
usr&amp;gt; hello!
agt&amp;gt; Doing well, thanks! What's the question?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not a head-to-head comparison with competitors, but rather a demonstration that the architecture &lt;strong&gt;scales and remains conversational&lt;/strong&gt; at ridiculously low compute costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations / What Didn't Work
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Entity copying into queries &lt;strong&gt;is unreliable on rare words&lt;/strong&gt; (occasional typos in the query)—a capacity limitation of 36M.&lt;/li&gt;
&lt;li&gt;Synthesis sometimes distorts facts (faithfulness 0.42 in 36M); a short tool response helps.&lt;/li&gt;
&lt;li&gt;Lead-paragraph retrieval does not always answer attribute-based questions.&lt;/li&gt;
&lt;li&gt;English is not the target language (the model is Russian-speaking).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reproduction Commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# stage 1 — full SFT&lt;/span&gt;
python build_neuroset.py --preset qwen36m --data-dir dataset1 --out runs/base \
  --hours 5 --max-seq-len 768 --lr 2e-4 --lr-base 4e-5 --warmup 400 --yes

&lt;span class="c"&gt;# stage 2 — continuation on new mix&lt;/span&gt;
python build_neuroset.py --preset qwen36m --data-dir dataset2 --out runs/base2 \
  --init-ckpt runs/base/checkpoints/best.pt \
  --vocab-pack runs/base/compact_vocab.pt \
  --hours 1.5 --max-seq-len 768 --lr 6e-5 --lr-base 1.5e-5 --warmup 120 --yes

&lt;span class="c"&gt;# stage 3 — assistant: tools + RAG&lt;/span&gt;
python build_neuroset.py --preset qwen36m --data-dir dataset3 --out runs/assistant8 \
  --init-ckpt runs/base2/checkpoints/best.pt \
  --vocab-pack runs/base2/compact_vocab.pt \
  --max-tokens 40000000 --hours 1 --max-seq-len 768 \
  --lr 4e-5 --lr-base 1e-5 --warmup 200 --yes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The model turned out surprisingly capable—honestly, I didn't expect this, as it was built (vibe-coded in parallel with other projects) and slapped together on the fly.&lt;/p&gt;

&lt;p&gt;This is my first article on Habr, so I'd appreciate any feedback on the presentation and methodology. I understand that the benchmarks here serve as a sanity check rather than a systematic evaluation: the sample size is small, and competitor models were tested without prompt tuning. More comprehensive metrics can be found in the project's README—I didn't include them in the article to keep it concise.&lt;/p&gt;

&lt;p&gt;For those interested in exploring the code, digging deeper, running it locally, or maybe even training it—welcome to GitHub: &lt;a href="https://github.com/RUD9/Grimoire" rel="noopener noreferrer"&gt;https://github.com/RUD9/Grimoire&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
