
在开始操作前,先检查设备和环境是否符合要求,这是部署成功的关键,入门者优先确认硬件和系统版本即可。
设备类型 | JetPack版本 | 核心依赖 |
|---|---|---|
Jetson AGX Thor | JetPack 7(L4T r38.x) | Docker、NVIDIA容器运行时 |
其他Orin设备 | JetPack 6(L4T r36.x) | Docker、NVIDIA容器运行时 |
Jetson设备默认未安装curl,先执行以下命令安装,避免后续操作报错:
sudo apt-get update && sudo apt-get install curl -y为方便入门开发者快速查阅,以下汇总各Jetson设备部署核心参数,对应后续部署步骤中的关键配置:
配置项 | Jetson AGX Thor | Jetson AGX Orin | Orin Super Nano |
|---|---|---|---|
vLLM Container | nvcr.io/nvidia/vllm:26.01-py3 | ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04 | ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04 |
Model | FP8 via NGC (volume mount) | FP8 via NGC (volume mount) | FP8 via NGC (volume mount) |
Max Model Length | 8192 tokens | 8192 tokens | 256 tokens (memory-constrained) |
GPU Memory Util | 0.8 | 0.8 | 0.65 |
全程在Jetson设备的终端操作,复制粘贴命令即可,按步骤执行,不要跳过。所有操作的核心工作目录为~/Projects/CosmosReason,统一目录能避免路径错误(新手最易踩坑点)。
NGC CLI是获取官方模型的唯一途径,配置一次即可永久使用。
mkdir -p ~/Projects/CosmosReason && cd ~/Projects/CosmosReason# 下载压缩包
wget -O ngccli_arm64.zip https://api.ngc.nvidia.com/v2/resources/nvidia/ngc-apps/ngc_cli/versions/4.13.0/files/ngccli_arm64.zip
# 解压
unzip ngccli_arm64.zip
# 赋予执行权限
chmod u+x ngc-cli/ngc
# 添加到系统环境变量(临时生效,当前终端可用)
export PATH="$PATH:$(pwd)/ngc-cli"ngc config set执行后终端会依次提示输入3项内容,按以下要求操作:
ascii(纯文本格式,新手易查看)所有Jetson设备使用同一个模型,命令完全相同,执行后等待下载完成(约5GB,根据网络速度而定):
cd ~/Projects/CosmosReason
ngc registry model download-version "nim/nvidia/cosmos-reason2-2b:1208-fp8-static-kv8"下载完成后,目录下会生成cosmos-reason2-2b_v1208-fp8-static-kv8/,这是模型权重目录,记住这个路径,后续需要挂载到Docker容器。
vLLM是运行模型的核心框架,不同设备拉取的镜像地址不同,新手务必根据自己的设备选择命令,复制粘贴执行(约8GB,耐心等待):
docker pull nvcr.io/nvidia/vllm:26.01-py3docker pull ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04这一步是核心,不同设备的命令不同,严格对应选择。操作逻辑:先释放系统缓存→启动Docker容器→在容器内启动模型服务,模型服务启动后会监听0.0.0.0:8000,不要关闭当前终端。
设置模型路径并释放系统缓存(避免内存不足):
# 设置模型路径为步骤2的下载目录
MODEL_PATH="$HOME/Projects/CosmosReason/cosmos-reason2-2b_v1208-fp8-static-kv8"
# 释放系统缓存
sudo sysctl -w vm.drop_caches=3docker run --rm -it \
--runtime nvidia \
--network host \
--ipc host \
-v "$MODEL_PATH:/models/cosmos-reason2-2b:ro" \
-e NVIDIA_VISIBLE_DEVICES=all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
nvcr.io/nvidia/vllm:26.01-py3 \
bashvllm serve /models/cosmos-reason2-2b \
--max-model-len 8192 \
--media-io-kwargs '{"video": {"num_frames": -1}}' \
--reasoning-parser qwen3 \
--gpu-memory-utilization 0.8等待终端显示INFO: Uvicorn running on http://0.0.0.0:8000,说明模型服务启动成功。
docker run --rm -it \
--runtime nvidia \
--network host \
-v "$MODEL_PATH:/models/cosmos-reason2-2b:ro" \
-e NVIDIA_VISIBLE_DEVICES=all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04 \
bashcd /opt/ && source venv/bin/activate
# 启动模型
vllm serve /models/cosmos-reason2-2b \
--max-model-len 8192 \
--media-io-kwargs '{"video": {"num_frames": -1}}' \
--reasoning-parser qwen3 \
--gpu-memory-utilization 0.8终端显示INFO: Uvicorn running on http://0.0.0.0:8000即为成功。
docker run --rm -it \
--runtime nvidia \
--network host \
-v "$MODEL_PATH:/models/cosmos-reason2-2b:ro" \
-e NVIDIA_VISIBLE_DEVICES=all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04 \
bashcd /opt/ && source venv/bin/activate
# 启动优化后的模型,适配小内存
vllm serve /models/cosmos-reason2-2b \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code \
--enforce-eager \
--max-model-len 256 \
--max-num-batched-tokens 256 \
--gpu-memory-utilization 0.65 \
--max-num-seqs 1 \
--enable-chunked-prefill \
--limit-mm-per-prompt '{"image":1,"video":1}' \
--mm-processor-kwargs '{"num_frames":2,"max_pixels":150528}'终端显示INFO: Uvicorn running on http://0.0.0.0:8000即为成功。
模型服务启动后,打开新的终端(不要关闭原终端),执行以下命令验证:
curl http://localhost:8000/v1/models若终端返回包含/models/cosmos-reason2-2b的JSON信息,说明模型服务正常;若报错,检查步骤4的命令是否执行正确,或模型服务是否启动成功。
进阶验证(可选):调用API测试模型对话能力
curl -s http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/models/cosmos-reason2-2b",
"messages": [
{
"role": "user",
"content": "What capabilities do you have?"
}
],
"max_tokens": 128
}' | python3 -m json.tool执行后会返回模型的能力描述,说明模型可正常响应请求。
模型服务运行后,通过Live VLM WebUI可实现摄像头实时推流→模型分析→结果可视化,全程鼠标操作,新手友好。
打开新的终端,执行以下命令(自动创建虚拟环境,避免污染系统环境):
# 安装uv(Python包管理工具)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 加载uv环境
source $HOME/.local/bin/env
# 进入工作目录
cd ~/Projects/CosmosReason
# 创建虚拟环境
uv venv .live-vlm --python 3.12
# 激活虚拟环境
source .live-vlm/bin/activate
# 安装Live VLM WebUI
uv pip install live-vlm-webui
# 启动WebUI
live-vlm-webui启动成功后,终端会显示WebUI的访问地址:https://localhost:8090。
https://localhost:8090,首次访问会提示「证书不安全」,点击高级→继续访问(仅本地使用,无安全风险)。http://localhost:8000/v1(必须是http,不是https,新手易踩坑)若使用Orin Super Nano(内存受限),模型推理速度较慢,可调整以下设置提升体验:
部署过程中若遇到报错,优先查看以下常见问题,90%的新手问题都能解决:
解决:将当前用户添加到docker组,执行后重启终端:
sudo usermod -aG docker $USER也可直接在docker命令前加sudo(临时解决)。
解决:
sudo sysctl -w vm.drop_caches=3--gpu-memory-utilization的值改为0.55或0.50--max-model-len为128解决:
curl http://localhost:8000/v1/modelshttp://localhost:8000/v1(不是https,末尾带v1)http://<Jetson设备IP>:8000/v1(Jetson IP可通过ifconfig查看)解决:
ls ~/Projects/CosmosReason/cosmos-reason2-2b_v1208-fp8-static-kv8/(若目录为空,重新下载模型)-v "$MODEL_PATH:/models/cosmos-reason2-2b:ro"(前后路径一一对应)/models/cosmos-reason2-2b,与vllm serve后的路径一致解决:
ls /dev/video*(若有输出,说明摄像头正常)本教程完成了从「环境准备→模型下载→vLLM部署→WebUI可视化」的全流程,入门开发者核心掌握3个关键点:
8000端口,WebUI通过该端口连接模型;通过本教程,你已在边缘设备上实现了视觉语言模型的部署和实时推理,在此基础上可进一步尝试:修改WebUI的帧处理参数、向模型发送自定义视觉问题、结合机器人控制实现物理AI应用等。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。