kerlentonは、PCのブートセクターから起動して動く小型ニューラル言語モデル「bootgpt」をGitHubのkerlenton/bootgptで公開しました。512バイトのMBRが後続23セクターから11.5 KBのint8モデルを読み込み、386上の16ビットreal modeで推論します。
何が新しいか
bootgptはOSもCランタイムも使わずに動作します。MBRには手書きアセンブリのコードだけを置き、文字列・重み・語彙表はすべて後続のデータセクターに格納します。作者は、推論とBIOS処理を510バイトに収めるにはこの構成しかなかったと説明しています。
モデルは汎用のストーリーテラーではなく、起動したマシンのLinuxブートログを「幻覚」することだけに特化した文字単位のネットワークです。タイムスタンプ、PCI BAR、ACPIイベントなど、存在しないハードウェアのログを生成します。キーを押すとマシンが再起動します。
原文は近い先行例としてsectorllmを挙げています。sectorllmは約1.2 KBのreal modeアセンブリから5層・attention付きのllama2 transformer(Karpathyのstories260Kモデル)を起動します。bootgptは逆の極端として、エンジン全体を510バイトのMBR自体に収めています。
仕様と構成
| 項目 | 内容 |
|---|---|
| MBR | 512バイト(コード部510バイト) |
| モデルサイズ | 11.5 KB(後続23セクター) |
| 実行モード | 16ビット real mode、386 |
| モデル構造 | 文字埋め込み・1隠れ層・softmax |
| コンテキスト長 | 8文字 |
| 量子化 | int8、power-of-two scales |
| 学習コーパス | 偽dmesg 3 MB |
corpus_gen.py:3 MBの偽dmesgを生成します。1ブートセッションにつきカーネルバージョンとディスクを1つに固定しており、実際のブートログの反復が小さなモデルをまともに見せると説明しています。train.py:モデルを学習し、すべてをpower-of-two scalesのint8に量子化します。これによりブートセクターはimulと1回のidivで順伝播全体を処理できます。asmが実行する整数演算をLCGサンプラーも含めてシミュレーションし、Python出力とブートセクター出力は文字単位で一致するとしています。boot.asm:ランタイム全体です。int 13hで重みを読み込み、int 10hで表示し、softclip活性化をcdq/idivで実装し、タイマー由来のノイズでargmaxサンプリングします。record.py:ヘッドレスQEMUからモニターソケット経由でデモgifを記録します。
試し方・要件
nasm、qemu、Python 3が必要です。
brew install nasm
python3 -m venv .venv && .venv/bin/pip install numpy
./build.sh
./run.sh
生成されるdisk.imgは通常のブートイメージで、USBメモリへddすればBIOS搭載PCから起動できます。読み込むのは自身のセクターだけです。ライセンスはMITです。
反応
Hacker NewsのShow HN投稿は81ポイント・3コメント、GitHubリポジトリはスター30、コミット3です。

まだコメントはありません。