世界を動かす技術を、日本語で。

Qwen3 30B A3Bが4台のRaspberry Pi 5で13トークン/sを達成

概要

Raspberry Pi 5台を使った 分散型LLM推論環境 のセットアップ例。 Qwen3_30B モデルを分散推論で実行。 ネットワーク構成 と主要なCLIコマンドの解説。 ベンチマーク結果 やトークン生成速度の紹介。 推論実行時のログ とパフォーマンス指標の記録。

分散型LLM推論環境のセットアップ概要

  • デバイス構成 :Raspberry Pi 5(8GBモデル)を4台使用
    • raspberrypi2(ROOT、10.0.0.2)
    • raspberrypi1(WORKER 1、10.0.0.1)
    • raspberrypi3(WORKER 2、10.0.0.3)
    • raspberrypi4(WORKER 3、10.0.0.4)
  • スイッチ :TP-Link LS1008Gで全台を接続
  • モデル :Qwen3_30B(MoE構成、バージョン0.16.0)
  • 実行コマンド例
    • ./dllama inference --prompt "<|im_start|>user Please explain me where is Poland as I have 1 year<|im_end|> <|im_start|>assistant " --steps 128 --model models/qwen3_30b_a3b_q40/dllama_model_qwen3_30b_a3b_q40.m --tokenizer models/qwen3_30b_a3b_q40/dllama_tokenizer_qwen3_30b_a3b_q40.t --buffer-float-type q80 --nthreads 4 --max-seq-len 4096 --workers 10.0.0.1:9999 10.0.0.3:9999 10.0.0.4:9999
  • 主なパラメータ
    • --prompt:入力プロンプト
    • --steps:推論ステップ数
    • --model:モデルファイルパス
    • --tokenizer:トークナイザファイルパス
    • --workers:ワーカーノードのIPとポート指定

モデル・ネットワーク情報

  • モデル詳細
    • Arch: Qwen3 MoE
    • HiddenAct: Silu
    • Dim: 2048
    • HeadDim: 128
    • QDim: 4096
    • KvDim: 512
    • HiddenDim: 6144
    • VocabSize: 151936
    • nLayers: 48
    • nHeads: 32
    • nKvHeads: 4
    • OrigSeqLen: 262144
    • nExperts: 128
    • nActiveExperts: 8
    • MoeHiddenDim: 768
    • SeqLen: 4096
    • NormEpsilon: 0.000001
    • RopeType: Falcon
    • RopeTheta: 10000000
    • RequiredMemory: 5513 MB
  • ネットワーク接続
    • 各ワーカーに対して ソケット接続 で分散推論を実現
    • 非ブロッキングモードで通信最適化

ベンチマーク・パフォーマンス

  • 推論速度
    • 4台構成時:14.33 tok/s(評価時)、13.04 tok/s(生成時)
  • 通信量
    • 送信:12084 kB(評価)、636 kB(生成/トークン)
    • 受信:20085 kB(評価)、1057 kB(生成/トークン)
  • トークン生成のタイムスタンプ
    • 1トークンあたり約50~70ms

実行ログ・注意点

  • トークナイザとモデルの語彙数不一致 の警告
    • Tokenizer vocab size (151669) does not match the model vocab size (151936)
  • 各種ID
    • BosId: 151643
    • EosId: 151645
    • SpecialVocabSize: 26
  • 推論開始から終了までのネットワーク・メモリ・CPU情報 の表示
  • ネットワーク終了時 に正常にクローズされることを確認

分散推論環境構築のポイント

  • Raspberry Pi 5の分散利用 で大規模なLLMモデルの推論が可能
  • ネットワーク帯域とメモリ要件 に注意
  • CLIコマンドで柔軟なプロンプト・モデル指定 が可能
  • 推論速度と通信量のバランス が重要
  • 分散推論のログ解析 でボトルネックや最適化ポイントを特定

Hackerたちの意見

distributed-llamaは素晴らしいけど、もっとモデルに対応してくれたらいいな。Exoと比べて、セットアップの簡単さやメンテナンスのしやすさには満足してるし、llama.cppのRPCモードに比べてパフォーマンスもいいし。

CUDA GPUを持つホストのクラスターで、フルウェイトに必要なVRAMが足りないけど、10Gbitの低遅延インターコネクトがある場合、SOTAは何か教えてもらえる?その問題が解決できれば、たとえバッチアプローチでも、並列バッチ推論が可能になって、高いトークン数を得られるけど、セッションごとの数は少なくて、大きなモデルにも対応できるなら、大規模で低コストなAI自動化にとっては大きなゲームチェンジャーになると思う。私の直感では、可能だと思うから、すでに誰かがやってるか、始めてるかもしれないね。

これ、めっちゃすごいね。もしこれが一台のRaspberry Piで動くようになったら、クレイジーな埋め込み型のおもちゃやツールができるよ。ローカルで、インターネットなしで。子供たちは、自分に話しかけてくれるおもちゃや、自分のストーリーを覚えてくれるおもちゃで育つんだ。まるでSFの未来に生きてるみたい。10年前には考えられなかったことだよ。

子供たちの遊び方には、考え抜かれたデザインの余地があることを忘れない方がいいと思う。LLMは、子供たちが想像力や視覚的・空間的推論能力を育むための有用なツールなのかな?それとも、これらのツールが彼らの思考パターンをLLMにエンコードされたものと完全に一致させてしまうのかな?親が子供を形作ることには、美しくて大切な何かがあると思う。親の良い面(悪い面も)を子供に残すんだよね。他の人との関わりでも同じことが言える。技術はクールだけど、どう使うかについては考えを持つべきだと思う。

こんなもん消して外で遊んで、汚れながら自転車乗った方がいいよ。

子供たちは自分に話しかけて、物語を覚えてくれるおもちゃで育つんだね。子供時代の社会的な常識からの大きな変化だ。次は、オムツを替えたり、シェフ・ボイアーディを作ったりするAIおもちゃがあるって言うの?

子供のおもちゃにLLMが入るなんて、俺の冷たくて死んだ体の上を通り過ぎないと無理だ。これは本当にまずいことになるよ。

Raspberry Piがそんなことできるなら、ビル・ゲイツの孫たちが使ってるおもちゃはどんなもんだろうね!『ダイヤモンド・エイジ』の「若い女性のためのイラスト付き入門書」が現実になる寸前だよ。

すごい数字だね。これがi5の8世代のLenovo ThinkCentreみたいな、比較的モダンなデスクトップPC4台でどうスケールするのか気になるな。これらはかなり安く手に入るし。でも、@geerlingguyが言ってるように、モデルの互換性をもっと高めていかないと!例えば、fastsdcpuみたいなものが分散して、限られた予算だけど大きなPC群を持ってる人たちのために、画像生成モデルのアクセス性や実用性を民主化できたら素晴らしいよね ;)

それはいいけど、最も手頃な選択肢は、16/32または64GB(予算に応じて)のユニファイドメモリを搭載した中古のMacBookを買って、Asahi Linuxをインストールして遊ぶことだと思う。メモリがそこそこあるグラフィックカードは、まだまだ高すぎるし(中古でも)、大きくてうるさくて、エネルギーもたくさん使うからね。

eGPUシャーシにGPUを接続すれば、どちらにしても動かせるよ。

これは技術的にどうやって実現されてるの?クエリをどう分割して、結果をどう集約してるの?

READMEから: より多くのデバイスがあれば、パフォーマンスが向上する。テンソル並列処理とイーサネットによる高速同期を活用するんだ。ノードの最大数はモデル#70のKVヘッドの数に等しい。並列処理モードの概要については、この記事が良かったよ。[1]: https://medium.com/@chenhao511132/parallelism-in-llm-inferen...

じゃあ、40台のRPi 5で130トークン/s出るの?

レイヤーの数に制限があるかもしれないし、ネットワークの遅延でリターンが減っていくこともあるだろうね。

おそらくNUMAのボトルネックが原因だね。

すべてを量子化すれば、πで動くってことだね!でも、実際の応用が気になるな。みんな、LLMを動かすために4xRPi5をランダムに買ったりするのかな?

自分の開発ツールを完全にローカルなLLMに接続したいな。問題はコンテキストウィンドウとコストだね。コンテキストウィンドウが小さすぎると、私には役に立たない。500ドルもRPiに使うつもりはないよ、価値があるって分からない限り。雇い主に払ってもらうように頼むこともできるけど、Claudeとかに払ってもらう方がずっと説得しやすいと思う。

1000台以上のラズベリーパイのクラスターがあるけど、計算能力の75%とメモリの80%が全然使われてないんだ。

今のところ、これは共有BPでの「プルーフ・オブ・ワーク」みたいなもんだね。多分、どこかのハッカーがこれを動かすだろうし、俺も時間があれば、カスタマイズしたアレクサみたいなのを作ってみようかな。音声合成と音声認識はまだ必要だけど、彼のセットアップの話とは関係ないしね。プロ用途でも本当に使えるなら、ARM上でQwenを立ち上げる方が安上がりじゃない?いろんな方法でベンチを活用できるし。

これは方法やモデルを試すのにいいテストベッドだと思う。いつか3…2…1のPi5に性能を合わせられるか見てみよう。

時々、1つのプロジェクトのためにRaspberry Piを買って、別のプロジェクトのためにまた買って、気づいたらどれも完成してなくて、いろんな世代のRaspberry Piが10台も転がってることがあるよね。 ;)

モデルによるね。もしMoEを使ったスパースモデルなら、小さいノードに分けられるけど、密な30bモデルはすぐには普及しないと思う。IntelのプロB50を使ったダンパーPCの方が、このモデルには合ってるよ(密な30bにはメモリが足りないしね)。それに、1秒あたり20トークン近く出せるし、ずっと安いからね。

ネットワークがボトルネックになってるのかな?ギガビットスイッチにしてはすごいね。

32GBのRAMを搭載した最新のx86ミニPCでも似たような数字が出ると思うよ。