Show HN: Z80-μLM、40KBに収まる「会話型AI」
109日前原文(github.com)
概要
- 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対話型チャットボット、簡潔だが個性ある返答
- 例:
hello→HIare you a robot→YESdo you dream→MAYBE
- 例:
- guess:20 Questionsゲーム、モデルが秘密のお題を持ち、YES/NO/MAYBEで応答
- 例:
is it alive→YESdoes it have a trunk→YESelephant→WIN
- 例:
- 応答は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に興味がある方へ最適