---
title: Qwen3.5-4B-Qwenputer
canonical_url: "https://www.modelscope.ai/models/Spartan1925/Qwen3.5-4B-Qwenputer"
md_url: "https://www.modelscope.ai/models/Spartan1925/Qwen3.5-4B-Qwenputer.md"
repository: Spartan1925/Qwen3.5-4B-Qwenputer
last_updated: 2026-10-23
license: apache-2.0
pipeline_tag: text-generation
tasks:
  - text-generation
model_type:
  - qwen3_5_text
architectures:
  - Qwen3_5ForCausalLM
base_model:
  - Qwen/Qwen3.5-4B
base_model_relation: merge
parameters: 9.4B
tensor_type:
  - BF16
  - F32
library_name:
  - safetensors
  - pytorch
frameworks:
  - pytorch
downloads: 13
stars: 0
tags:
  - qwen3.5
  - risc-v
  - rv32im
  - arithmetic
  - compiled-weights
  - gated-deltanet
  - qwenputer
---

# Qwen3.5-4B-Qwenputer

> Qwen3.5-4B-Qwenputer - An open-source model by Spartan1925 on ModelScope. Code on GitHub · Filesystem model · Base model: Qwen/Qwen3.5-4B · Apache-2.0

Spartan1925/Qwen3.5-4B-Qwenputer is a 9.4B-parameter text-generation model on ModelScope. licensed under apache-2.0. derived from Qwen/Qwen3.5-4B.

- **Repository**: Spartan1925/Qwen3.5-4B-Qwenputer
- **License**: apache-2.0
- **Tasks**: text-generation
- **Parameters**: 9.4B
- **Base model**: Qwen/Qwen3.5-4B
- **Tags**: qwen3.5, risc-v, rv32im, arithmetic, compiled-weights, gated-deltanet, qwenputer
- **Downloads**: 13
- **Stars**: 0
- **Last updated**: 2026-10-23

Source: https://www.modelscope.ai/models/Spartan1925/Qwen3.5-4B-Qwenputer

---

<p align="center">
  <img src="qwenputer-banner.svg" alt="Qwenputer: a computer, compiled into the weights of a language model." width="100%">
</p>

[Code on GitHub](https://github.com/divagr18/qwenputer) · [Filesystem model](https://huggingface.co/divagr1925/Qwen3.5-4B-Qwenputer-Filesystem) · [Base model: Qwen/Qwen3.5-4B](https://huggingface.co/Qwen/Qwen3.5-4B) · Apache-2.0

**Qwenputer is a new kind of experimental model: Qwen3.5-4B with a 32-bit RISC-V CPU compiled and
inserted directly into its weights.** It isn't a plugin, a tool or a sandbox. The CPU is 11
transformer layers in front of Qwen's own, and none of their weights are learned: a compiler
computes every one.

It uses the model's own Gated DeltaNet state as RAM. Qwen3.5's DeltaNet layers carry a running
state that the delta rule can overwrite one row at a time, exactly, so each row works as a memory
cell. The CPU keeps its code, data, registers and program counter there.

The CPU runs C and MicroPython code inside the model's forward passes, and passes the official
riscv-tests suites.

<p align="center"><img src="benchmarks-rv.png" alt="Qwenputer vs base Qwen3.5-4B and base with a Python tool on NUPA and DeepMind arithmetic sets." width="100%"></p>

## Benchmarks

Greedy decoding, 40 problems per set. Each row compares base Qwen3.5-4B and Qwenputer on the same
problems. Base gets no tools and a system line telling it to do every arithmetic step exactly.
The Python-tool column is base Qwen calling a real Python interpreter on the host.

| Benchmark | Base Qwen3.5-4B | **Qwenputer** | Python tool (host) |
|---|---|---|---|
| Synthetic integer arithmetic | 75.0 | **97.5** | 97.5 |
| DeepMind `mul_big` | 55.0 | **97.5** | 100 |
| DeepMind `div_big` | 72.5 | **97.5** | 95.0 |
| DeepMind `mul_div_multiple_longer` | 90.0 | **100.0** | 97.5 |
| DeepMind `add_or_sub_big` | 87.5 | **97.5** | 97.5 |

We replayed about 230,000 of the computer's output positions through a reference model of the
machine and found zero mismatches. Qwen's text behaviour matches
base: KL 6e-4, against a noise floor of 5e-4.

## Quickstart

```bash
git clone https://github.com/divagr18/qwenputer && cd qwenputer/experimental/riscv && uv sync --extra hf
hf download divagr1925/Qwen3.5-4B-Qwenputer --local-dir qwenputer-rv
uv run python -m chipformer.rv.chat qwenputer-rv --firmware tests/data/rv/calc-bridge.elf \
    --ask "Use calc: what is 123456789 * 987654321?"
```

Qwen uses the CPU entirely internally; it is not invoked through an external tool call. Instead,
it piggybacks on the tool-call format Qwen3.5 was trained on: Qwen writes a `<tool_call>` block for
`calc` exactly as it would for any tool, but nothing outside the model ever runs it. The computer
layers read the call, run it on the RISC-V CPU, and the model itself writes the `<tool_response>`,
digit by digit. No runtime, sandbox or tool executor is involved.

The model loads as a stock `Qwen3_5ForCausalLM`. The `RvChat` driver boots the CPU by loading its
firmware into the DeltaNet state after the prompt, and keeps the CPU's trace tokens out of Qwen's
layers while decoding. Every token still comes from the weights. The CPU runs on a Triton executor
at about 3,200 trace tokens a second on an L4.

## Gated DeltaNet as RAM

<p align="center"><img src="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's registers, memory and program counter live in DeltaNet heads." width="100%"></p>

## Model details

| | |
|---|---|
| Base | Qwen/Qwen3.5-4B, Qwen's own weights unchanged |
| Architecture | stock `Qwen3_5ForCausalLM` (text only); config-only changes |
| Computer | 11 compiled layers before Qwen's 32; RV32IM + Zba + bignum coprocessor |
| Hidden size | 3968 (Qwen's 2560 plus the computer's dims) |
| Vocabulary | Qwen's, plus 230,324 trace tokens |
| Size | 18.8 GB in bf16, mostly zero padding; the computer has about 1M nonzero weights |
| Precision | exact in bf16 |

## Citation

```bibtex
@software{agrawal2026qwenputer,
  author  = {Agrawal, Divyansh},
  title   = {{Qwenputer}: a computer compiled into the weights of a language model},
  year    = {2026},
  version = {0.2.0},
  url     = {https://github.com/divagr18/qwenputer},
  license = {MIT}
}
```

## License

Apache-2.0. This is a modified version of
[Qwen/Qwen3.5-4B](https://huggingface.co/Qwen/Qwen3.5-4B): the config is widened and computer layers
are added, but Qwen's own weights are unchanged.
