divagr18/qwenputer

実験的モデル:32 ビット RISC-V CPU を 11 層の Transformer にコンパイルし、Qwen3.5-4B 自身の層の前に配置する。Qwen の Gated DeltaNet 状態をメモリとして利用し、モデルがフォワード計算内で C および MicroPython プログラムを実際に実行することで、大きな数の乗算や除算などの算術演算をビット単位で正確に出力する。

実験的モデル:32 ビット RISC-V CPU を 11 層の Transformer にコンパイルし、Qwen3.5-4B 自身の層の前に配置する。Qwen の Gated DeltaNet 状態をメモリとして利用し、モデルがフォワード計算内で C および MicroPython プログラムを実際に実行することで、大きな数の乗算や除算などの算術演算をビット単位で正確に出力する。

スター数 309(+80 / 24h)

理由

  • CPU 層の重みは学習されたものではなく、コンパイラによって直接計算される。Qwen は通常通り calc のツール呼び出しを生成するが、外部の実行環境は存在しない。モデル内部の計算層が呼び出しを読み取り、CPU 上で計算を実行し、その結果をモデル自身がビット単位で書き出す。著者によれば、公式の riscv-tests を通過し、約 23 万の出力位置での再放演において誤差はゼロ、テキスト挙動における元モデルとの KL ダイバージェンスは 6e-4 である。
  • 著者が提示した比較(貪欲デコード、各グループ 40 問):合成整数算術において、ベースモデルの 75.0 から 97.5 へ向上し、DeepMind の mul_big においても 55.0 から 97.5 へ向上、ベースモデルがホストの Python インタープリターを呼び出した場合の成績と同等となった。
  • 別の実験ブランチ:内積命令を追加した NPU 版では、モデル内でパラメータ数 26 万の stories260K 小規模モデルを実行可能。ファイルシステム版では DeltaNet 状態内に最大 512 個のファイルを保存でき、著者によればセッションをまたいだ記憶課題の正答率が 7.8 から 83.3 へ向上した。初期の CHIP-8 版も依然としてダウンロード可能である。

使い方

  • git clone 後、experimental/riscv ディレクトリへ移動し、uv sync --extra hf を実行、hf download divagr1925/Qwen3.5-4B-Qwenputer で重みをダウンロードする。その後、uv run python -m chipformer.rv.chat qwenputer-rv --firmware tests/data/rv/calc-bridge.elf --ask "…" を用いて質問を行う。
  • モデルは標準的な Qwen3_5ForCausalLM として読み込まれる。サンプルコードは CUDA 上で実行され、行列積の精度を保証するために bf16 の低精度リダクションは無効化されている。設計およびすべての測定結果は experimental/riscv/docs/rv32.md に記載されている。

リスク

  • 著者は、この手法があらゆる場面で有用であるわけではないと述べている。GSM8K のような応用問題では互角だが、長い式チェーンではベースモデルが依然として優位であり、モデルはすでに出力した結果をトークン予算を使い切るまで繰り返し検証する傾向がある。CHIP-8 版の表には、開発チェックポイントにおける各ベンチマークの最高成績が記載されている。
  • サンプルは NVIDIA GPU 上で動作し、著者が示した速度は L4 上で約 3,200 トラジェクトリトークン/秒、NPU 版ではストーリーのトークン生成に約 41 秒かかる。コードは MIT ライセンス、重みは Qwen3.5-4B の修正版として Apache-2.0 ライセンスに従う。リポジトリは 10 月 19 日に作成された。

開く

GitHub

最新の AI ニュースを見る