┌─────────────────────────────────────────┐
│           应用层 (你写的代码)             │  ← 你的 Python/C++ 程序
├─────────────────────────────────────────┤
│         深度学习框架 (PyTorch/TF)         │  ← 模型训练和推理
├─────────────────────────────────────────┤
│    CUDA / cuDNN / TensorRT (加速库)      │  ← GPU 加速计算
├─────────────────────────────────────────┤
│         JetPack SDK (软件包集合)          │  ← 核心:驱动 + 库 + 系统
├─────────────────────────────────────────┤
│       Ubuntu 操作系统 (Linux内核)         │  ← 底层系统
├─────────────────────────────────────────┤
│      NVIDIA Jetson Thor (硬件)           │  ← 你的开发板
└─────────────────────────────────────────┘

参考:1. 小白之——Jetson AGX Orin运行环境安装与部署教程:Anaconda, Jetpack,jtop,CUDA, CUDNN,pytorch,torchvision_jetson agx orin pytorch cuda cudnn-CSDN博客

一、基础环境:JetPack 与系统配置

1.1 安装 JetPack SDK

Jetson Thor 默认搭载 Ubuntu 24.04,推荐使用 JetPack 7.0+。JetPack 包含了 CUDA、cuDNN、TensorRT 等核心组件。

sudo apt update
sudo apt install nvidia-jetpack

安装完成后,验证 CUDA 是否可用:

nvcc --version
nvidia-smi

1.2 配置 CUDA 环境变量

安装后 nvcc 可能找不到,需要手动添加 PATH:

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH

永久生效(写入 ~/.bashrc):

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

1.3 安装监控工具 jtop(jetson-stats)

jtop 是 Jetson 设备常用的硬件监控工具。

安装方式:推荐使用 pipx 安装,避免污染系统 Python 环境。

# 安装 pipx
sudo apt install pipx
pipx ensurepath
安装 jetson-stats
pipx install jetson-stats

配置为系统服务

# 使用绝对路径安装服务(sudo 环境下 PATH 可能不包含 ~/.local/bin)
sudo /home/zzc/.local/bin/jtop --install-service
sudo systemctl daemon-reload
sudo systemctl enable jtop.service
sudo systemctl restart jtop.service

运行

jtop
# 若提示服务未激活,检查服务状态
sudo systemctl status jtop.service

踩坑sudo jtop 提示找不到命令,因为 sudo 的 PATH 不包含用户目录。解决:使用绝对路径或修改 sudo visudosecure_path

pipx install jetson-stats installed package jetson-stats 7.2.0, installed using Python 3.12.3 These apps are now globally available - jetson_config - jetson_release - jetson_swap - jtop ⚠️ Note: '/home/zzc/.local/bin' is not on your PATH environment variable. These apps will not be globally accessible until your PATH is updated. Run `pipx ensurepath` to automatically add it, or manually modify your PATH in your shell's config file (i.e. ~/.bashrc). done! ✨ 🌟 ✨ (base) zzc@zzc:~/Downloads$ jtop bash: jtop: command not found

安装成功了,但现在系统还不知道 jtop 命令在哪里,因为它被安装在了一个还没有加入系统 PATH 的目录里。

错误信息已经提示得很清楚了:/home/zzc/.local/bin 不在你的 PATH 环境变量中。

⚙️ 解决方法

运行 pipx 推荐的命令,让它自动帮你把路径加入 PATH:

bash

pipx ensurepath

执行后,它会自动修改你的 ~/.bashrc 配置文件。请关闭当前终端,然后重新打开一个新终端,再输入 jtop 就可以正常工作了。

另外:

在运行 sudo /home/zzc/.local/bin/jtop --install-service 时,安装脚本自动生成了服务文件。但它错误地假设 jtop 被安装在 /usr/local/bin/,而实际上 pipx 把它安装到了 ~/.local/bin/。这是 jetson-stats 在通过 pipx 安装时的一个已知小缺陷

1.4 查看 JetPack 版本

apt show nvidia-jetpack
# 或
cat /etc/nv_tegra_release

踩坑:安装完成后,我已经完全安装了sudo apt install nvidia-jetpack,但是在运行下面命令仍然出错,bash: nvcc: command not found,解决办法:

  1. 打开配置文件:在终端中输入以下命令,编辑你的用户配置文件 ~/.bashrc

    bash

    nano ~/.bashrc
  2. 添加 Anaconda 路径:在文件的末尾添加下面这行。请注意,如果你的安装目录不是默认的 ~/anaconda3,请替换成你实际的安装路径。

    bash

    export PATH="~/anaconda3/bin:$PATH"
  3. 保存并退出:按 Ctrl+O,回车保存,再按 Ctrl+X 退出 nano 编辑器。

  4. 使配置生效:运行以下命令,让刚才的修改立即生效:

    bash

    source ~/.bashrc

二、Python 环境管理

2.0 anaconda环境安装

通过官网下载anaconda的arm版本,本地安装。

出现无法找到conda命令的错误,同样是环境变量问题。

2.1 Conda 替代方案(ARM 架构)

官方 Anaconda 不支持 ARM (aarch64),推荐使用 MiniforgeArchiconda

# 下载 Miniforge (aarch64)
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
chmod +x Miniforge3-Linux-aarch64.sh
./Miniforge3-Linux-aarch64.sh
# 按提示安装,默认路径 ~/miniforge3

2.2 Conda 换清华源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes

2.3 Pip 换清华源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

2.4 区分系统 Python 与 Conda Python

  • 系统 Python/usr/bin/python3(JetPack 依赖)

  • Conda Python~/miniforge3/bin/python3(用户环境)

终端提示符 (base) 表示 Conda 环境已激活。使用 conda deactivate 可退出。


三、安装 Ollama 本地大模型框架

注意:事实证明,从ollama官网下载的版本对其本身的权重文件具有很好的适配型。作者从github镜像下载的版本,安装后无法兼容最新的qwen3.5/3.6系列,最后又重新利用官网进行安装ollama才解决。

ollama github地址:GitHub - ollama/ollama: Get up and running with Kimi-K2.6, GLM-5.2, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models. · GitHub

llama.cpp地址:GitHub - ggml-org/llama.cpp: LLM inference in C/C++ · GitHub

3.1 问题:官方安装脚本太慢

直接执行 curl -fsSL https://ollama.com/install.sh | sh 在国内下载极慢,且可能因网络中断失败。

3.2 解决方案:手动下载安装(ollama | newbe

步骤1:下载 ARM64 安装包

使用国内镜像加速下载:

curl -L -o ollama-linux-arm64.tar.zst https://ghproxy.net/https://github.com/ollama/ollama/releases/download/v0.32.6/ollama-linux-arm64.tar.zst

如果 ghproxy.net 不可用,可尝试 ghp.cighproxy.homeboyc.cn 等镜像。实际均无效,我用的魔搭社区ollama | newbe手动下载到本地

步骤2:解压并安装

# 安装 zstd 解压工具
sudo apt install zstd -y
解压到 /usr 目录(注意:新版本是 .tar.zst)
sudo tar -C /usr -xvf ollama-linux-arm64.tar.zst

步骤3:创建 ollama 用户

sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama

步骤4:创建 systemd 服务

sudo tee /etc/systemd/system/ollama.service > /dev/null <

步骤5:验证安装

sudo systemctl status ollama
ollama --version

3.3 踩坑:ollama 命令 Permission denied

如果运行 ollama --version 提示 Permission denied,是因为 /usr/local/bin/ollama 可能是旧的无效文件。

# 删除旧文件
sudo rm -f /usr/local/bin/ollama
# 清除 shell 缓存
hash -r
# 再次运行,应使用 /usr/bin/ollama
ollama --version

3.4 迁移 ollama 到 /usr/local/bin(可选)

sudo mv /usr/bin/ollama /usr/local/bin/ollama
sudo sed -i 's|/usr/bin/ollama|/usr/local/bin/ollama|g' /etc/systemd/system/ollama.service
sudo systemctl daemon-reload
sudo systemctl restart ollama
hash -r
ollama --version

四、编译 llama-server(Ollama 核心组件)

4.1 问题:运行模型报错 llama-server not found

运行 ollama run qwen3:30b 报错:

Error: 500 Internal Server Error: llama-server binary not found

4.2 根本原因

Ollama 依赖 llama-server 组件执行模型推理,但手动安装的版本未包含该组件,需从源码编译。

4.3 解决方案:从 Ollama 源码编译(推荐)/实际我是从llama的github源码下载编译的。

步骤1:克隆 Ollama 源码(使用镜像加速)

git clone https://bgithub.xyz/ollama/ollama.git ~/ollama
cd ~/ollama
git submodule update --init --recursive

bgithub.xyz 不可用,可换用 gitclone.com 或官方源。

步骤2:进入 llama.cpp 子模块编译

cd llm/llama.cpp
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DLLAMA_CUDA=ON -DLLAMA_CUDA_ARCHITECTURES=87
cmake --build . --config Release -j $(nproc)

-DLLAMA_CUDA_ARCHITECTURES=87 针对 Jetson Thor (sm_87) 优化。

步骤3:安装编译产物

sudo mkdir -p /usr/local/lib/ollama
sudo cp bin/llama-server /usr/local/lib/ollama/
sudo cp bin/*.so* /usr/local/lib/
sudo ldconfig

步骤4:重启 Ollama 服务

sudo systemctl restart ollama

步骤5:测试

ollama run qwen3:30b

4.4 踩坑:libllama-common.so.0 找不到

启动时可能提示:

/usr/local/lib/ollama/llama-server: error while loading shared libraries: libllama-common.so.0: cannot open shared object file

解决:确保所有 .so 文件已复制并更新缓存:

sudo cp ~/ollama/llm/llama.cpp/build/bin/*.so* /usr/local/lib/
sudo ldconfig

4.5 踩坑:参数不兼容错误

如果使用独立 llama.cpp 仓库编译,可能遇到:

error: invalid argument: --no-log-prefix

这是因为独立仓库版本过新,参数与 Ollama 不匹配。必须使用 Ollama 源码自带的子模块版本

4.5 踩坑:版本过旧

Error: 500 Internal Server Error: llama-server process has terminated: exit status 127

主要原因是我从一开始从gitee下载的仓库进行编译,但是gitee上的仓库比较旧,与最新的JetPack7不兼容导致的。解决方法就是下载最新的llama进行重新编译。


五、下载模型与国内镜像加速

5.1 默认源下载慢

ollama run qwen3:30b 默认从 registry.ollama.ai 下载,国内速度极慢。

5.2 使用 Hugging Face 镜像

方法1:直接指定 hf-mirror.com 地址

ollama run hf-mirror.com/模型作者/模型名:标签

例如:

ollama run hf-mirror.com/Beinsezii/Qwen3.5-122B-A10B-GGUF-HALO:latest

方法2:设置环境变量

export HF_ENDPOINT=https://hf-mirror.com
ollama run hf.co/Beinsezii/Qwen3.5-122B-A10B-GGUF-HALO:latest

5.3 手动下载 GGUF 并导入 Ollama

如果自动拉取总是中断,建议手动下载后导入。

步骤1:从 hf-mirror.com 下载 .gguf 文件

使用浏览器或 wget 下载模型文件(注意文件大小,如 122B 模型约 94GB)。

步骤2:创建 Modelfile

echo 'FROM /path/to/downloaded/model.gguf' > Modelfile

步骤3:导入 Ollama

ollama create qwen3.5:122b -f Modelfile

步骤4:运行

ollama run qwen3.5:122b

5.4 处理分片 GGUF(sharded GGUF)

如果遇到错误:

The specified tag is a sharded GGUF. Ollama does not support this yet.

说明模型被分割成多个文件,需先合并。

解决方法:使用 llama.cppllama-gguf-split 工具合并。

# 编译 llama.cpp 工具(如果尚未编译)
cd ~/llama.cpp/build
# 运行合并
./bin/llama-gguf-split --merge model-00001-of-00002.gguf merged.gguf
# 然后导入合并后的文件
echo 'FROM ./merged.gguf' > Modelfile
ollama create qwen3.5:122b -f Modelfile

六、模型选择与硬件评估

6.1 Jetson Thor 128GB 内存能跑多大的模型?

模型量化格式文件大小可行性
Qwen3.5-122B-A10BQ4_K_M~75GB✅ 可运行(内存紧张)
Qwen2.5-72BQ4_K_M~40GB✅ 流畅
Qwen2.5-32BQ4_K_M~20GB✅ 完美适配
DeepSeek-V4-Flash 284BMXFP4~140GB❌ 超出内存

6.2 模型后缀含义

后缀含义
A10B激活参数 100亿(MoE 架构)
NVFP4NVIDIA 4-bit 浮点量化,为 Blackwell 架构优化
MTPMulti-Token Prediction,多令牌预测(加速推理)
wMix48混合精度量化,目标内存 48GB(多为 MLX 格式)

6.3 推荐模型

  • 教学/日常开发Qwen2.5-32B(性能与资源平衡)

  • 追求速度Qwen3.5-35B-A3B(MoE,激活仅 3B)

  • 探索上限Qwen3.5-122B-A10B-NVFP4(需 ~75GB,可尝试)


七、常用命令速查

7.1 Ollama 服务管理

bash

sudo systemctl status ollama      # 查看服务状态
sudo systemctl restart ollama     # 重启服务
sudo journalctl -u ollama -f      # 实时查看日志(按 Ctrl+C 退出)
sudo journalctl -u ollama -n 100  # 查看最近 100 行日志

7.2 模型管理

bash

ollama list                  # 已安装模型列表
ollama ps                    # 当前驻留内存的模型
ollama stop <model>          # 卸载模型
ollama rm <model>            # 删除模型
ollama cp <src> <dst>        # 重命名模型
ollama run <model> --verbose # 运行并显示性能指标

7.3 环境变量

bash

export OLLAMA_KEEP_ALIVE=600      # 模型驻留时间(秒,默认 300)
export OLLAMA_MODELS=/path/to/models  # 更改模型存储路径
export HF_ENDPOINT=https://hf-mirror.com  # Hugging Face 镜像
export OLLAMA_NUM_GPU=0           # 强制 CPU 模式(调试用)

八、常见错误与解决方案速查

错误信息常见原因解决方案
bash: command not foundPATH 未包含检查 ~/.local/bin 或 hash -r
Permission denied文件无执行权限sudo chmod +x <file>
status=203/EXEC可执行文件不存在检查服务文件中的 ExecStart 路径
exit status 127缺失动态库复制 .so 到 /usr/local/lib 并 sudo ldconfig
400: tag not available镜像未同步换用官方源或其他标签
sharded GGUF模型分片使用 llama-gguf-split 合并
invalid argument: --no-log-prefixllama-server 版本不兼容使用 Ollama 源码中的子模块编译

九、总结

通过本文的实践,在 Jetson Thor 上成功搭建了完整的深度学习与大模型运行环境。关键要点:

  1. 善用量化与 MoE 架构:128GB 内存可运行 70B~122B 的量化模型。

  2. 国内镜像加速是必须的:GitHub 代理、HF-Mirror、ModelScope 可大幅提升下载速度。

  3. Ollama 的 llama-server 需从源码编译:务必使用 Ollama 自带的子模块版本,避免参数不兼容。

  4. 区分系统 Python 与 Conda 环境:用 Conda 管理项目依赖,系统 Python 保留给 JetPack 工具。

后续可探索:

  • 接入 OpenClaw 构建 AI Agent

  • 使用 vLLM 提升推理吞吐

  • 尝试更多 MoE 模型(如 DeepSeek-V3)


本文操作环境

  • 硬件:NVIDIA Jetson Thor (128GB 统一内存)

  • 系统:Ubuntu 24.04 (ARM64)

  • JetPack:7.0+

  • Ollama:0.32.6(手动安装)

踩坑记录

1.  OLLAMA与大模型版本不兼容

ollama是直接从(ollama | newbe)下载的,本地解压,最新版本v0.32.6。能够运行ollama run qwen3:30b。但是直接利用ollama官方命令运行ollama run qwen3.5:122b/ollama run qwen3.6:35b,出现下面的错误:

ollama run qwen3.6:35b
pulling manifest 
pulling f5ee307a2982: 100% ▕█████████████████████████████████████████████████████████████████████████████████████ ▏  23 GB/ 23 GB  1.8 MB/s      0s
verifying sha256 digest 
writing manifest 
success 
Error: 500 Internal Server Error: llama-server process has terminated: exit status 1: error: Failed to load CLIP model from /usr/share/ollama/.ollama/models/blobs/sha256-f5ee307a2982106a6eb82b62b2c00b575c9072145a759ae4660378acda8dcf2d
error loading model: error loading model hyperparameters: key qwen35moe.rope.dimension_sections has wrong array length; expected 4, got 3
error loading model: error loading model hyperparameters: key qwen35moe.rope.dimension_sections has wrong array length; expected 4, got 3

重新在llama的github仓库编译了最新的源码/直接运行llama命令进行加载,均依然无法解决。

最终,直接利用ollama官网的安装命令

curl -fsSL https://ollama.com/install.sh | sh

重新安装了ollama,运行qwen3.5-122B,竟然成功。主要原因还是github仓库里的ollama应该与官网的版本有区别。


 

更多推荐