JetsonLLM服务部署Skill jetson-llm-serve

该技能提供在NVIDIA Jetson(Thor、Orin等)上为大语言模型(LLM)和视觉语言模型(VLM)部署vLLM或SGLang OpenAI兼容服务的完整指南,包括运行时选择、Docker启动命令、MAXN电源配置、量化偏好及预检清单。关键词:Jetson, LLM, VLM, vLLM, SGLang, 服务部署, OpenAI兼容, Docker, Thor, Orin

边缘LLM推理 0 次安装 0 次浏览 更新于 9/6/2026
名称 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世代(thororin)以及模型标识符或本地检查点路径。
  • 仅在模型受门控/私有时使用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 8000docker 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

要检测镜像标签对应的芯片时代:

  1. 导入检测器,以便导出在shell中保留:
    . skills/jetson-diagnostic/scripts/detect_jetson.sh
    
  2. 检查JETSON_GENERATIONthororin),并从上面的表中选择匹配的运行时路径。
  3. 使用JETSON_PRODUCT_LINE获取更细的桶,例如thor-agxorin-nanoJETSON_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报告可识别的最大性能模式:MAXNMAXN_*,如MAXN_SUPER。以额定功率命名的模式应报告为警告,除非用户明确确认这是该设备的预期基准模式。
  • [ ] 在Thor上,启动前检查是否启用了MIG(nvidia-smi -Lnvidia-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或停止诸如gdm3nvargus-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 VLMsNVIDIA-AI-IOT GHCR packages