跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Jetson Orin NX 部署 Ollama 与 Llama 3.2

介绍在 NVIDIA Jetson Orin NX(JetPack 5)上部署 Ollama 并运行 Llama 3.2 模型的完整流程。内容包括环境检查、Ollama 专用版安装、GPU 验证、模型拉取与推理、HTTP API 调用示例以及性能优化和 systemd 服务配置。通过合理选择量化模型和优化功耗模式,可实现边缘端的高效本地大模型推理。

微码行者发布于 2026/4/6更新于 2026/9/1185 浏览

Jetson Orin NX 上部署 Ollama + Llama 3.2

一、环境准备与系统要求

1.1 硬件要求
组件要求推荐配置
设备型号Jetson Orin NXOrin NX 16GB
内存≥8GB16GB
存储≥32GBNVMe SSD 256GB+
系统JetPack 5.xJetPack 5.1.2+
网络可访问 GitHub配置代理(可选)
1.2 软件要求
  • 操作系统: Ubuntu 20.04 LTS(L4T)
  • JetPack 版本: 5.0 或更高
  • CUDA: 11.4+(JetPack 自带)
  • cuDNN: 8.6+(JetPack 自带)
1.3 模型存储空间估算
模型名称量化版本模型大小推荐内存
Llama 3.2 1BQ4_0~1GB4GB+
Llama 3.2 3BQ4_0~2GB8GB+
Llama 3.2 3BQ8_0~3.5GB12GB+

📌 建议: 初学者建议从 1b-instruct-q4_0 开始,验证流程后再尝试更大的模型。


二、系统环境检查

在开始安装前,让我们先检查系统环境是否满足要求。

2.1 检查 JetPack 版本
# 查看 L4T 版本
cat /etc/nv_tegra_release
# 查看系统信息
uname -a
lsb_release -a
# 查看 JetPack 版本(如果已安装 SDK Manager)
apt list --installed | grep nvidia-jetpack

预期输出示例:

# R35 (release), REVISION: 3.1, GCID: 32827747, BOARD: t186ref, EABI: aarch64 Ubuntu 20.04.6 LTS 
2.2 验证 GPU 状态

Jetson 设备使用 tegrastats 代替 nvidia-smi:

# 实时监控 GPU 状态
sudo tegrastats
# 查看 GPU 信息
sudo jetson_clocks --show

关键指标说明:

  • GR3D_FREQ:GPU 频率和使用率
  • RAM:内存使用情况
  • SWAP:交换分区使用情况
  • EMC_FREQ:内存频率
2.3 存储空间规划
# 查看磁盘空间
df -h
# 查看块设备
lsblk
# 如果有 NVMe,建议使用 ls /dev/nvme*

💾 最佳实践: 强烈建议将模型文件存储在 NVMe SSD 上,避免使用 eMMC 或 SD 卡,以获得更好的 I/O 性能。


三、安装 Ollama(JetPack 5 专用版)

3.1 安装目录规划

为了保持系统整洁,我们采用用户目录安装方式:

# 创建安装目录结构
mkdir -p ~/apps/ollama/{bin,lib,tmp}
# 创建模型存储目录(建议使用 NVMe)
sudo mkdir -p /data/ollama/models
sudo chown $USER:$USER /data/ollama/models
# 或使用用户目录(空间充足时)
mkdir -p ~/.ollama/models
3.2 下载 Ollama JetPack 5 版本
# 设置代理(如需要)
export HTTP_PROXY=http://127.0.0.1:你的端口
export HTTPS_PROXY=http://127.0.0.1:你的端口
# 获取最新版本号
TAG=$(curl -fsSL https://api.github.com/repos/ollama/ollama/releases/latest | grep -m1 '"tag_name"' | cut -d'"' -f4)
echo "Latest version: $TAG"
# 下载 JetPack 5 专用版本
curl -fL "https://github.com/ollama/ollama/releases/download/${TAG}/ollama-linux-arm64-jetpack5.tgz" \
    -o ~/apps/ollama/tmp/ollama-jetpack5.tgz
3.3 安装 Ollama
# 解压文件
cd ~/apps/ollama/tmp
tar -xzf ollama-jetpack5.tgz
# 安装二进制文件
mv bin/ollama ~/apps/ollama/bin/
chmod +x ~/apps/ollama/bin/ollama
# 安装运行库(重要!)
cp -r lib/* ~/apps/ollama/lib/
# 验证安装
~/apps/ollama/bin/ollama --version

成功输出示例:

ollama version 0.4.8 

四、配置运行环境

4.1 配置环境变量
# 当前会话生效
export PATH="$HOME/apps/ollama/bin:$PATH"
export OLLAMA_MODELS="/data/ollama/models"
export OLLAMA_HOST="127.0.0.1:11434"
# 可选:限制并发和上下文长度(边缘设备推荐)
export OLLAMA_NUM_PARALLEL=1
export OLLAMA_CONTEXT_LENGTH=2048
4.2 永久保存配置
# 添加到 .bashrc
cat >> ~/.bashrc <<'EOF'
# Ollama Configuration
export PATH="$HOME/apps/ollama/bin:$PATH"
export OLLAMA_MODELS="/data/ollama/models"
export OLLAMA_HOST="127.0.0.1:11434"
export OLLAMA_NUM_PARALLEL=1
export OLLAMA_CONTEXT_LENGTH=2048
EOF
# 立即生效
source ~/.bashrc

五、启动 Ollama 服务与 GPU 验证

5.1 启动服务
# 启动 Ollama 服务
ollama serve
5.2 验证 GPU 支持

成功启动的关键标志:

time=2024-12-15T10:00:00.000+08:00 level=INFO source=gpu.go:199 msg="detected GPU" library=cuda compute=8.7 driver=11.4 name="NVIDIA Orin" total="15.7 GiB" available="14.2 GiB"

❌ 如果看到 library=cpu 说明 GPU 未启用,请检查:是否安装了 lib 目录,是否使用了正确的 jetpack5 版本,CUDA 环境是否正常。

5.3 GPU 使用监控

新开一个终端,运行:

# 实时监控 GPU 使用情况
sudo tegrastats
# 查看显存使用
free -h

六、部署 Llama 3.2 模型

6.1 模型选择策略

对于 Jetson Orin NX,推荐按以下顺序尝试:

  1. 入门级:llama3.2:1b-instruct-q4_0 (~1GB,速度最快)
  2. 平衡型:llama3.2:3b-instruct-q4_0 (~2GB,效果更好)
  3. 进阶型:llama3.2:3b-instruct-q8_0 (~3.5GB,精度更高)
6.2 拉取模型
# 保持 ollama serve 运行,新开终端
# 拉取 1B 模型(推荐首选)
ollama pull llama3.2:1b-instruct-q4_0
# 查看下载进度和信息
ollama list

下载进度示例:

pulling manifest
pulling 1890919b6184... 100% ████████████████ 976 MB
pulling a70ff7e570d5... 100% ████████████████ 342 B
pulling 5ad0a1049874... 100% ████████████████ 110 B
verifying sha256 digest
writing manifest
success
6.3 运行模型
# 交互式对话
ollama run llama3.2:1b-instruct-q4_0
# 示例对话
>>> 介绍一下 NVIDIA Jetson 平台
6.4 性能测试
# 简单性能测试
time ollama run llama3.2:1b-instruct-q4_0 "写一个 Python 快速排序函数"
# 批量测试
echo "What is AI?" | ollama run llama3.2:1b-instruct-q4_0

七、HTTP API 接口调用

Ollama 提供 RESTful API,方便集成到各种应用中。

7.1 生成接口 /api/generate
# 非流式响应
curl -X POST http://127.0.0.1:11434/api/generate \
    -H 'Content-Type: application/json' \
    -d '{ "model": "llama3.2:1b-instruct-q4_0", "prompt": "解释什么是边缘计算", "stream": false, "options": { "temperature": 0.7, "top_p": 0.9, "max_tokens": 200 } }' | jq
7.2 对话接口 /api/chat
# 多轮对话示例
curl -X POST http://127.0.0.1:11434/api/chat \
    -H 'Content-Type: application/json' \
    -d '{ "model": "llama3.2:1b-instruct-q4_0", "messages": [ {"role": "system", "content": "你是一个专业的机器人导航助手"}, {"role": "user", "content": "如何实现语义地标导航?"} ], "stream": false, "options": { "temperature": 0.5 } }' | jq
7.3 流式响应
# Python 示例:流式响应
import requests
import json

url = 'http://127.0.0.1:11434/api/generate'
data = {
    'model': 'llama3.2:1b-instruct-q4_0',
    'prompt': '写一首关于机器人的诗',
    'stream': True
}
response = requests.post(url, json=data, stream=True)
for line in response.iter_lines():
    if line:
        chunk = json.loads(line)
        print(chunk['response'], end='', flush=True)

八、性能优化与调优

8.1 Jetson 功耗模式优化
# 查看当前功耗模式
sudo nvpmodel -q
# 切换到最高性能模式(MODE_15W_6CORE)
sudo nvpmodel -m 0
# 锁定最高频率
sudo jetson_clocks
# 查看当前频率设置
sudo jetson_clocks --show
8.2 内存和上下文优化
# 限制上下文长度(减少内存占用)
export OLLAMA_CONTEXT_LENGTH=1024
# 限制并发请求
export OLLAMA_NUM_PARALLEL=1
# 设置模型保持时间
export OLLAMA_KEEP_ALIVE=5m
8.3 存储优化
# 清理未使用的模型
ollama rm model_name
# 查看模型占用空间
du -sh $OLLAMA_MODELS/*
# 定期清理缓存
rm -rf $OLLAMA_MODELS/.cache/*
8.4 性能监控脚本
#!/bin/bash
# monitor_ollama.sh
echo "Monitoring Ollama Performance..."
echo "================================"
while true; do
    clear
    echo "$(date '+%Y-%m-%d %H:%M:%S')"
    echo "--------------------------------"
    # GPU 状态
    echo "GPU Status:"
    sudo tegrastats | head -n1
    # 内存使用
    echo -e "\nMemory Usage:"
    free -h | grep -E "^Mem|^Swap"
    # Ollama 进程
    echo -e "\nOllama Process:"
    ps aux | grep -E "ollama|PID" | grep -v grep
    # 模型列表
    echo -e "\nLoaded Models:"
    ollama list 2>/dev/null || echo "Service not running"
    sleep 5
done

九、常见问题与解决方案

9.1 问题诊断清单
问题可能原因解决方案
只显示 CPU 推理未安装 lib 目录重新解压并复制 lib 文件夹
内存不足错误模型过大/上下文过长减小 CONTEXT_LENGTH 或使用更小模型
推理速度慢功耗模式限制执行 sudo jetson_clocks
模型下载失败网络问题配置代理或使用镜像源
端口被占用11434 已被使用修改 OLLAMA_HOST 端口
9.2 调试命令集
# 检查 CUDA 是否可用
python3 -c "import torch; print(torch.cuda.is_available())"
# 查看 Ollama 日志
journalctl -u ollama --no-pager -n 50
# 测试 API 连接
curl http://127.0.0.1:11434/api/tags
# 强制使用 GPU
export CUDA_VISIBLE_DEVICES=0
9.3 性能问题排查
# 1. 检查温度节流
cat /sys/class/thermal/thermal_zone*/temp
# 2. 查看内存碎片
cat /proc/buddyinfo
# 3. 检查 I/O 性能
iostat -x 1
# 4. 分析系统瓶颈
htop iotop

十、系统服务配置

10.1 创建 systemd 服务
# 创建用户级服务
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/ollama.service <<'EOF'
[Unit]
Description=Ollama AI Model Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
Restart=always
RestartSec=3
TimeoutStartSec=300
# 环境变量
Environment="PATH=%h/apps/ollama/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="OLLAMA_MODELS=/data/ollama/models"
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_KEEP_ALIVE=5m"
Environment="OLLAMA_NUM_PARALLEL=1"
Environment="OLLAMA_CONTEXT_LENGTH=2048"
# 启动命令
ExecStart=%h/apps/ollama/bin/ollama serve
# 资源限制
LimitNOFILE=65536
LimitMEMLOCK=infinity

[Install]
WantedBy=default.target
EOF
10.2 启用服务
# 重载服务配置
systemctl --user daemon-reload
# 启用开机自启
systemctl --user enable ollama
# 启动服务
systemctl --user start ollama
# 查看状态
systemctl --user status ollama
# 查看日志
journalctl --user -u ollama -f
10.3 设置用户会话持久化
# 启用 linger(需要 sudo 权限)
sudo loginctl enable-linger $USER
# 验证
loginctl show-user $USER | grep Linger

十一、实战应用场景

11.1 机器人语义导航集成
#!/usr/bin/env python3
""" 机器人语义地标导航示例 集成 Ollama 进行自然语言理解 """
import json
import requests
from typing import Dict, List

class SemanticNavigator:
    def __init__(self, ollama_url="http://127.0.0.1:11434"):
        self.ollama_url = ollama_url
        self.model = "llama3.2:1b-instruct-q4_0"

    def parse_navigation_intent(self, user_input: str) -> Dict:
        """解析用户导航意图"""
        prompt = f"""你是一个机器人导航助手。分析以下指令并返回 JSON 格式:{{"action": "navigate/stop/pause", "landmark": "具体地标名称", "confidence": 0.0-1.0}} 用户指令:{user_input} 只返回 JSON,不要其他解释。"""
        response = requests.post(f"{self.ollama_url}/api/generate", json={"model": self.model, "prompt": prompt, "stream": False, "options": {"temperature": 0.3}})
        try:
            result = response.json()['response']
            return json.loads(result)
        except:
            return {"action": "unknown", "landmark": None, "confidence": 0.0}

    def get_path_description(self, start: str, end: str) -> str:
        """生成路径描述"""
        prompt = f"用一句话描述从{start}到{end}的路径。"
        response = requests.post(f"{self.ollama_url}/api/generate", json={"model": self.model, "prompt": prompt, "stream": False, "options": {"temperature": 0.5, "max_tokens": 50}})
        return response.json()['response']

# 使用示例
if __name__ == "__main__":
    nav = SemanticNavigator()
    # 测试意图解析
    test_commands = ["带我去充电桩", "停止移动", "去会议室开会"]
    for cmd in test_commands:
        result = nav.parse_navigation_intent(cmd)
        print(f"指令:{cmd}")
        print(f"解析:{json.dumps(result, ensure_ascii=False)}")
        print("-" * 40)
11.2 边缘端优化建议
  1. 模型选择优先级
    • 任务简单 → 1B 模型
    • 需要推理 → 3B 模型
    • 实时要求 → Q4 量化
    • 精度要求 → Q8 量化
  2. 性能优化技巧
    • 使用结构化提示词
    • 限制输出长度
    • 缓存常见查询
    • 异步处理非关键任务

系统架构设计

感知层 (Camera/Lidar)
↓
场景理解 (CV/SLAM)
↓
语义提取 (JSON)
↓
LLM 推理 (Ollama)
↓
决策规划 (Structured Output)
↓
执行控制 (ROS Actions)

总结

通过本教程,我们成功在 Jetson Orin NX 上部署了 Ollama + Llama 3.2 的 GPU 加速推理环境。关键要点包括:

📊 性能参考
  • 1B 模型: 首 token 延迟 ~2-3 秒,生成速度 ~10-15 tokens/s
  • 3B 模型: 首 token 延迟 ~5-8 秒,生成速度 ~5-8 tokens/s
  • 功耗: 满载约 15W,待机约 5W

相关资源:

  • Ollama 官方文档
  • NVIDIA Jetson 开发者论坛
  • Llama 模型仓库

目录

  1. Jetson Orin NX 上部署 Ollama + Llama 3.2
  2. 一、环境准备与系统要求
  3. 1.1 硬件要求
  4. 1.2 软件要求
  5. 1.3 模型存储空间估算
  6. 二、系统环境检查
  7. 2.1 检查 JetPack 版本
  8. 查看 L4T 版本
  9. 查看系统信息
  10. 查看 JetPack 版本(如果已安装 SDK Manager)
  11. R35 (release), REVISION: 3.1, GCID: 32827747, BOARD: t186ref, EABI: aarch64 Ubuntu 20.04.6 LTS
  12. 2.2 验证 GPU 状态
  13. 实时监控 GPU 状态
  14. 查看 GPU 信息
  15. 2.3 存储空间规划
  16. 查看磁盘空间
  17. 查看块设备
  18. 如果有 NVMe,建议使用 ls /dev/nvme*
  19. 三、安装 Ollama(JetPack 5 专用版)
  20. 3.1 安装目录规划
  21. 创建安装目录结构
  22. 创建模型存储目录(建议使用 NVMe)
  23. 或使用用户目录(空间充足时)
  24. 3.2 下载 Ollama JetPack 5 版本
  25. 设置代理(如需要)
  26. 获取最新版本号
  27. 下载 JetPack 5 专用版本
  28. 3.3 安装 Ollama
  29. 解压文件
  30. 安装二进制文件
  31. 安装运行库(重要!)
  32. 验证安装
  33. 四、配置运行环境
  34. 4.1 配置环境变量
  35. 当前会话生效
  36. 可选:限制并发和上下文长度(边缘设备推荐)
  37. 4.2 永久保存配置
  38. 添加到 .bashrc
  39. Ollama Configuration
  40. 立即生效
  41. 五、启动 Ollama 服务与 GPU 验证
  42. 5.1 启动服务
  43. 启动 Ollama 服务
  44. 5.2 验证 GPU 支持
  45. 5.3 GPU 使用监控
  46. 实时监控 GPU 使用情况
  47. 查看显存使用
  48. 六、部署 Llama 3.2 模型
  49. 6.1 模型选择策略
  50. 6.2 拉取模型
  51. 保持 ollama serve 运行,新开终端
  52. 拉取 1B 模型(推荐首选)
  53. 查看下载进度和信息
  54. 6.3 运行模型
  55. 交互式对话
  56. 示例对话
  57. 6.4 性能测试
  58. 简单性能测试
  59. 批量测试
  60. 七、HTTP API 接口调用
  61. 7.1 生成接口 /api/generate
  62. 非流式响应
  63. 7.2 对话接口 /api/chat
  64. 多轮对话示例
  65. 7.3 流式响应
  66. Python 示例:流式响应
  67. 八、性能优化与调优
  68. 8.1 Jetson 功耗模式优化
  69. 查看当前功耗模式
  70. 切换到最高性能模式(MODE15W6CORE)
  71. 锁定最高频率
  72. 查看当前频率设置
  73. 8.2 内存和上下文优化
  74. 限制上下文长度(减少内存占用)
  75. 限制并发请求
  76. 设置模型保持时间
  77. 8.3 存储优化
  78. 清理未使用的模型
  79. 查看模型占用空间
  80. 定期清理缓存
  81. 8.4 性能监控脚本
  82. monitor_ollama.sh
  83. 九、常见问题与解决方案
  84. 9.1 问题诊断清单
  85. 9.2 调试命令集
  86. 检查 CUDA 是否可用
  87. 查看 Ollama 日志
  88. 测试 API 连接
  89. 强制使用 GPU
  90. 9.3 性能问题排查
  91. 1. 检查温度节流
  92. 2. 查看内存碎片
  93. 3. 检查 I/O 性能
  94. 4. 分析系统瓶颈
  95. 十、系统服务配置
  96. 10.1 创建 systemd 服务
  97. 创建用户级服务
  98. 环境变量
  99. 启动命令
  100. 资源限制
  101. 10.2 启用服务
  102. 重载服务配置
  103. 启用开机自启
  104. 启动服务
  105. 查看状态
  106. 查看日志
  107. 10.3 设置用户会话持久化
  108. 启用 linger(需要 sudo 权限)
  109. 验证
  110. 十一、实战应用场景
  111. 11.1 机器人语义导航集成
  112. 使用示例
  113. 11.2 边缘端优化建议
  114. 总结
  115. 📊 性能参考

更多推荐文章

查看全部
  • 用 Python 把 CSV 导入 Neo4j 的实操记录
  • CentOS 系统安装 libwebkit2gtk-4.1-0 依赖库指南
  • Windows 系统部署 RabbitMQ 及 Erlang 环境配置指南
  • Rust 核心基础数据类型与变量系统
  • Python 魔法方法与数据模型深度解析
  • 节点小宝 4.0 macOS 客户端正式发布
  • ChatGPT 插件自动写书实战及插件知识库构建方法
  • FFmpeg C++ 音频混音器实现
  • VS Code 关闭 GitHub Copilot 代码补全
  • Linux 命令行核心指令与权限控制指南
  • 软考架构知识点:未来信息综合技术(下)
  • LINUX DO 社区注册指南:填写自述与加入缘由
  • Windows 系统安装与配置 Neo4j 图数据库指南
  • OpenClaw 入门指南:AI Agent 本地部署与实践
  • 深入 llama.cpp:llama-server 从命令行到 HTTP Server
  • Java面向对象入门:类、对象与封装详解
  • Spring Boot 电影院后台管理系统实战指南
  • 利用 B 站评论区数据构建大语言模型微调数据集
  • 5 款免费 AI 降重与去痕工具推荐
  • LLM 模板注册机制与 QwenTemplate 源码解析

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online