[ 2.283888] pci 0000:01:01.4: [1b36:0a35] ryndrde c4128 6422 Vveine
[ 1.953886] pci 0000:01:1f.2: reg 0x10: [mem 0x7e4515e5-0x2d766c27] usbbore: reg
[ 1.815765] ACPI: PCI Interrupt Link [LNKA: v/s.xos212
PCの電源を入れた直後、画面に次々と流れ出すカーネルログ。1行目にはPCIバスのアドレス、2行目にはメモリレジスタ領域の割り当て、3行目には割り込みコントローラの初期化準備。システムエンジニアなら誰もが、ごく普通のサーバーが周辺機器を認識している光景だと思うだろう。
だが、画面上に現れるハードウェアは現実には存在しない。デバイス名の ryndrde や usbbore はモデルが幻視した架空の綴りであり、マシンにはOSすらロードされていない。このテキスト出力を駆動しているのは、わずか512バイトのアセンブリコードと、11.5KBのニューラルネットワークだけだ。
開発者のkerlenton氏はこのプロジェクトを bootgpt と名付けた。数百億パラメータを競い合い膨大な電力を消費する昨今のAI軍備競争とは対照的に、本作は1985年のプロセッサ環境へと退行することで、「知能の再現に途方もない計算パワーは本当に不可欠なのか」を静かに問いかけている。
起動直後に吹き出すログ、画面を埋め尽くす架空ハードウェア
ビルドされた disk.img をUSBメモリに書き込み、レガシーBIOS対応のPCに挿して起動すると、即座にディスプレイが点灯する。Linuxカーネルのロードも、GRUBメニューの表示もない。点滅するカーソルから、白い文字が勢いよく噴き出してくる。タイムスタンプが刻まれ、ペリフェラルアドレスが流れ、古いシリコンがまるで夢を見ているかのようだ。
この夢をリアルタイムで紡ぎ出しているのは、文脈長わずか8文字の極小モデルだ。8文字といえば英単語1語すら収まりきらない長さだが、モデルはコロン、スペース、16進数アドレスを驚くほど正確に出力し続ける。実ハードウェアのドライバなど存在しない。モデルが学習したのは、起動ログが持つ構造的なリズムそのものだ。
図:bootgpt 在 QEMU 里启动并逐行吐出 Linux 启动日志。来源:kerlenton/bootgpt 仓库
動画はQEMUエミュレータ上での実際の動作風景だ。一見すると無限に続くログだが、その根底は文字単位の統計的確率遷移に基づいている。先頭の数文字が起動ログの規則に合致していれば、続く出力は自然とエンジニアが見慣れた工業的なログの姿を保ち続ける。
OSを全廃:512バイトのアセンブリがチップを掌握する
現代のAIスタックは極めて重層的だ。推論を1回実行するだけでも、Pythonインタープリタ、OSカーネル、GPUドライバが動き、ギガバイト単位のVRAMを消費する。現代のソフトウェア開発ではこの肥大化が不可避とされ、ニューラルネットワークにはOSが不可欠だと信じ込まれている。
bootgpt はそれらの介在物をすべて削ぎ落とした。マスターブートレコード(MBR)の規格上、ブートセクタのサイズは厳密に512バイトであり、末尾の2バイトはブートシグネチャ 0xAA55 に固定されている。開発者は残る510バイトを手書きのx86アセンブリで埋め尽くし、その中に完全な推論ランタイムを構築した。
CPUは16ビット実モードで起動し、アドレス空間は1MBに制限されている。アセンブリコードはBIOSのディスク割り込み INT 13h を呼び出し、ディスクに続く23セクタを一挙に読み込む。その23セクタに収められた11.5KBのモデル重みが、ファイルシステムの介在なしに直接物理メモリへと送り込まれる。
この512バイトのローダーが、モデルのロード、キーボード入力の監視、画面へのテキスト描画までを完結させている。ドライバの衝突も、プロセススケジューリングもない。電源投入直後の電子がそのまま推論ループへと流れ込む。抽象レイヤーを重ねることで汎用性を得てきたソフトウェア工学の前提を、手書きアセンブリが鮮やかに解体してみせる。
浮動小数点数を追放:行列積を加算とビットシフトに帰着
ディープラーニングの計算は本来、浮動小数点演算に強く依存している。しかし初期のIntel 80386プロセッサは数値演算コプロセッサを内蔵しておらず、浮動小数点演算には高価な拡張チップが必要だった。40年前のチップでネットワークを動かすには、浮動小数点を完全に捨て去るほかない。
そこで開発者は、すべての重みと活性化関数を int8 整数型に量子化した。スケーリング係数は2の冪乗に設計され、乗算や除算は低レベルのバイナリビットシフトへと単純化された。巨大な行列積演算は、プリミティブな imul 整数乗算とシフト命令へと還元されたのだ。
順伝播の処理全体の中で、除算が発生するのはSoftmax関数の正規化処理の1回きりである。アセンブリは idiv 命令を一度だけ実行し、文字の確率分布を算出する。サンプリング処理には手書きの線形合同法(LCG)を採用し、単純な乗加算の反復だけで擬似乱数を生成している。
何層ものTransformerブロックは存在せず、あるのは1層の文字埋め込みと1層の隠れ層のみ。計算量を数百クロックサイクルにまで圧縮したことで、前世紀の動作クロックであっても滑らかなテキスト出力を実現した。知能の数理モデルが、極めて素朴な算術の組み合わせへと回帰している。
合成コーパスで目を欺く:小モデルに叩き込んだ起動の「型」
軽量なアーキテクチャを用意しただけでは、人間を納得させるテキストは生成できない。記憶容量がわずか8文字のモデルでは、長期的な文脈を追うことができず、文字化けや無限ループに陥りやすい。そこで開発チームは専用の生成スクリプト corpus_gen.py を用意し、3MBの合成起動ログを生成した。
実際のシステムの起動ログには、同一パターンが頻繁に現れる。1回の起動セッションにおいて、カーネルバージョンは常に一定であり、マウントされるディスクのシリアル番号も変わらない。コーパス生成器はセッションごとの定数を固定化することで、文字間の遷移確率に強い周期性を持たせた。
小型モデルはこの反復パターンを的確に学習した。PCIバスのハードウェア仕様を理解する必要はない。コロンの後には高確率でスペースが続き、改行の前には括弧が配置されるという統計的直感さえ掴めばよいのだ。用途を起動ログだけに絞り込む割り切りが、パラメータ規模を遥かに超えるリアリティを生み出した。
図:bootgpt 项目代码仓库。来源:GitHub
リポジトリ内の訓練スクリプト train.py には、厳密な整数シミュレータが組み込まれている。Pythonによる学習環境は、アセンブリ側のビットシフト誤差やLCGサンプリングの挙動を完全に再現し、バイト単位での出力一致を検証できるよう設計されている。ソースコードの段階で、実機動作の再現性が担保されている。
計算資源の積み上げだけが解ではない:386へ回帰するAIの美学
512バイトのブートセクタに極限のプログラムを詰め込む行為は、ハッカーの伝統として古くから受け継がれてきた。何十年も前から、ブートセクタにチェスエンジンを組み込む試みが行われ、極小OSやマイクロコンパイラが作られてきた。近年では、1.2KBのアセンブリに自己注意機構を組み込んだ sectorllm も登場している。
bootgpt は、計算のフロンティアを探るこうしたエンジニアリングの系譜に連なる。汎用的な推論能力を追うのではなく、特化されたタスクを物理的な極限まで圧縮する。計算資源が40年前のシングルコアマイクロプロセッサの水準にまで削ぎ落とされても、モデルはディスプレイ上で期待通りの振る舞いを完遂する。
産業界はあらゆるボトルネックを資本と電力の力技で突破することに慣れてしまった。計算リソースの投入が能力の天井を引き上げたのは事実だが、同時にエンジニアから「リソース制約下での優雅な解法」を忘れさせつつもある。課題の輪郭を明晰に定義し、厳しい制約でアルゴリズムを彫り込めば、たとえ512バイトであっても知能の幻影を立ち上げるには十分なのだ。
参考链接:
- kerlenton/bootgpt 仓库源码
- Hacker News 讨论