{
  "description": "Browse aymeric's, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.",
  "feed_url": "https://aggr.aymericbeaumet.com/sources/divagr.com/feed.json",
  "home_page_url": "https://aggr.aymericbeaumet.com/sources/divagr.com/",
  "items": [
    {
      "authors": [
        {
          "name": "csmantle"
        }
      ],
      "content_html": "<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://divagr.com/blog\">← My writing</a></p>\n<p>COMPILED WEIGHTS</p>\n<p>A stock Qwen 3.5 4B with a RISC-V CPU compiled into its weights, running on its own Gated DeltaNet layers as RAM.</p>\n<h2>I can't believe it's not silicon</h2>\n<p>Qwenputer is a pretty fun experimental model. It's a stock Qwen 3.5 4B with one addition: a RISC-V CPU embedded within the weights that uses the model's own Gated DeltaNet attention layers as RAM. (To learn how GDN works, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://divagr.com/attention-lab/delta\">here's a handy guide</a>.) This 'CPU' runs completely within the forward passes of the model, and can run arithmetic operations, C and MicroPython code without any external runtime or tool usage whatsoever.</p>\n<p>To be very clear, it is not a plugin, a tool or a sandbox. This blog will explain exactly how this model works, and how the model utilises GDN layers as RAM, and how I also slotted in an experimental in-model file storage.</p>\n<p>I also wrote up two follow-ups built on top of Qwenputer: how <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://divagr.com/blog/hybrid-models-can-hide-reasoning-in-their-rnn-state\">hybrid models can learn to hide their reasoning in their RNN state and evade CoT monitoring</a>, and how <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://divagr.com/blog/building-oversight-tools-into-a-models-weights\">compiled weights like these can work as inbuilt monitoring tools that the model itself can't tamper with</a>.</p>\n<figure class=\"article-figure\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://divagr.com/qwenputer/demo.gif\" alt=\"Qwen hands a multiplication to the RISC-V CPU inside its own weights; the CPU&#39;s RAM is Gated DeltaNet state\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><figcaption>Qwen hands a multiplication to the RISC-V CPU inside its own weights; the CPU's RAM is Gated DeltaNet state</figcaption></figure>\n<p>You can grab Qwenputer from <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/divagr1925/Qwen3.5-4B-Qwenputer\">Hugging Face</a> or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.modelscope.ai/models/Spartan1925/Qwen3.5-4B-Qwenputer\">ModelScope</a>, and the code is on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/divagr18/qwenputer\">GitHub</a>.</p>\n<h2>The RNN inside Qwen3.5 can be exact RAM</h2>\n<p>Qwen3-Next and Qwen 3.5 (the model Qwenputer is built on) use a pretty neat trick. 3 out of 4 attention layers in the model use Gated DeltaNet, a linear RNN, as the attention mechanism (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://divagr.com/attention-lab/delta\">more on that here</a>). Each head keeps a state matrix, and the delta rule keeps this updated.</p>\n<p>Now, here's where our fun experiment starts. I found out that by setting the gate to 1,<sup class=\"footnote-ref\"><a href=\"#fn-1\" id=\"fnref-1\" data-footnote-ref>1</a></sup>1 Each Gated DeltaNet head keeps a state matrix, its memory. At every token, before writing anything new, it multiplies the whole state by the gate, a number between 0 and 1. That's how the RNN forgets: a gate of 0.9 fades everything stored a little on every token, and a gate of 1 means nothing ever fades. the write strength (beta) to 1,<sup class=\"footnote-ref\"><a href=\"#fn-2\" id=\"fnref-2\" data-footnote-ref>2</a></sup>2 After the gate, the head nudges one direction of the state towards a new value, and the write strength beta sets how far. A beta of 1 means the old value along that direction is replaced completely instead of blended. and using one-hot key encoding,<sup class=\"footnote-ref\"><a href=\"#fn-3\" id=\"fnref-3\" data-footnote-ref>3</a></sup>3 A one-hot key is a vector of zeros with a single 1 in it, so it points at exactly one row of the state, the way a memory address points at one cell. every write we perform will overwrite exactly one row, and every one-hot query can retrieve an exact value. This means that the GDN layers themselves can work exactly as RAM, at a far lower cost than using normal attention as RAM, since a GDN head's state stays the same size however long the conversation gets, unlike attention's KV cache.</p>\n<figure class=\"article-figure\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://divagr.com/qwenputer/gdn-ram.png\" alt=\"Gated DeltaNet state used as RAM: a one-hot key overwrites one row, a one-hot query reads it back, and the CPU keeps its registers, memory and program counter in those rows\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><figcaption>Gated DeltaNet state used as RAM: a one-hot key overwrites one row, a one-hot query reads it back, and the CPU keeps its registers, memory and program counter in those rows</figcaption></figure>\n<p>The idea that the delta rule acts as a memory isn't new: Schlag et al. (2021) showed that linear attention with the delta rule works as an associative memory, or &quot;fast weights&quot;.<sup class=\"footnote-ref\"><a href=\"#fn-4\" id=\"fnref-4\" data-footnote-ref>4</a></sup>4 Imanol Schlag, Kazuki Irie and Jürgen Schmidhuber, &quot;<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2102.11174\">Linear Transformers Are Secretly Fast Weight Programmers</a>&quot;, ICML 2021. The new thing here is making it exact and addressable, inside a production model, reliably enough to run a whole CPU on it.</p>\n<p>This is the base on which this entire model is built. As it stands, default Qwen 3.5 does not keep exact values in the GDN. With this modification, we unlock the next part of this experiment.</p>\n<h2>Compiling a computer into layers</h2>\n<p>Since we have a fully functional, cheap and fast RAM now, we can go ahead with compiling a working CPU into the model weights. Luckily, there's no training involved: a compiler sets every weight directly. You describe the CPU as a circuit, a long list of small steps like &quot;read this register&quot;, &quot;add these two numbers&quot; or &quot;jump if zero&quot;, and the compiler turns each step into a piece of a transformer layer: attention heads that look things up, feed-forward units that do the arithmetic, and DeltaNet heads that hold the RAM. The CPU then runs as the model decodes.</p>\n<p>Each instruction becomes a few generated tokens: one names the memory row to write (ADDR), the next carries the value (VAL), and a STEP token ends the instruction. Those tokens are the CPU's execution trace, so while Qwen is generating them, the CPU is actually running.</p>\n<h2>The CPU</h2>\n<p>The CPU is a 32-bit RISC-V core (RV32IM, plus the Zba extension and a small bignum unit for big-number arithmetic), and it takes up 11 layers in front of Qwen's 32. As it stands, it passes the official riscv-tests, its programs match qemu, and it has run 18 million instructions free-running without a single error.<sup class=\"footnote-ref\"><a href=\"#fn-5\" id=\"fnref-5\" data-footnote-ref>5</a></sup>5 Free-running means the CPU keeps going on its own outputs for the whole run, with no reference machine correcting it between steps.</p>\n<p>This CPU can also run C and MicroPython code in the forward passes quite well (although a bit slowly). It is not a Linux-class chip yet, but it implements the full RV32IM instruction set.</p>\n<h2>How Qwen uses it</h2>\n<p>Qwen 3.5 4B is able to use this CPU quite well, without any post-training required. The CPU is used completely internally, and not invoked through any external tool calls.</p>\n<p>In order to make the model use this reliably, I decided to go the cheap way: by piggybacking on the tool call format that models are quite well-trained on, Qwen sends the CPU its instructions and reads back the results. <strong>No external tool calls or runtime are used.</strong> Once our CPU receives the instructions, the computer layers run, and then write the tool response. We use a small driver called RvChat to load the firmware into the GDN state, and this keeps the trace tokens out of Qwen's layers.</p>\n<p>Qwen's original weights stay exactly as they are. The computer weights are added on top of them, in extra dims and layers.</p>\n<h2>Does it work?</h2>\n<p>I think the main question here on your mind after reading through my incessant ranting will be: does this actually work?</p>\n<figure class=\"article-figure\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://divagr.com/qwenputer/benchmarks.png\" alt=\"Accuracy of base Qwen3.5-4B, Qwenputer and base Qwen with a Python tool on NUPA and DeepMind arithmetic sets\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture><figcaption>Accuracy of base Qwen3.5-4B, Qwenputer and base Qwen with a Python tool on NUPA and DeepMind arithmetic sets</figcaption></figure>\n<p>On the DeepMind sets:</p>\n<ul>\n<li>div_big: Qwenputer scores 97.5%, versus 95% by giving Qwen 3.5 4B a Python tool and 72.5% for base Qwen.</li>\n<li>mul_big: Qwenputer scores 97.5%, versus 100% with a Python tool and 55% for base Qwen.</li>\n<li>mul_div_multiple_longer: Qwenputer scores 100%, versus 97.5% with a Python tool and 90% for base Qwen.</li>\n<li>add_or_sub_big: Qwenputer scores 97.5%, the same as with a Python tool, and 87.5% for base Qwen.</li>\n</ul>\n<p>On NUPA's long-integer arithmetic, Qwenputer goes from 48.6% to 100%, the same as giving Qwen a Python tool.</p>\n<p>The numbers the CPU prints are exact, too: I replayed about 230,000 of its output positions against a reference machine and found zero mismatches. And bolting a computer onto Qwen doesn't change how it talks: its normal text stays within noise of base Qwen (KL 6e-4, against a noise floor of 5e-4).</p>\n<h2>A hard drive? In this economy?</h2>\n<p>Because a CPU inside a language model clearly wasn't cursed enough, I decided the prudent thing would be to give it a filesystem too.</p>\n<p>Since we already have a functional RAM, this was mostly trivial. On the model side, it's exposed via internal put / append / get / list / delete operations. <strong>Once again, no actual tool calls.</strong> When Qwen 'saves' a file, the compiled layers hash its name into one of 1,024 slots in a directory kept in the DeltaNet state, and store the text itself in other heads, with eight tokens per row, chained together. In scenarios where two names end up landing on the same slot, it just checks the next one. Finding a file again takes roughly two or three steps instead of a scan, and it holds up to 512 files, which comes out to about 53,000 tokens of text.</p>\n<p>Fun thing is, this is quite persistent. You can save the state at the end of a conversation, load it into the next one, and the files are still there. Using this filesystem, Qwen gets facts that changed between chats right 90% of the time, against 30% when you paste the old chats back in, and it's on par with giving Qwen memory tools run by Python (83.3% vs 78.9%). This one is still experimental, and its code lives on the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/divagr18/qwenputer/tree/rv-store/experimental/riscv\">rv-store branch</a>, with the model on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/divagr1925/Qwen3.5-4B-Qwenputer-Filesystem\">Hugging Face</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.modelscope.ai/models/Spartan1925/Qwen3.5-4B-Qwenputer-Filesystem\">ModelScope</a>.</p>\n<h2>Limits and what's next</h2>\n<p>Qwenputer is very much an experiment, so a few limitations. The extra layers and wider hidden size make the checkpoint 18.8 GB, roughly double base Qwen, although most of it is zero padding. It also needs a small driver (RvChat) to boot the firmware and keep the trace tokens out of Qwen's layers, so it doesn't run with a plain <code>generate()</code> call yet. And it's a bit slow, with every CPU instruction costing a few decoded tokens, so a big calculation takes seconds rather than milliseconds. The batched executor I used for the benchmarks runs about 3,200 CPU tokens a second on an L4.</p>\n<p>Next up, I want Qwen to write Python and run it on the MicroPython inside its own weights, through a <code>python()</code> tool that works the same way <code>calc</code> does. Making the CPU faster is the other big one.</p>\n<h2>Beyond arithmetic</h2>\n<p>Exact control over the RNN layers is useful for a <strong>lot</strong> more than arithmetic. It also makes Qwenputer a really nice testbed for AI safety research, and I wrote up two follow-ups: how <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://divagr.com/blog/hybrid-models-can-hide-reasoning-in-their-rnn-state\">hybrid models like Qwen 3.5 can learn to hide their reasoning in their RNN state and evade CoT monitoring</a>, and how <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://divagr.com/blog/building-oversight-tools-into-a-models-weights\">compiled weights can work as monitorability tools</a>, like an in-weight monitor the model can't switch off, or answer keys for interpretability.</p>\n<h2>Try it</h2>\n<p>If you want to play with it yourself, the model runs on a single 24 GB GPU. You'll need <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.astral.sh/uv/\">uv</a> and the Hugging Face CLI. You <strong>don't</strong> need a tool server or a Python sandbox for the calculations: the CPU runs them inside the model.</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">git</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> clone https://github.com/divagr18/qwenputer</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-and syntax-shell\">&amp;&amp;</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-support syntax-function syntax-cd syntax-shell\">cd</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> qwenputer/experimental/riscv</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-and syntax-shell\">&amp;&amp;</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">uv</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> sync<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>extra</span> hf</span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">hf</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> download divagr1925/Qwen3.5-4B-Qwenputer<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>local-dir</span> qwenputer-rv</span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">uv</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> run python<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>m</span> chipformer.rv.chat qwenputer-rv<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>firmware</span> tests/data/rv/calc-bridge.elf <span class=\"syntax-punctuation syntax-separator syntax-continuation syntax-line syntax-shell\">\\\n</span><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\">    --</span>ask</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>Use calc: what is 123456789 * 987654321?<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span></span>\n</span></span></code></pre>\n<p>Everything is open: the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/divagr18/qwenputer\">code on GitHub</a>, and both models on Hugging Face (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/divagr1925/Qwen3.5-4B-Qwenputer\">Qwenputer</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/divagr1925/Qwen3.5-4B-Qwenputer-Filesystem\">Filesystem</a>) and ModelScope (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.modelscope.ai/models/Spartan1925/Qwen3.5-4B-Qwenputer\">Qwenputer</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.modelscope.ai/models/Spartan1925/Qwen3.5-4B-Qwenputer-Filesystem\">Filesystem</a>).</p>\n<p>If you use it in your work, you can cite it as:</p>\n<pre><code class=\"language-bibtex\"><span class=\"code-snippet\" data-language=\"Bibtex\"><span class=\"syntax-text syntax-bibtex\"><span class=\"syntax-meta syntax-entry syntax-braces syntax-bibtex\"><span class=\"syntax-keyword syntax-other syntax-entry-type syntax-bibtex\"><span class=\"syntax-punctuation syntax-definition syntax-keyword syntax-bibtex\">@</span>software</span><span class=\"syntax-punctuation syntax-section syntax-entry syntax-begin syntax-bibtex\">{</span><span class=\"syntax-entity syntax-name syntax-type syntax-entry-key syntax-bibtex\">agrawal2026qwenputer</span>,\n  <span class=\"syntax-meta syntax-key-assignment syntax-bibtex\"><span class=\"syntax-string syntax-unquoted syntax-key syntax-bibtex\">author</span>  <span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-bibtex\">=</span> <span class=\"syntax-string syntax-quoted syntax-other syntax-braces syntax-bibtex\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-bibtex\">{</span>Agrawal, Divyansh<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-bibtex\">}</span></span></span>,\n  <span class=\"syntax-meta syntax-key-assignment syntax-bibtex\"><span class=\"syntax-string syntax-unquoted syntax-key syntax-bibtex\">title</span>   <span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-bibtex\">=</span> <span class=\"syntax-string syntax-quoted syntax-other syntax-braces syntax-bibtex\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-bibtex\">{</span><span class=\"syntax-punctuation syntax-definition syntax-group syntax-begin syntax-bibtex\">{</span>Qwenputer<span class=\"syntax-punctuation syntax-definition syntax-group syntax-end syntax-bibtex\">}</span>: a computer compiled into the weights of a pretrained language model<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-bibtex\">}</span></span></span>,\n  <span class=\"syntax-meta syntax-key-assignment syntax-bibtex\"><span class=\"syntax-string syntax-unquoted syntax-key syntax-bibtex\">year</span>    <span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-bibtex\">=</span> <span class=\"syntax-string syntax-quoted syntax-other syntax-braces syntax-bibtex\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-bibtex\">{</span>2026<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-bibtex\">}</span></span></span>,\n  <span class=\"syntax-meta syntax-key-assignment syntax-bibtex\"><span class=\"syntax-string syntax-unquoted syntax-key syntax-bibtex\">url</span>     <span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-bibtex\">=</span> <span class=\"syntax-string syntax-quoted syntax-other syntax-braces syntax-bibtex\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-bibtex\">{</span>https://github.com/divagr18/qwenputer<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-bibtex\">}</span></span>\n</span><span class=\"syntax-punctuation syntax-section syntax-entry syntax-end syntax-bibtex\">}</span></span>\n</span></span></code></pre>\n<section class=\"footnotes\" data-footnotes>\n<ol>\n<li id=\"fn-1\">\n<p>Each Gated DeltaNet head keeps a state matrix, its memory. At every token, before writing anything new, it multiplies the whole state by the gate, a number between 0 and 1. That's how the RNN forgets: a gate of 0.9 fades everything stored a little on every token, and a gate of 1 means nothing ever fades. <a href=\"#fnref-1\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"1\" aria-label=\"Back to reference 1\">↩</a></p>\n</li>\n<li id=\"fn-2\">\n<p>After the gate, the head nudges one direction of the state towards a new value, and the write strength beta sets how far. A beta of 1 means the old value along that direction is replaced completely instead of blended. <a href=\"#fnref-2\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"2\" aria-label=\"Back to reference 2\">↩</a></p>\n</li>\n<li id=\"fn-3\">\n<p>A one-hot key is a vector of zeros with a single 1 in it, so it points at exactly one row of the state, the way a memory address points at one cell. <a href=\"#fnref-3\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"3\" aria-label=\"Back to reference 3\">↩</a></p>\n</li>\n<li id=\"fn-4\">\n<p>Imanol Schlag, Kazuki Irie and Jürgen Schmidhuber, &quot;<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://arxiv.org/abs/2102.11174\">Linear Transformers Are Secretly Fast Weight Programmers</a>&quot;, ICML 2021. <a href=\"#fnref-4\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"4\" aria-label=\"Back to reference 4\">↩</a></p>\n</li>\n<li id=\"fn-5\">\n<p>Free-running means the CPU keeps going on its own outputs for the whole run, with no reference machine correcting it between steps. <a href=\"#fnref-5\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"5\" aria-label=\"Back to reference 5\">↩</a></p>\n</li>\n</ol>\n</section>\n",
      "date_modified": "2026-10-29T00:25:45+00:00",
      "date_published": "2026-10-29T00:25:45+00:00",
      "external_url": "https://divagr.com/blog/qwenputer",
      "id": "urn:aggr:item:2595d972d24b8b54883e23bc93cb13d4cb86561a",
      "image": "https://divagr.com/qwenputer/og.png",
      "summary": "← My writing COMPILED WEIGHTS A stock Qwen 3.5 4B with a RISC-V CPU compiled into its weights, running on its own Gated DeltaNet layers as RAM. I can't believe it's not silicon Qwenputer is a pretty fun experimental model. It's a stock…",
      "tags": [
        "news"
      ],
      "title": "Qwenputer: A functioning, deterministic RISC-V CPU inside Qwen3.5",
      "url": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-10-29-qwenputer-a-functioning-deterministic-risc-v-cpu-inside/"
    }
  ],
  "language": "en",
  "title": "divagr.com",
  "version": "https://jsonfeed.org/version/1.1"
}