Skip to content

vLLM Distributed Inference on Jetson Orin AGX

官方文档

测试镜像

  1. mitakad/vllm:0.11.2-r36.4.tegra-aarch64-cp310-cu126-22.04-truncated
  2. mitakad/vllm:0.12.0-r36.4.tegra-aarch64-cp310-cu126-22.04-truncated
  3. mitakad/vllm:0.13.0-r36.4.tegra-aarch64-cp312-cu129-24.04-pre-release

步骤

注意点: 模型需要自己下载,下载到当前的目录下。在主节点上执行

pip install modelscope
~/.local/bin/modelscope download --model openai-mirror/gpt-oss-120b --local_dir ./openai-mirror/gpt-oss-120b

将主节点上的 10G 网口和另外一台的算力舱 10G 通过网线连接起来。

  1. 主节点
sudo ip addr add 192.168.38.1/24 dev eno1

VLLM_HOST_IP=192.168.38.1 && \
VLLM_IFNAME=eno1 && \
docker run -d --rm --runtime nvidia -it \
    --network host \
    --shm-size=8g \
    --privileged \
    --ipc=host \
    -v /dev/shm:/dev/shm \
    -e NVIDIA_DRIVER_CAPABILITIES=all \
    -e VLLM_HOST_IP=${VLLM_HOST_IP} \
    -e UCX_NET_DEVICES=${VLLM_IFNAME} \
    -e NCCL_SOCKET_IFNAME=${VLLM_IFNAME} \
    -e GLOO_SOCKET_IFNAME=${VLLM_IFNAME} \
    -e TP_SOCKET_IFNAME=${VLLM_IFNAME} \
    -v `pwd`/:/models \
    -v `pwd`/cache:/root/.cache/huggingface \
    --name vllm_xray \
    mitakad/vllm:0.11.2-r36.4.tegra-aarch64-cp310-cu126-22.04-truncated

docker exec -ti vllm_xray bash

ray start -v  --head --port 6379 --node-ip-address 192.168.38.1 --num-gpus 1
sysctl vm.drop_caches=3
  1. 其他节点
sudo ip addr add 192.168.38.2/24 dev eno1

VLLM_HOST_IP=192.168.38.2 && \
VLLM_IFNAME=eno1 && \
docker run -d --rm --runtime nvidia -it \
    --network host \
    --shm-size=8g \
    --privileged \
    --ipc=host \
    -v /dev/shm:/dev/shm \
    -e NVIDIA_DRIVER_CAPABILITIES=all \
    -e VLLM_HOST_IP=${VLLM_HOST_IP} \
    -e UCX_NET_DEVICES=${VLLM_IFNAME} \
    -e NCCL_SOCKET_IFNAME=${VLLM_IFNAME} \
    -e GLOO_SOCKET_IFNAME=${VLLM_IFNAME} \
    -e TP_SOCKET_IFNAME=${VLLM_IFNAME} \
    -v `pwd`/:/models \
    -v `pwd`/cache:/root/.cache/huggingface \
    --name vllm_xray \
    mitakad/vllm:0.11.2-r36.4.tegra-aarch64-cp310-cu126-22.04-truncated

docker exec -ti vllm_xray bash

ray start -v  --address 192.168.38.1:6379 --node-ip-address 192.168.38.2 --num-gpus 1
sysctl vm.drop_caches=3
  1. 拷贝模型到另外的worker节点上,同样的目录,我放置的目录是 ~
rsync -aP ~/openai-mirror nvidia@192.168.38.2:~
  1. 在主节点的机器上执行下面的命令
docker exec -ti vllm_xray bash

# http://192.168.1.128:1085 是我本地的代理,您可以去掉或者更改成您的
curl -x http://192.168.1.128:1085 -L  https://openaipublic.blob.core.windows.net/encodings/o200k_base.tiktoken -o fb374d419588a4632f3f557e76b4b70aebbca790

# 测试是否正常
TIKTOKEN_RS_CACHE_DIR=$(pwd) python -c 'from openai_harmony import load_harmony_encoding; load_harmony_encoding("HarmonyGptOss")'

# 启动模型
sysctl vm.drop_caches=3
TIKTOKEN_RS_CACHE_DIR=$(pwd) TRANSFORMERS_OFFLINE=1 vllm serve /models/openai-mirror/gpt-oss-120b --port 8000 \
    --served-model-name gpt-oss-120b \
    --max-model-len 2048 \
    --max-num-batched-tokens 2048 \
    --kv-cache-memory-bytes 3000M \
    --max-num-seqs 10 \
    --tensor-parallel-size 2 \
    --enable-expert-parallel \
    --gpu-memory-utilization 0.8 \
    --distributed-executor-backend ray
  1. 访问

通过终端上的 curl 进行访问。192.168.1.175 是我局域网中的地址,您需要更改成您机器的ip。

curl 'http://192.168.1.175:8000/v1/chat/completions' \
    --header 'Content-Type: application/json' \
    --data '{
        "model": "gpt-oss-120b",
        "messages": [
            {
                "role": "user",
                "content": "who are you?"
            }
        ],
        "stream": false
    }'

测试数据

模型Tokens/s
Qwen3-4B-Instruct-2507-FP810.5
openai/gpt-oss-120b10.1

问题

  1. 如果您遇到加载本地的模型,vllm 报 repo_id 不对之类的错误,最简单的方法就是手动把那个 huggingface_hub 的校验脚本中的校验函数更改。