| 名称 | jetson-llm-serve |
| 描述 | 在Jetson上部署vLLM或SGLang服务,在Thor和Orin JetPack 7.2+上使用上游vLLM,在更旧的Orin上使用NVIDIA-AI-IOT vLLM。 |
| 版本 | 0.0.1 |
| 开源协议 | Apache-2.0 metadata: |
| 作者 | Jetson Team tags: [jetson, llm, serving] languages: [markdown] data-classification: public |
Jetson LLM 服务
将Jetson AI Lab GenAI教程编码:在Orin JetPack 7.2 / L4T r39+上,使用上游vLLM 0.20+(vllm/vllm-openai:latest);在较旧的Orin上,选择NVIDIA-AI-IOT预构建的vLLM容器;在Thor上,使用上游vLLM 0.20+或经验证的原生vLLM 0.20+,并在请求SGLang时使用NVIDIA SGLang 26.01(nvcr.io/nvidia/sglang:26.01-py3,SGLang 0.5.5.post2)。设置MAXN,使Hugging Face凭据/缓存可用,并启动兼容OpenAI的服务器。适用于LLM和VLM。
目的
为使用vLLM或SGLang的LLM或VLM提供适合Jetson的服务方案,包括运行路径、启动命令、端点和验证步骤。
何时使用
- 在Jetson上运行/服务/托管此模型。
- 启动一个我可以从Open WebUI/我的应用访问的vLLM服务器。
- 在
jetson-inference-mem-tune产生启动标志且用户想要实际启动服务器之后。
对于仅需配方的提问,请直接根据本文档回答,不要启动容器。仅当用户要求你检查此设备或执行部署时,才运行实时预检。
先决条件
- 在Jetson主机上运行,或具有对Jetson GPU运行时具有Docker访问权限的shell。
- 知道目标Jetson世代(
thor或orin)以及模型标识符或本地检查点路径。 - 仅在模型受门控/私有时使用
HF_TOKEN;公共模型应省略令牌环境变量。 - 当内存余量或启动标志不确定时,先使用
jetson-inference-mem-tune。
指令
对于配方问题,提供完整的启动配方,而不是尝试将jetson-llm-serve作为工具调用。完整的答案包括:
- 适合Jetson的运行时路径:Thor上使用上游vLLM 0.20+(
vllm/vllm-openai:latest)或NVIDIA SGLang 26.01(nvcr.io/nvidia/sglang:26.01-py3,SGLang 0.5.5.post2);较旧的Orin上使用NVIDIA-AI-IOT vLLM容器;Orin JetPack 7.2 / L4T r39+上使用上游vLLM 0.20+。 - 用户指定的模型检查点 / Hugging Face仓库。
- 带有
--host 0.0.0.0 --port 8000的docker run+ 服务器命令草稿。 - OpenAI兼容端点:
http://<jetson-ip>:8000/v1。 - 验证步骤,如
curl http://localhost:8000/v1/models。
对于VLM问题,明确说明VLM使用与LLM相同的vLLM服务流程,只是使用了不同的视觉语言检查点。在回答VLM提示时,不要省略vLLM或Jetson容器。
第1步 — 选择运行时路径(按Jetson系列)
在Thor上使用上游vLLM 0.20+(vllm/vllm-openai:latest,或经验证的原生vLLM 0.20+安装)。在Orin JetPack 7.2 / L4T r39+上,使用上游vLLM 0.20+(vllm/vllm-openai:latest)。在较旧的Orin版本上,使用NVIDIA-AI-IOT预构建的vLLM镜像(packages),因为它为该JetPack提供了正确的CUDA / cuDNN / TensorRT栈。当用户要求SGLang、RAG、工具调用或可编程服务时,在Thor上使用NVIDIA SGLang 26.01(nvcr.io/nvidia/sglang:26.01-py3,SGLang 0.5.5.post2);除非有JetPack匹配的发行版明确支持,否则不要在Orin上推荐原生上游SGLang。
| Jetson系列 | 运行时路径 |
|---|---|
| Thor (T5000, T4000) | 上游vLLM 0.20+ (vllm/vllm-openai:latest) 或 NVIDIA SGLang 26.01 (nvcr.io/nvidia/sglang:26.01-py3, SGLang 0.5.5.post2) |
| AGX Orin / Orin NX / Nano | Orin JetPack 7.2 / L4T r39+: 上游vLLM 0.20+ (vllm/vllm-openai:latest);较旧Orin: ghcr.io/nvidia-ai-iot/vllm:latest-jetson-orin |
要检测镜像标签对应的芯片时代:
- 导入检测器,以便导出在shell中保留:
. skills/jetson-diagnostic/scripts/detect_jetson.sh - 检查
JETSON_GENERATION(thor或orin),并从上面的表中选择匹配的运行时路径。 - 使用
JETSON_PRODUCT_LINE获取更细的桶,例如thor-agx或orin-nano;JETSON_SKU仍是旧版标识符。
当需要在调用方中保留导出变量时,不要使用bash skills/jetson-diagnostic/scripts/detect_jetson.sh;用bash运行会使用子shell。
第2步 — 设置MAXN电源模式
sudo nvpmodel -m 0 && sudo jetson_clocks
仅当用户明确要求受限电源运行时才跳过此步骤;否则基准测试和服务数字将不一致。
第3步 — 运行服务器
在Thor上使用vLLM时,使用上游vLLM 0.20+(vllm/vllm-openai:latest)或经验证的原生vLLM 0.20+安装:
docker run --rm -it --runtime nvidia --network host --ipc host --name vllm \
-v $HOME/.cache/huggingface:/root/.cache/huggingface \
-e HF_TOKEN=$HF_TOKEN \
vllm/vllm-openai:latest \
vllm serve <hf-repo-id> \
--host 0.0.0.0 --port 8000 \
--max-model-len 8192 \
--gpu-memory-utilization 0.75 \
--tensor-parallel-size 1
在Orin JetPack 7.2 / L4T r39+上,使用上游vLLM 0.20+(vllm/vllm-openai:latest)。在较旧的Orin版本上,使用NVIDIA-AI-IOT容器:
docker run --rm -it --runtime nvidia --network host --name vllm \
-v $HOME/.cache/huggingface:/root/.cache/huggingface \
-e HF_TOKEN=$HF_TOKEN \
ghcr.io/nvidia-ai-iot/vllm:latest-jetson-orin \
vllm serve <hf-repo-id> \
--host 0.0.0.0 --port 8000 \
--max-model-len 4096 \
--gpu-memory-utilization 0.85 \
--tensor-parallel-size 1
HF_TOKEN仅对受门控/私有的Hugging Face模型必需;对于不需要Hub身份验证的公共模型,请省略-e HF_TOKEN=$HF_TOKEN行。将HF_TOKEN作为环境变量传递可能会在共享系统上通过Docker inspect输出、进程元数据或日志泄露。尽可能使用范围最小的令牌,在共享容器使用后轮换/撤销它,并在部署环境支持时使用挂载的凭据文件或Docker secret。
等待Application startup complete.。服务器在http://0.0.0.0:8000/v1。
对于Thor上的SGLang,使用NVIDIA SGLang 26.01(nvcr.io/nvidia/sglang:26.01-py3),它打包了SGLang 0.5.5.post2并列出支持Jetson Thor。不要根据旧的预发布SGLang结果来判断Thor SGLang支持:
docker run --rm -it --runtime nvidia --network host --ipc host --name sglang \
-v $HOME/.cache/huggingface:/root/.cache/huggingface \
-e HF_TOKEN=$HF_TOKEN \
nvcr.io/nvidia/sglang:26.01-py3 \
python3 -m sglang.launch_server \
--model-path <hf-repo-id> \
--host 0.0.0.0 \
--port 8000 \
--mem-fraction-static 0.60 \
--max-running-requests 8
当用户需要RAG/工具调用工作流、结构化生成或SGLang特定调度时,使用SGLang。对于普通的高吞吐量OpenAI兼容服务,除非用户要求SGLang,否则优先使用vLLM。
SKU适当的默认值
| 旋钮 | Orin Nano / NX | AGX Orin / Thor |
|---|---|---|
--max-model-len |
4096 |
8192 |
--gpu-memory-utilization |
0.85 |
0.85 |
--tensor-parallel-size |
1 |
1 |
如果服务器在启动时OOM,将--gpu-memory-utilization降低0.05并重新启动(或运行jetson-inference-mem-tune以获取负载感知建议)。
量化偏好(比运行时更重要)
对于vLLM和SGLang,按Jetson系列选择检查点格式:
| Jetson系列 | 首选 | 可接受的备选 |
|---|---|---|
| Thor | NVFP4(当模型/运行时支持时) | W4A16 |
| Orin Nano / NX | W4A16 | AWQ或GPTQ 4位 |
| AGX Orin | W4A16 | AWQ或GPTQ 4位 |
对于llama.cpp和Ollama,改用GGUF模型量化名称:在Orin和Thor上都推荐INT4 / Q4_K_M GGUF,如果内存紧张,选择更小的INT4 GGUF模型。不要将GGUF Q4_K_M称为W4A16/AWQ/GPTQ模型。NVFP4是Thor首选,并针对支持它的运行时进行Thor调优。
VLM模式
VLM使用与LLM相同的流程:相同的容器,相同的vllm serve调用,不同的视觉语言检查点。容器处理图像预处理。对于特定VLM的浏览器UI,使用live-vlm-webui容器;对于LLM或VLM的通用聊天UI,使用指向http://<jetson-ip>:8000/v1的Open WebUI。
不要编造设备容量
在给出服务配方时,不要虚构RAM总数、可用内存值、模型大小、JetPack版本或SKU/变体名称。如果容量很重要,要么运行实时预检(当允许执行时),要么交给jetson-inference-mem-tune/jetson-memory-audit。如果无法获得实时数据,请说明该值未知,并提供保守默认值,而不是引用编造的数字。
预检清单(代理应在运行第3步之前验证)
- [ ] 在Jetson上(
/proc/device-tree/model包含NVIDIA Jetson)。 - [ ]
nvpmodel -q报告可识别的最大性能模式:MAXN或MAXN_*,如MAXN_SUPER。以额定功率命名的模式应报告为警告,除非用户明确确认这是该设备的预期基准模式。 - [ ] 在Thor上,启动前检查是否启用了MIG(
nvidia-smi -L和nvidia-smi mig -lgi)。如果启用了MIG,则警告vLLM/SGLang可能只看到MIG切片或没有CUDA设备。 - [ ] 在具有MIG或显示/摄像头争用的Thor上,使用
sudo lsof /dev/nvidia*检查GPU用户。显示管理器、Xorg/GNOME或nvargus-daemon可能持有GPU设备文件;除非用户明确批准,否则不要停止服务或更改MIG模式。 - [ ] 没有名为
vllm的容器已在运行(docker ps --format '{{.Names}}');否则先执行docker rm -f vllm。 - [ ] Docker暴露NVIDIA运行时(
docker info | grep -i 'runtimes.*nvidia'),或启用GPU的容器可以运行nvidia-smi。 - [ ]
~/.cache/huggingface存在;如果模型受门控,则设置HF_TOKEN。
限制
- 此技能提供服务命令和预检;它不对部署的服务器进行基准测试。
- 诸如
latest的容器标签是可变的。对于发布或合规部署,请固定摘要并将其记录在部署说明中。 - vLLM和SGLang的内存限制仍取决于模型架构、量化、上下文长度和并发请求数。当命令OOM或内存余量很重要时,使用
jetson-inference-mem-tune。 - Thor vLLM需要上游vLLM 0.20+或更新。较旧的上游vLLM镜像可能无法正确支持Thor / SM 11.0。
- Thor SGLang应使用NVIDIA SGLang 26.01或更新版本,其发行说明明确列出支持Jetson Thor。NVIDIA SGLang 26.01包含SGLang 0.5.5.post2。
- 在Thor上,MIG、桌面显示或相机服务可能对容器隐藏完整的GPU。此技能应仅检测和警告;禁用MIG或停止诸如
gdm3或nvargus-daemon的服务需要用户明确批准。 - 仅在目标JetPack上已验证主机原生vLLM/SGLang安装时,才应使用它们。
移交给
jetson-llm-benchmark实际测量部署的服务器。jetson-speculative-decoding通过在上面的vllm serve命令中追加--speculative-config '{...}'添加EAGLE-3 / 草稿模型推测。jetson-inference-mem-tune如果服务器OOM或受内存限制。
来源
Jetson AI Lab — Introduction to GenAI on Jetson: How to Run LLMs and VLMs 和 NVIDIA-AI-IOT GHCR packages。