Skip to main content

在 reComputer Jetson 上的分布式 llama.cpp(RPC 模式)

在 NVIDIA Jetson 等边缘设备上运行大型语言模型(LLM)可能因内存和计算限制而具有挑战性。本指南演示了如何使用 llama.cpp 的 RPC 后端在多个 reComputer Jetson 设备上分布 LLM 推理,为更苛刻的工作负载实现水平扩展。

前提条件

  • 两台安装了 JetPack 6.x+ 且 CUDA 驱动程序正常工作的 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. 配置 CMake 以支持 RPC 和 CUDA:

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-socket 模式
内存不足错误减少 -ngl 值以将更少的层卸载到 GPU,或将一些层保留在 CPU 上

通过此设置,您现在可以使用 llama.cpp 的 RPC 后端在多个 Jetson 设备上实现 LLM 推理的"水平扩展"。为了获得更高的吞吐量,您可以添加更多 RPC 节点或进一步将模型量化为 q4_0q5_k_m 等格式。

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...