ハクソク

世界を動かす技術を、日本語で。

Show HN: Z80-μLM、40KBに収まる「会話型AI」

概要

  • Z80-μLMは、Z80プロセッサ上で動作する極小の会話型AI
  • 2ビット量子化済み重みと16ビット整数演算による省メモリ設計
  • 40KBのCOMファイル内に推論・重み・UIを全て収録
  • トレーニングやカスタマイズが容易で、自己ホストも可能
  • 短い応答と個性を両立し、レトロPCでも動作

Z80-μLMとは何か

  • Z80-μLMは、Z80(1976年発表の8ビットCPU、4MHz、64KB RAM)上で動作するキャラクタ単位の言語モデル
  • 推論・重み・チャットUIすべてを40KBのCOMファイルに収め、CP/Mエミュレータや実機で実行可能
  • **量子化対応トレーニング(QAT)**で、Z80の制約下でも“個性”ある応答を実現
  • 自己ホスト配布・再学習が簡単で、誰でも独自モデルを作成可能

主な機能と設計

  • トライグラムハッシュ符号化:入力テキストを128バケットにハッシュ化、タイプミスや語順変更に耐性
  • 2ビット重み量子化:各重みは{-2, -1, 0, +1}、1バイトに4つ格納
  • 16ビット整数演算:Z80の16ビットレジスタを活用、浮動小数点演算は不使用
  • 自己回帰生成1文字ずつ出力、短くも意味ある応答
  • インタラクティブチャットモードCHATコマンドで即起動
  • トレーニングデータ生成ツール:OllamaやClaude APIと連携、クラスバランス調整も可能

収録例と応答スタイル

  • tinychat:カジュアルなQ&A対話型チャットボット、簡潔だが個性ある返答
    • 例:
      • helloHI
      • are you a robotYES
      • do you dreamMAYBE
  • guess:20 Questionsゲーム、モデルが秘密のお題を持ち、YES/NO/MAYBEで応答
    • 例:
      • is it aliveYES
      • does it have a trunkYES
      • elephantWIN
  • 応答は1~2単語で、**文脈や質問の意図を読み取る“風”**のやりとりを実現

技術的特徴

  • 入力:128クエリバケット+128コンテキストバケット
  • 隠れ層:構成自由(例:256→192→128)
  • 出力:文字セットごとに1ニューロン
  • 活性化関数:隠れ層間はReLU
  • 量子化制約:2ビット重み、16ビット累算器による数値安定性
    • オーバーフロー対策:各層後に算術右シフトで調整
  • Z80アセンブリによる高速推論ループ:重みのアンパック、積和演算、シフト処理の繰り返し

得意・不得意なこと

  • 得意
    • 短文入力への一貫した分類応答
    • あいまい一致(タイプミス・語順変更・言い換え対応)
    • 語彙選択による個性表現
    • 8ビット制約下での動作
  • 不得意
    • 新規文生成(決まったパターン中心)
    • 複数ターンの文脈追跡
    • 文法理解や一般知能
    • 長文や複雑な指示の区別

設計思想とトレーニングの工夫

  • 極端な制約(2ビット量子化、16ビット整数演算)に特化した設計
  • トライグラムハッシュにより語順やタイプミスに柔軟対応、ただし長文や複雑な指示は識別困難
  • 量子化対応トレーニング:浮動小数点と量子化済み推論を並列で評価し、2ビットグリッドへ重みを誘導
    • オーバーフロー罰則も導入し、Z80実装に忠実な学習
  • API活用によるデータ生成:Claude API等で20 Questions用データを生成

ライセンス

  • MITまたはApache-2.0、選択自由

まとめ

  • Z80-μLMは、極小・個性重視・レトロPC対応の会話AI
  • トレーニングやカスタマイズが容易で、自己ホスト配布もOK
  • 制約下での工夫が満載、短い応答に込められたユーモアや個性を楽しめる
  • レトロコンピューティング組込AIに興味がある方へ最適

Hackerたちの意見

すごい!自分でZ80コンピュータを設計して作ったんだけど、今は32KBのROMと32KBのRAMしかないんだ。次の改良で絶対に変わるから、試してみるつもりだよ。
今、RAMはめっちゃ高いよね。
実際の秘密(例えば、パスフレーズ)をそのモデルに訓練させて、ユーザーが正しい質問をして推測する必要があるとしたら、その秘密はモデルの重みを持っているだけで簡単に逆算できるのかな?それとも、正しい質問をしないと秘密にはたどり着けないって考えても大丈夫?
よくわからないけど、君の質問はこの論文を思い出させるな。低いレベルでそれに対処してるみたいだよ。https://arxiv.org/abs/2204.06974 「機械学習モデルに検出不可能なバックドアを植え付ける」 「… 表面的には、そのバックドア付きの分類器は普通に動作するが、実際には、学習者はわずかな摂動で任意の入力の分類を変更するメカニズムを維持している。重要なのは、適切な「バックドアキー」がない限り、そのメカニズムは隠されていて、計算能力に制限のある観察者には検出できない。検出不可能なバックドアを植え付けるための二つのフレームワークを示し、比較できない保証を持っている。…」
> この秘密はモデルの重みにアクセスすることで簡単に逆算できるのか? こんな小さなネットワークならできるかもね。一般的には「解釈可能性」に関わる話だね。
これ以上のタイミングはないね… Unreal Engineのゲームを作ってて、VT100端末(コーディングエージェント用)とZ80エミュレーターがあって、コーディングエージェントがCP/Mマシンをプログラムできるシリアルブリッジもあるんだ。https://i.imgur.com/6TRe1NE.png 投稿してくれてありがとう!時々、誰かが自分のやってることにぴったり合うものをポンと落としてくれるのが信じられないよ。どんなに奇妙に見えてもね。
あら、なんか…サイキックでつながってしまったみたいだね… ブラウザベースのCP/MエミュレーターとIDEを開発したんだ。https://lockboot.github.io/desktop/ それを投稿しようと思ったけど、代わりに「クールなデモ」を探してて、気がついたら迷い込んじゃった。
ジェームズ・バークの「Connections: Alternative History of Technology」では、こういった「偶然」を記録してるよ。
超興味あるけど、ここではimgurが見れなくてイライラする。
AI企業がZ80を全部買い占めて、価格を新たな高みへ引き上げる前に。
もう遅いよ、去年にはもう手に入らなくなった。
幸運なことに、MSXコンピュータやZX、Amstrad CPCなどをたくさん持ってるし、実際のパワーのためにマルチプロセッサのZ80 CP/Mマシンもあるんだ。ただ、バンクスイッチングでどれだけパフォーマンスが出るかはちょっと不安だな。多分、あんまり良くないかも。
いいね!昔のフリー入力RPGにファジーマッチャーがあったらよかったのに。あれはキーワードの完全一致で動いてたから、ちょっと使いづらかった。最後にそんなゲーム(NPCと話すときに自由にテキストを入力できるやつ)は、たぶんWizardry 8(2001年)だったと思う。
ここで起きてるのは二つのことだね。小さなLLMメカニズムがあって、これが大きなものの動作を考えるのに役立つのと、よく知られた現象への言及がある。これは人間が信じたがるもので、会話相手が言うことをしっかり考慮しようとするんだ。言語は文化的な共同構築物だから。この視点から見ると、実際の質問は「なぜ人間が特定の方法で発話を理解するのか」ってことだね。ElizaやParry、Chomsky bot(http://chomskybot.com)はこの原則で動いてるよ。ちょっと言ってみただけ。
最高だね、即座にGitHubスターをつけたよ。60年代のパンチカードマシン用にFortran IVでMLPを書いたことがあるから、これにはすごく共感する。注意機構がないのに、意外とインタラクションが良いし、「コンテキスト」が前の文のトライグラムに制限されてるのに驚いた。これ、60年代のハードウェアでも動いたかもしれないし、当時の世界(とSF)を完全に変えてたかも。素晴らしい仕事だね。
こういうのは本当に面白いね。まさに選ばれなかった道だ。陰謀論っぽく言うと、AI企業からのRAMの大規模買収の大部分は、人々が実質的にLLMの家庭用コンピュータ革命の段階にいることに気づかないようにするためだと思う。1TBのRAMマシンを持ってて、カスタムエージェントを使うと、すべてのプロプライエタリモデルを上回るパフォーマンスを出してる。プライベートで安全だし、マネタイズされることもないんだ。
すごくクールだね。スパースウェイトを使うこと考えた?
エリザっぽい!ハハ、面白いね。