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

Jetson Orin NX 部署 Ollama 及 Llama 3.2 模型

介绍在 NVIDIA Jetson Orin NX(JetPack 5)上部署 Ollama 并运行 Llama 3.2 模型的完整流程。内容包括环境检查、Ollama 安装配置、GPU 加速验证、模型拉取与推理、HTTP API 调用示例以及性能优化方案。通过系统服务配置实现开机自启,并结合机器人导航场景展示实际应用,适合边缘计算设备上的本地大模型部署参考。

灭霸发布于 2026/4/5更新于 2026/5/2229 浏览

Jetson Orin NX 上部署 Ollama + Llama 3.2

前言

随着大语言模型(LLM)的快速发展,如何在边缘设备上高效部署和运行这些模型成为了热门话题。NVIDIA Jetson Orin NX 作为一款强大的边缘 AI 计算平台,凭借其 100 TOPS 的 AI 算力和 16GB 统一内存,为边缘端 LLM 推理提供了可能。

本文将详细介绍如何在 Jetson Orin NX(JetPack 5 / Ubuntu 20.04)上部署 Ollama,并通过 GPU 加速运行 Meta 最新的 Llama 3.2 模型。我们将从零开始,一步步搭建一个完整的本地大模型推理平台。

💡 重要提示: 虽然 Orin NX 具备一定的 AI 算力,但与桌面级 GPU(如 RTX 3090)相比,其算力和内存带宽仍有较大差距。因此,在边缘端部署时,我们需要合理选择模型规模、优化推理参数,并做好性能预期管理。

一、环境准备与系统要求

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

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Vue 3 最佳实践总结与开发技巧
  • GitNexus:纯本地代码知识图谱与可视化关系网工具
  • Git LFS 安装教程:Linux、macOS 与 Windows 全平台指南
  • Mac Mini 本地部署 OpenClaw 智能体实战指南
  • Mac 抹除重装卡在激活锁的两种解锁方案
  • 2026年,我整理了中国 200 多家机器人(具身智能)公司名单
  • AI 提示词工程:原理、策略与精通之道
  • OpenClaw 大龙虾机器人安装与配置指南
  • MySQL 表操作及查询
  • 银河麒麟服务器版 Nginx Web 服务部署实战
  • AgentScope-Java 配置参数详解附录 B
  • 工作中常用的几种设计模式实战
  • 双指针算法进阶:从三角形计数到四数之和
  • 基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
  • Whisper-turbo 速度实测:云端 GPU 7 倍加速
  • Virt-A-Mate 虚拟实境交互软件技术特性解析
  • ChatGPT 插件生态爆发:自动写书玩法与插件知识库构建方法
  • Linux 常用命令大全:系统管理与文件操作指南
  • 前端可视化界面开发:基于 Vue 构建 VibeThinker 交互平台
  • Java Spring 框架初识与 Maven 项目创建指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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