在 Jetson 上部署本地模型推理服务
说明如何在 Jetson 上用 Ollama 启动开机服务,或按 Orin 与 Thor 选择 vLLM 预构建容器,并检查服务、存储、内存与量化兼容性。
在 Jetson 上,本地部署大模型可以先走 Ollama:按 Jetson AI Lab 的 Ollama 教程,官方安装脚本会安装支持 CUDA 的版本,并创建开机执行 ollama serve 的服务。安装后按 Ollama 的 Linux 文档检查 nvidia-smi、ollama -v 与 systemd 状态;模型标识、下载方式和调用端点仍要按所选模型的当前官方文档确定。
本地部署大模型前要核对什么
按 Ollama 教程列出的兼容设备和存储要求,受支持的设备包括 Jetson AGX Thor、Jetson AGX Orin 64GB、Jetson AGX Orin 32GB、Jetson Orin NX 16GB 和 Jetson Orin Nano 8GB;页面同时列出 JetPack 5(L4T r35.x)与 JetPack 6(L4T r36.x)。教程强烈建议使用 NVMe SSD,因为 Ollama 容器镜像约需 7GB,此外还要预留模型存储空间。
不要只看设备是否在支持列表中,还要估算所选模型及其量化版本需要多少内存。内存不足时,应换用更小的模型,或先按后面的内存优化步骤处理。
用 Ollama 完成安装和服务检查
按 Ollama Linux 安装流程,先执行官方安装脚本:
curl -fsSL https://ollama.com/install.sh | sh
随后检查服务状态和命令行版本:
sudo systemctl status ollama
ollama -v
如果需要显式启动服务,文档列出的命令是:
sudo systemctl start ollama
systemctl status 用于确认 ollama 服务是否处于运行状态,ollama -v 用于执行安装后的基础检查。两者成功并不等于某个模型已经下载或加载;具体模型仍需通过该模型当前的 Ollama 文档配置,本文不拼造通用的模型标识或 API endpoint。
需要生产式服务时使用 vLLM
按 NVIDIA 的 Jetson 大模型工作流说明,Ollama 面向快速上手和动态试用模型,vLLM 面向生产式服务和 Jetson 上的性能场景。NVIDIA 不建议自行在 Jetson 上构建 vLLM,而是提供 Orin 与 Thor 对应的预构建镜像:
ghcr.io/nvidia-ai-iot/vllm:latest-jetson-orin
ghcr.io/nvidia-ai-iot/vllm:latest-jetson-thor
Jetson Orin 的文档启动示例如下:
docker run --rm -it --runtime nvidia --network host \
-v ~/.cache/huggingface:/root/.cache/huggingface \
ghcr.io/nvidia-ai-iot/vllm:latest-jetson-orin
这个示例使用 --runtime nvidia、host networking,并把 Hugging Face 缓存映射到容器中的 /root/.cache/huggingface。示例本身没有给出适用于所有模型的启动参数或固定 endpoint,因此应根据所选 checkpoint 和当前 vLLM 文档继续配置,不能仅凭容器启动就认定模型推理已经可用。
量化和模型内存如何匹配
vLLM 量化文档说明,量化通过牺牲部分模型精度换取更小的内存占用,从而让模型适配更多设备。NVIDIA 的 Jetson 工作流进一步建议:运行 4-bit 量化模型时,如果存在 W4A16 checkpoint,应优先选择;Jetson Thor 上如果模型提供 NVFP4,则优先使用 NVFP4。
量化格式解决的是内存占用问题,并不代表任意模型都能装入任意 Jetson。选型时仍要分别核对模型提供的量化版本、硬件支持情况和实际内存需求,避免只看到“4-bit”就直接估算容量。
常见出错点
- 服务正常但没有推理响应:先确认 systemd 服务状态,再检查模型是否已经按其官方文档配置。安装成功与服务可用是两件事。
- 镜像选错:vLLM 应区分
latest-jetson-orin和latest-jetson-thor,不要只复制命令而忽略设备代际。 - 模型无法加载:先确认模型大小与可用内存;内存不足时缩小模型规模,比反复重启服务更直接。
对于配备 8GB 内存的 Jetson Orin Nano,Jetson RAM 优化文档建议尽可能释放内存。关闭 Ubuntu 桌面图形环境可释放约 800 MB,并将默认启动目标设置为 multi-user.target:
sudo systemctl set-default multi-user.target
这条命令会让系统默认不启动桌面环境,执行前应确认设备能够以无桌面的方式维护。
针对大模型,同一文档建议关闭 ZRAM,并优先在 NVMe SSD 上创建 swap 文件:
sudo systemctl disable nvzramconfig
sudo fallocate -l 16G /ssd/16GB.swap
sudo mkswap /ssd/16GB.swap
sudo swapon /ssd/16GB.swap
这些命令假定 /ssd 已存在、可写并对应准备好的 NVMe 存储路径;路径不存在时不要直接执行。
这些步骤依据正文链接的官方文档整理;使用前应按当前版本重新核对。