Skip to main content

reComputer Jetson での分散 llama.cpp(RPC モード)

NVIDIA Jetson のようなエッジデバイスで大規模言語モデル(LLM)を実行することは、メモリと計算の制約により困難な場合があります。このガイドでは、llama.cpp の RPC バックエンドを使用して複数の reComputer Jetson デバイス間で LLM 推論を分散し、より要求の厳しいワークロードに対する水平スケーリングを可能にする方法を説明します。

前提条件

  • JetPack 6.x+ がインストールされ、CUDA ドライバが正常に動作する 2 台の reComputer Jetson デバイス
  • 両方のデバイスが同じローカルネットワーク上にあり、互いに ping できること
  • ローカルマシン(クライアント)に ≥ 64 GB RAM、リモートノードに ≥ 32 GB RAM

1. ソースコードのクローン

ステップ 1. llama.cpp リポジトリをクローンします:

git clone https://github.com/ggml-org/llama.cpp.git 
cd llama.cpp

2. ビルド依存関係のインストール

ステップ 1. パッケージリストを更新し、必要な依存関係をインストールします:

sudo apt update
sudo apt install -y build-essential cmake git libcurl4-openssl-dev python3-pip

3. RPC + CUDA バックエンドでのビルド

ステップ 1. RPC と CUDA サポートで CMake を設定します:

cmake -B build \
-DGGML_CUDA=ON \
-DGGML_RPC=ON \
-DCMAKE_BUILD_TYPE=Release

ステップ 2. 並列ジョブでコンパイルします:

cmake --build build --parallel   # Multi-core parallel compilation

4. Python 変換ツールのインストール

ステップ 1. Python パッケージを開発モードでインストールします:

pip3 install -e .

5. モデルのダウンロードと変換

この例では TinyLlama-1.1B-Chat-v1.0 を使用します:

モデルリンク: https://huggingface.co/TinyLlama/TinyLlama-1.1B-Chat-v1.0

これらのファイルをダウンロードし、自作の TinyLlama-1.1B-Chat-v1.0 フォルダに配置してください。

ステップ 1. Hugging Face モデルを GGUF 形式に変換します:

# Assuming the model is already downloaded to ~/TinyLlama-1.1B-Chat-v1.0 using git-lfs or huggingface-cli
python3 convert_hf_to_gguf.py \
--outfile ~/TinyLlama-1.1B.gguf \
~/TinyLlama-1.1B-Chat-v1.0

6. 単一マシン推論の検証

ステップ 1. 簡単なプロンプトでモデルをテストします:

./build/bin/llama-cli \
-m ~/TinyLlama-1.1B.gguf \
-p "Hello, how are you today?" \
-n 64

応答を受信した場合、モデルは正常に動作しています。

7. 分散 RPC 操作

7.1 ハードウェアトポロジーの例

デバイスRAM役割IP
マシン A64 GBクライアント + ローカルサーバー192.168.100.2
マシン B32 GBリモートサーバー192.168.100.1

7.2 リモート RPC サーバーの開始(マシン B)

ステップ 1. リモートマシンに接続し、RPC サーバーを開始します:

ssh [email protected]
cd ~/llama.cpp
CUDA_VISIBLE_DEVICES=0 ./build/bin/rpc-server --host 192.168.100.1

サーバーはデフォルトでポート 50052 を使用します。カスタマイズするには、-p <port> を追加してください。

7.3 ローカル RPC サーバーの開始(マシン A)

ステップ 1. ローカル RPC サーバーを開始します:

cd ~/llama.cpp
CUDA_VISIBLE_DEVICES=0 ./build/bin/rpc-server -p 50052

7.4 共同推論(マルチノード負荷)

ステップ 1. ローカルとリモートの両方の RPC サーバーを使用して推論を実行します:

./build/bin/llama-cli \
-m ~/TinyLlama-1.1B.gguf \
-p "Hello, my name is" \
-n 64 \
--rpc 192.168.100.1:50052,127.0.0.1:50052 \
-ngl 99

-ngl 99 は 99% のレイヤーを GPU(RPC ノードとローカル GPU の両方)にオフロードします。

note

ローカルのみで実行したい場合は、--rpc からリモートアドレスを削除してください: --rpc 127.0.0.1:50052

8. パフォーマンス比較

左:192.168.100.1 の GPU 使用率;右:192.168.100.2 の GPU 使用率

ローカルのみで実行する場合、GPU の負荷は単一のカードに集中します

9. トラブルシューティング

問題解決策
rpc-server 起動失敗ポートが占有されているか、ファイアウォールが 50052/tcp をブロックしていないか確認
推論速度の低下モデルが小さすぎる、ネットワーク遅延 > 計算利益;より大きなモデルまたは Unix ソケットモードを試す
メモリ不足エラー-ngl 値を減らして GPU にオフロードするレイヤーを少なくするか、一部のレイヤーを CPU に保持

この設定により、llama.cpp の RPC バックエンドを使用して複数の Jetson デバイス間で LLM 推論の「水平スケーリング」を実現できます。より高いスループットを得るには、RPC ノードを追加するか、モデルを q4_0q5_k_m などの形式にさらに量子化することができます。

技術サポート & 製品ディスカッション

弊社製品をお選びいただき、ありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。

Loading Comments...