
2026/10/31 21:58
Show HN: ブートセクターに居住する言語モデル
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
本プロジェクトでは、OS や C ランタイムの必要性を排除し、512 バイトのマスタ・ブート記録 (MBR) から直接コンピュータを起動可能な軽量なニューラルネットワークを導入します。このシステムは、初期の 386 プロセッサで 16 ビット実モード下で動作し、偽の
dmesg ログ(タイムスタンプ、PCI バー、ACPI イベントを含む)を生成することで、完全に機能しているかの見えるリアルな Linux ブートシーケンスをシミュレートします。モデルは int8 アーキテクチャわずか 11.5 キロバイトを使用し、初期の 23 セクター読み取り後にディスクセクタ割り込み(int 13h)を通じて必要なウェイトを読み込みます。一般的なテキスト生成器とは異なり、本システムは物語ではなくブートログの捏造に特化して訓練されています。Oscar Toledo のブートセクターゲームや「sectorllm」プロジェクトのような歴史的な革新を継承しつつ、ハードウェア初期化シーケンスの模倣に厳格に焦点を当てています。設定には Nasm や QEMU といった特定のツールが必要で、ディスクイメージを含む標準的な USB スティック上に自立的な AI を構築できます。ユーザーは disk.img を USB スティックに書き込むことで、任意の BIOS ベースのマシンで実行できますが、アクティブセッションはモニターソケットによるヘッドレスな QEMU レコーディングを含み、キー入力により再ブートが発生します。コンパイルには Python ツール(NumPy)とシェルスクリプト(build.sh, run.sh)が必要ですが、このプロジェクトはミニマルコンピューティングと高度な人工知能の驚くべき融合を代表し、従来のシステムアーキテクチャの定義に挑戦しています。本文
PC 起動のためのニューラルネットワーク:MBR は AI で記述されています
マスターブートレコード(MBR)は、手書きの 512 バイトアセンブリ言語で記述された特殊なプログラムです。 この領域には通常、OS や C ランタイムが存在しないはずですが、以下の驚異的な挙動を示します。
- モデル読み込み: 後続の 23 セクターから約 11.5KB の int8 形式のモデルを読み込みます。
- 動作環境: 386 プロセッサ上で 16 ビットリアルモードを実行します。
- 「夢見る」ログ出力: 機械は決して存在しなかったハードウェアに対する時刻スタンプ、PCI バース(アドレスマッピング)、ACPI イベントなどの Linux ブートログを生成します。
モデルの特性と出力品質
このモデルには以下の制約があります:
- 文脈長:8 文字
- 構造:隠れ層が 1 つのみ
これらの制限にもかかわらず、以下のような高品質な「ハルシネーション(幻覚)」ログを出力します。
[ 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 [ 0.206596] Command line: BOOT_IMAGE=/vmlinu -5.5.2-1-generic gcc version 13.3.0, GNU ld ... [ 1.815765] ACPI: PCI Interrupt Link [LNKA: v/s.xos212 [ 1.883084] NET: Registered protocol family 16
実行方法
以下の手順で環境を構築し、モデルを実行・録画します。
1. 環境準備
brew install nasm qemu python3 -m venv .venv && .venv/bin/pip install numpy
2. ビルドと実行
./build.sh ./run.sh
3. ディスクイメージの使用法
は通常のブートイメージです。disk.img- USB メモリへの書き込み:
(※BIOS 搭載機器から USB を起動すると動作します)dd if=disk.img of=/dev/usb_device_name bs=512 count=...
注意: このコードは自身のセクターのみを読み取ります。文字列や重み、語彙テーブルなどは**データセクター(次のセクター)**に格納されており、推論処理と BIOS の下処理を合計 510 バイトという極限サイズに収めています。
各部分の詳細実装
プロジェクト構成ファイルごとの役割です。
-
:corpus_gen.py- 3MB 規模の架空の
ログを生成します。dmesg - カーネルバージョンとディスクはブートセッションごとに固定されます。
- 理由: 実際のブートログには反復的なパターンが含まれており、その微細な反復性を学習する小さなモデルこそが「健全」に見えるからです。
- 3MB 規模の架空の
-
:train.py- モデルトレーニング(文字埋め込み、1 層隠れ層、ソフトマックス出力)。
- int8 量子化: すべての値を 2 のべき乗を持つスケール因子を用いて int8 に変換します。
- アセンブリ最適化: ブートセクター全体で
と単一のimul
を用いて前方伝播を実行可能にします。idiv - 検証: Python の出力とブートセクターの出力を文字単位で比較・差分確認し、両者は完全に一致することが確認されています(LCG サンプリャーも同様に正確に実装)。
-
:boot.asm- 全体の実行コードです。
- セクタ
で重みを読み込み、セクタ13h
で表示を行います。10h
/cdq
を用いてソフトクリップ活性化関数を計算します。idiv- タイマーでシードされたノイズを用いた
サンプリングを実行し、キー入力を検知してマシンを再起動させます。argmax
-
:record.py- ウィンドウなし(ヘッドレス)の QEMU からモニターソケットを通じてデモ GIF を記録します。
先行技術と比較
ブートセクタージャンル史
この分野は古く、光栄な歴史を持ちます。Oscar Toledo 氏はチェスゲーム、動く OS、BASIC インタプリタなどを実装しており、512 バイト以内への C コンパイラ埋め込みなどの挑戦も存在します。
類似プロジェクトとの比較
| プロジェクト名 | 概要 | 特徴 |
|---|---|---|
| sectorllm | 約 1.2KB のリアルモードアセンブリ | Karpathy氏の モデルを実行。5 つの層を持つアテンション機構を含む本物の LLaMA2 トランスフォーマーを起動します。 |
| sectorlisp-nn | Lisp インタプリタ上のネットワーク | 起動時に TensorFlow でトレーニングされたネットワークを実行し、UEFI アプリとして LLaMA クラスモデルを直接起動するものもあります。 |
| bootgpt (本記事) | 真逆のアプローチ | エンジン全体が 510 バイトの MBR に収まり、重みや文字列は次のセクターに格納します。 一般的な物語生成者ではなく、起動させるマシンのブートログを「幻覚」させるために訓練された極めて小さな文字レベルのネットワークです。 |