Nehanth/pooled
Peer-to-peer LLM inference in the browser: pool your devices to run big open models, for chat and coding agents.
Pooled とは?
Pooled は、ノートPC、デスクトップ、スマートフォン、友人のPCなど、一般的なデバイスのグループがGPUを結合し、単体では保持できないような大規模言語モデル (LLM) を実行できるようにする Web ベースのシステムです。デバイスは URL を開いて ルーム に参加します。各デバイスは計算を担当するモデルのスライス(レイヤーのセット)のみをダウンロードし、カスタム WebGPU (WGSL) カーネルを使用してそれらのレイヤーを実行します。生成される各トークンに対して、ホストは直接的な WebRTC データチャネルを介して小さな隠れ状態パケット(数 KB)をワーカーに送信し、最終的なロジットを収集して次の単語をサンプリングし、これを繰り返します。パイプライン全体がブラウザ内で完結するため、ネイティブインストールは不要で、クラウドサーバーが推論を行うこともありません。ブラウザから外部に出るのは、モデルの重みファイル(Hugging Face やピアから取得)のみです。
主な機能(READMEより)
| 機能 | 意味 | 重要性 |
|---|---|---|
| ブラウザ内P2P LLM推論 | デバイス上の GPU 計算に WebGPU を、低遅延のピア接続に WebRTC を使用。 | サーバー側の GPU コストが不要。モダンなブラウザがあれば誰でも計算リソースを提供可能。 |
| レイヤー単位のモデルシャーディング | 各参加者がモデルのレイヤーの連続したブロックを保持(例:ノートPCで 0-21 層、デスクトップで 22-42 層、スマホで 43-63 層)。 | 複数のデバイスのメモリを合計することで、非常に大きなモデル(270-350 億パラメータ)の実行が可能。 |
| サポートされているモデル | Qwen 3.8 27B (Q4_0, 約17 GB), Qwen 3.6 35B MoE (Q4_0, 約22.5 GB), Qwen 3 1.7B (Q8_0, 約5.6 GB)。 | 密結合モデルと混合エキスパート (MoE) アーキテクチャの両方がシステムで動作することを実証。 |
| 推論デコード | モデルに組み込まれたドラフトレイヤーがトークンを提案し、ホストがそれを検証することで生成速度を劇的に向上。 | 単一 GPU 上のネイティブな llama.cpp に近いトークン/秒レートを実現しつつ、正確性を維持。 |
| コードモード | ファイルの作成、サンドボックスプレビュー (:5173) の提供、コンソールエラーの読み取りと修正を反復的に行うエージェントループ。 |
共有 LLM をブラウザ内コーディングアシスタントに変え、参加者全員が見られる小さなアプリ(テトリスなど)を構築可能。 |
| OpenAI互換 Serve API | 小さな CLI (npx @pooled/cli serve …) がルームを OpenAI スタイルの /v1/chat/completions エンドポイント(Anthropic メッセージも対応)として公開。 |
既存のツール(Codex CLI, Claude Code, Continue, LiteLLM, curl など)が、ホストされた API と同様に pooled モデルと通信可能。 |
| インストール不要、アカウント不要 | リンクを開くだけで利用可能。ホストはオプションでトークンによるルーム保護が可能。 | アドホックなコラボレーションやデモの障壁が低い。 |
| リレーフォールバック | 企業ネットワークが UDP をブロックする場合、TURN リレー(443 ポートの TCP/TLS)にフォールバック可能。 | ファイアウォール環境下でも利用可能にしつつ、モデルの重みはリレーの外に保持。 |
| テストとベンチマーク | ユニットテスト(CPUのみ)、GPUなしの E2E テスト、0.6B モデルでの GPU ゴールデンテスト、詳細なベンチマークログ。 | 再現性を考慮して設計されていることを示す。 |
| オープンソース & MITライセンス | すべてのコード、カーネル、ドキュメントが MIT ライセンスで公開。 | コミュニティによる貢献と再利用を促進。 |
想定されるユースケース
| ユースケース | Pooled の利点 |
|---|---|
| ライブコーディングデモ / ワークショップ | 参加者がノートPCやスマホを持ち寄り、モデルを共同実行することで、クラウドクレジットなしで 300 億パラメータの LLM をデモ可能。 |
| プライバシー重視のチーム | プロンプトを処理する中央サーバーがないため、自前のデバイスのみを信頼するチームが強力なモデルをローカルで実行可能。 |
| エッジデバイス研究 | レイヤー単位のシャーディング、MoE オフロード、WebGPU カーネルを研究する研究者がブラウザ上で直接実験可能。 |
| AI 拡張 Web アプリのラピッドプロトタイピング | 組み込みのコードモードにより、コードを記述・提供するエージェントがすぐに利用でき、概念実証に役立つ。 |
制限事項と今後の課題(プロジェクトによる認識)
- ネットワーク遅延の影響 – 往復遅延が増えるとトークン/秒が低下します。推論デコードで緩和されますが、影響を完全には排除できません。
- プリフィル速度 – 長いプロンプトの最初のトークンは、ネイティブな llama.cpp よりも遅くなります。ロードマップでは高速なプリフィルを優先事項としています。
- ブラウザサポート – macOS 上の Chrome で完全に検証済みです。iPhone の Safari はワーカーとして動作しますが、Mac の Safari はメモリ負荷によりリロードされる可能性があります。Firefox/Linux は WebGPU の手動有効化が必要です。
- 隠れ状態のプライバシー – 隠れ状態パケットは暗号化されていません。ルーム内の誰でもプロンプトを再構築できるため、信頼できる参加者間での利用を想定しています。
- デバイスのメモリ要件 – 分割しても、270-350 億パラメータモデルにはルーム全体で約 17-22 GB の RAM/VRAM が必要なため、低スペックのスマホだけでは最大規模のモデルをホストできません。
クイックスタート(READMEより)
# 静的サイトをクローンしてホスト
git clone https://github.com/Nehanth/pooled && cd pooled
npx -y serve -l 8080 . # http://localhost:8080/room を開く
各参加者のブラウザで表示された URL を開き、「Start a room」をクリックして、デバイスがレイヤーの割り当てをネゴシエーションする様子を確認してください。
結論
Pooled は、ブラウザ内での共同 LLM 推論のフロンティアを押し広げる、真のオープンソースプロジェクトです。WebGPU 加速カーネル、WebRTC ベースのピアネットワーキング、完全な OpenAI 互換 API インターフェースを組み合わせ、ネイティブインストールを一切必要としません。README には詳細なアーキテクチャドキュメント、パフォーマンス数値、明確なロードマップが記載されており、分散推論、ブラウザベースの AI、またはクライアントサイドで動作するコーディングエージェントの構築に興味がある人にとって、信頼できるリファレンスとなります。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト