
2026/08/14 9:47
Show HN:Colibri を使って P2P スワーム上で Moe モデルを実行できる Lumabri
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
本文の核心は、Colibri という革命的な純粋な C 言語エンジンのご紹介であり、このエンジンにより、高価なインフラや信頼できる中央サーバーなしに標準ハードウェア上で大規模なミクスチャー・オブ・エキスパート (MoE) モデルを実行できるようになり、アクセスが民主化されています。このアーキテクチャでは、1 台のマシンがトレーサーを通じてモデルをホストし、他のすべてのマシンは
lumabri ツールを使用してピアのスワームとしてクライアントとして参加し、推論中に触られた特定のバイトのみを最初に使用時にローカルミラーにダウンロードします。これにより、異なるハードウェア(CPU または GPU)間で出力がバイトごとの同一性が保たれ、エンジンバイナリを変更することなく実現されます。不信されたピアに対する整合性を確保するため、検証済みの各 MiB は SHA256 で署名されたコンテンツアドレス可能なストアに格納され、ピアからのデータが不一致の場合は自動的に拒否され、他のピアから再取得されます。システムはネットワーク障害を適切に処理します:最初の推論は初期転送のために遅くなる場合がありますが、中央ホストがオフラインになってもローカルキャッシュから次の質問に応答されるため、後続の問い合わせは瞬時に提供されます。ユーザーはチャットツール内の単純なターミナルコマンドを使ってモデルを管理し、匿名ピアネットワークを表示でき、必要であれば make fixture によって合成テストモデルを構築できます。結局、この分散型アプローチにより、企業は多様な艦隊全体にわたって一貫した AI 機能を展開することができると同時に、個々のユーザーも永続的な API 依存や高価なハードウェア要件なしに大規模なモデルを安全に利用できるようになります。本文
Colibri エンジンによる分散型 Mixture-of-Experts モデル推論:Lumabri
純粋な C ランクで動作し、外部依存関係なし。一台のマシンがモデルを共有し、他のマシンはチャットを行うピアツーピア構造です。事前ダウンロード不要で、初回利用時に必要なデータのみがローカルにミラーされ、以降は全速度でサーブされます。
特徴とアーキテクチャ
コアコンセプト
- 純粋な C ランク: 外部ライブラリ依存なし。
- ゼロ事前ダウンロード: 推論時に必要なバイトのみを初回で取得し、ローカルに保持する。
- ハードウェア中立性: CPU と GPU の両方で動作可能。GPU は単なる加速機能であり、出力の同一性を保証します。
- Colibri エンジン: バイナリ自体は変更されず、推論時の挙動が保証されます。
ネットワーク構成
- CPU/SSD 第一優先: デザインの中心は CPU と SSD です。
- 分散計算: GPU をプールするネットワークとは異なり、Lumabri はすべてのデバイスから集約します。
- 同一出力保証: バイト単位で厳密に同一のトークンが生成されます。
クイックスタート
サーバー側(モデル保有マシン)
任意の
colibri モデルディレクトリ上ですべてのデータをホストします。
./lumabri serve --model /path/to/model
クライアント側(チャットマシン)
エンジンには
colibri ビルドが必要です。
./lumabri chat --tracker <server-ip>:7300 --engines-dir /path/to/colibri/c
- 初回利用: 作業セットのネットワーク転送のため少し遅延します。
- ミラー動作:
に保存されたミラーにより、サーバーがオフラインになっても動作を継続します。~/.lumabri
テスト用モデル作成
本番モデルがない場合、以下のコマンドで小さな人工的なモデルを作成可能です。
make fixture
ターミナル UI での利用
引数なしで起動すると、swarm アドレスとオペレータ公開鍵の入力を求められます。
- 2 回目以降: 「Enter」「Enter」で完了します。
- オプション優先: フラグを指定すれば、スクリプトは他者の保存データを引き継ぎません。
便利なコマンド
チャット中の管理コマンド:
: ネットワークのライブビューを表示(ピアは番号のみ)。/swarm
: 登録モデルの一覧表示と即時切り替え。/model
仕組みの詳細
バイト共有と読み込み
serve コマンドは以下の 2 つのプログラムを起動します:
- トラッカー: ファイルの保管先をインデックス化します。
- メンテナンスャー: モデルディレクトリのバイト範囲読み出し(byte-range reads)に対応します。
読み込みプロセス (
コマンド):chat
ライブラリを通じてモデルを読み込みます(LD_PRELOAD シム)。liblumabri.so- エンジンの
呼び出し(libc
,open
など)をインターポーシブに処理します。pread - ファイルはスパーセローカルミラーとして出現し、
やページキャッシュがネイティブに機能します。fstat - 不足ブロックはピアからフェッチされ、SHA256 ハッシュ付きで CAS(コンテンツアドレス化ストア)に格納されます。
- 検証済み: 同じチャンクは一度だけダウンロードされ、異なるミラーで再構築可能です。
Colibri の継承ルール
- ネットワークはデータ源を切り替えられますが、どのバイトかを変更できません。
- モデルファイルの書き込み(
エラー)や、サーブ不可ブロックへのアクセス(無音なゼロではなく「大声な EIO」エラー)を防ぎます。EROFS - バイト同一性は、起動時・ウォーム起動時・ピア停止時も検証され続けます。
ピア上のエキスパート実行 (MoE)
チャット側は以下のみを保持し、残りの計算をピアにオフロードします:
-
密度の高い重み(dense weights)
-
ルーター
-
KV キャッシュのみ
-
4KB の活性化データだけを適切なピアに送付します。
-
エクスポートの重み自体はチャット側に到達しません。
-
双方は同じコードパスを使用するため、生成されるトークンが完全に同一になります。
-
ピアは正確なビルド情報を広告し、ビルド不一致のピアは接続拒絶されます。
セキュリティとピア検証 ("ピアは信用していない")
- 完全検証: すべてのメンテナンスャーはデータの各 MiB について SHA256 を計算・署名(Ed25519)します。
- 嘘偽りの拒絶: 嘘をつくピアからのデータは拒絶され、他から再フェッチされます。
- リモート検証 (
): N% のエキスポートコールを第 2 リプライカで再実行し、同一出力を検証します。不一致はエラーとなり動作停止します。LUMABRI_VERIFY=N - ヘッジ戦略 (
): 最寄りのリプライカが N ミリ秒以内に回答しなかった場合、次のリプライカに複製を送信し、最初の有効な決定論的結果を使用します。LUMABRI_HEDGE_MS=N
エンジンとバグ検出
Colibri は複数のエンジンに対応し、互換性を維持しながら拡張可能です。
| エンジン | モデル | 証明済みテスト |
|---|---|---|
| olmoe | OLMoE | (phase2_test.sh) |
| colibri | GLM | (phase2_glm_test.sh) |
| inkling | Inkling | (phase2_inkling_test.sh) |
| kimi_k3 | Kimi K3 | (phase2_kimi_test.sh) |
| deepseek | DeepSeek V4 | (phase2_deepseek_test.sh) |
- 証明された (Proven): 実験結果に基づくバグ検出。例:GLM は浮動小数点数のドリフト問題があり、ピア間通信でトークンがずれることが発見されました。
- ビルド:
(エンジン),make engines
(チャット),make chatters
(両方)。make phase2-all
サーバーの導入と管理
簡易セットアップ
make && make phase2-all ENGINE=/path/to/colibri/c sudo make install # または PREFIX=$HOME/.local
サーバー起動 (
lumabri serve) で TCP ポート 7300~7302 が開放されます。
: 高速な直接パスのために推奨。--advertise <public-ip>
: モデル署名用鍵。--key swarm.key
役割とコマンド
各マシンで以下のいずれかの役割を選択します:
| 目的 | コマンド例 |
|---|---|
| チャット (クライアント) | |
| モデル保持 (サーバー) | |
| ディスク提供 (バイトドナー) | |
| 計算提供 (エキスポートドナー) | |
- フェイルオーバー: ドナー停止時もトークンは続行され、内容を保証します。
- 互換性: 役割を宣言するだけで、他者と存在を知っている必要はありません。
キー管理とローテーション
- キーリング:
または環境変数で最大 16 個の鍵を受け入れます。--pubkey keyring - ローテーション手順:
- 旧鍵+新鍵の両方を実装。
- クライアントとドナーが移行後、古い行を削除。
- 最新の鍵を最後に配置(トラッカーは優先順位の高いキーのみを検証するため)。
- 署名: オブジェクトごとの署名ですが、ワイヤ形式の変更はありません。
暗号化通信とピアアイデンティティ
LUMABRI_ENCRYPT=1 を設定すると、X25519/Ed25519 ハンドシェイクと ChaCha20-Poly1305 による認証付き暗号化が有効になります。
- フェイルクロージング: 鍵を管理・作成できない場合は通信を即座に失敗させます。
- ピアアイデンティティ:
に保持し、変更された場合は接続拒絶します。~/.lumabri/peer.key - MITM 防止:
- サーバー起動前にオペータ公開鍵を配布(ファイル形式)。
でピンファイルを指定。LUMABRI_PEER_PINS
で厳格な検証モードへ。LUMABRI_REQUIRE_PIN=1
- モデル署名キー ≠ ピアピン: モデル認証とネットワークエンドポイント認証は別個です。
性能特性
- 最寄りのリプライカ優先: コピーが近いほど高速です(2ms キープでも 30ms のものよりも速い)。
- 速度向上例: 1.4 トークン/秒 → 10.5 トークン/秒 に向上します。
テストと検証
以下のスイートを実行してシステムを確認します:
- コアスイート: バイト同一性、ドナー完全性、セキュリティ(パスエスケープなど)。
- エンジン固有:
(DeepSeek V4 などはmake test-engines
を指定)。MODEL=<dir> - 独自スクリプト:
: 割り当てテスト。assign_test.sh
: 並列性テスト。concurrency_test.sh
: 署名テスト。sign_test.sh
- 新機能検証:
,make test-cas
,test-key-rotation
,test-hedge
。test-relay-exec
比較と要件
他のソリューションとの違い
| 特徴 | Petals / llama.cpp RPC | Lumabri |
|---|---|---|
| 分割粒度 | トランスフォーマー層 (重く) | エキスポート (軽量:4KB) |
| ハードウェア | GPU 必須 | CPU 動作可能、GPU オプション |
| 同一性 | 近似値の可能性あり | バイト単位厳密同一保証 |
| 検証 | 困難 | スポットチェック可能 |
- MoE への適合: スパースな構造に最適化されており、単独のエキスポートでもピアとして機能します。
システム要件
- OS: Linux
- ビルド環境: gcc, GNU make
- テスト用: Python3, numpy
- エンジンバイナリ: Colibri ビルドから提供
ステータスとライセンス
現在の実装状況
- 動作するプロトタイプ: 実装可能です。
- オープン Swarm: SHA256 検証、署名されたモデルルート、第二リプライカでのスポットチェックを実装済み。
- プライベート Swarm:
で招待トークンを追加し、活性化データの保護 (LUMABRI_TOKEN
) を実現可能です。LUMABRI_ENCRYPT=1 - 実装済み機能: マルチロー投機的検証、固定遅延ヘッジ、CAS クロスチェック、キーローテーション、NAT リレー。
将来の計画(意図的に除外されている機能)
- 自動 SLA チューニング
- 分散/S3 CAS
- KMS/HSM インテグレーション
- 自動取り消し
ライセンス
Apache 2.0