Fable5は高価になり、ローカルGPUは足りない: 1つのLLMをMacとCUDAで分散実行するDRIFT
(github.com/TaewoooPark)LLMは個人から遠ざかりつつあり、DRIFTは1つのLLMを複数の個人デバイスに分散して実行することで、これに対抗します。
DRIFTは、1つのLLMを複数の個人デバイスにレイヤー単位で分割して実行するオープンソースプロジェクトです。
最近、個人開発者がAIを自分で扱おうとすると、どちらの道も簡単ではありません。Fable5のような最上位モデルはアクセスがますます制限され、ローカルモデルも「自分のコンピュータで動かせる」と言われる一方で、実際にはかなり大きなGPUメモリとセットアップを要求します。モデルが公開されていても、そのモデルを十分な規模で実行する能力は依然として一部のハードウェアとプラットフォームに集中しています。結局のところ、これはAIの中央集権的な環境を生み、個人が最新技術にアクセスできる水準に大きな制約をもたらします。
DRIFTが投げかける問いはシンプルです。
1台のマシンでモデル全体を抱えきれないなら、複数の個人デバイスで1つのモデルを一緒に動かせないだろうか?
DRIFTは、MacのApple GPU(MPS)とWindows/Linux PCのNVIDIA GPU(CUDA)を組み合わせて、1つのモデルを実行します。モデルをデコーダレイヤー単位で分割し、ノード間ではモデル全体やKVキャッシュではなくhidden stateだけを送ります。通信はPyTorchオブジェクトやCUDAハンドルではなく、TCP + msgpackベースの中立的なバイトプロトコルで処理します。
主な機能は次のとおりです。
- 1つのLLMをデコーダレイヤー単位で自動分割
- Mac MPSとNVIDIA CUDAの混在実行
- ノード間通信にTCP + msgpackを使用
- P2Pチェーンモードでheadノードの帯域幅ボトルネックを緩和
- X25519、ChaCha20-Poly1305ベースの暗号化ワイヤ
- Ed25519署名レシートによる各ノードの作業検証
- ノードが途中で落ちたときのre-split + replayベースのフェイルオーバー
- OpenAI互換HTTP APIを提供
- 理論上はデコーダレイヤー数ぶんまで分割可能。標準のQwenでは最大28台、Gemmaでは最大35台まで1つのモデルを分散実行でき、現時点で現実的なスイートスポットは2〜4台程度
似た問題を解くプロジェクトとしては、Exoとllama.cpp RPCがあります。ExoはApple Silicon同士を束ねてローカルクラスタのように使えますが、ノード間通信がMLX側に結びついているため、Appleエコシステムを離れにくい構造です。llama.cpp RPCは複数のバックエンドを活用できますが、ggml/llama.cppランタイムに結びついたRPC方式です。DRIFTの差別化ポイントは、ノード間の境界を特定のMLランタイムではなく、中立的なバイトプロトコルまで引き上げている点です。そのため、Apple MPSとNVIDIA CUDAのように、本来は同じ分散ランタイムに載せにくい組み合わせを1つのモデル実行に入れることに焦点があります。
DRIFTの実装はPythonとPyTorchの上にありますが、ノード間の契約はPyTorchに依存しない形で定義されています。モデルの読み込みと実行にはHugging Face Transformers、safetensors、PyTorch MPS/CUDAを活用し、外部にはStarlette/UvicornベースのOpenAI互換APIを提供します。内部通信はmsgpackのフレーミングと暗号化レイヤーで包まれており、「どのモデルをどのデバイスで動かすか」と「ノード同士がどのバイトをやり取りするか」を分離しようとする設計です。
個人的にこのプロジェクトが興味深い理由は、「AIの分散化」をトークン経済や巨大ネットワークの話からいきなり始めていない点です。まず必要なのは、実際に個人デバイスが1つのモデル実行に参加できる実行レイヤーです。誰がどのレイヤーを計算したのかを検証でき、ノードが抜けても復旧でき、特定ベンダーやデータセンターに縛られない構造があってこそ、その上により大きなネットワークを築けます。
DRIFTは速度を前面に出すプロジェクトではありません。むしろ優先順位は正確性です。分散実行したときに単一マシンで実行した結果と同じ答えが出るかを検証することに重点を置いています。READMEによれば、Qwen2.5-1.5B-Instructで複数のパリティゲートを通過しており、Mac MPSとNVIDIA CUDAを混在させた実験も含まれています。
最上位のAIモデルがますます閉じられ、ローカルAIが依然として高価なハードウェアを要求する状況で、DRIFTはかなり現実的な問いを投げかけます。
フロンティアモデルが個人顧客から遠ざかるとき、個人のリソースを束ねてその力を高められるだろうか?
1件のコメント
DRIFTは、速度競争よりも、異種の個人デバイス上で1つのLLMを正確に分割して動かせるのかをまず見るプロジェクトです!
特に Exo / llama.cpp RPC / Petals あたりと比較したときに差別化ポイントが十分に説得力があるか、また MPS↔CUDA の混在実行において、実務で求められる追加の観点について、皆さんのご意見やフィードバックを伺いたいです。