┌─────────────────────────────────────────┐
│ 应用层 (你写的代码) │ ← 你的 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-smi1.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 ~/.bashrc1.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 visudo的secure_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,解决办法:
打开配置文件:在终端中输入以下命令,编辑你的用户配置文件
~/.bashrc:bash
nano ~/.bashrc
添加 Anaconda 路径:在文件的末尾添加下面这行。请注意,如果你的安装目录不是默认的
~/anaconda3,请替换成你实际的安装路径。bash
export PATH="~/anaconda3/bin:$PATH"
保存并退出:按
Ctrl+O,回车保存,再按Ctrl+X退出nano编辑器。使配置生效:运行以下命令,让刚才的修改立即生效:
bash
source ~/.bashrc
二、Python 环境管理
2.0 anaconda环境安装
通过官网下载anaconda的arm版本,本地安装。
出现无法找到conda命令的错误,同样是环境变量问题。
2.1 Conda 替代方案(ARM 架构)
官方 Anaconda 不支持 ARM (aarch64),推荐使用Miniforge或Archiconda。
# 下载 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 # 按提示安装,默认路径 ~/miniforge32.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 yes2.3 Pip 换清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple2.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.ci、ghproxy.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 --version3.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 --version3.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 found4.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:30b4.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 ldconfig4.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:latest5.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:122b5.4 处理分片 GGUF(sharded GGUF)
如果遇到错误:
The specified tag is a sharded GGUF. Ollama does not support this yet.说明模型被分割成多个文件,需先合并。
解决方法:使用llama.cpp的llama-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-A10B | Q4_K_M | ~75GB | ✅ 可运行(内存紧张) |
| Qwen2.5-72B | Q4_K_M | ~40GB | ✅ 流畅 |
| Qwen2.5-32B | Q4_K_M | ~20GB | ✅ 完美适配 |
| DeepSeek-V4-Flash 284B | MXFP4 | ~140GB | ❌ 超出内存 |
6.2 模型后缀含义
| 后缀 | 含义 |
|---|---|
| A10B | 激活参数 100亿(MoE 架构) |
| NVFP4 | NVIDIA 4-bit 浮点量化,为 Blackwell 架构优化 |
| MTP | Multi-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 found | PATH 未包含 | 检查~/.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-prefix | llama-server 版本不兼容 | 使用 Ollama 源码中的子模块编译 |
九、总结
通过本文的实践,在 Jetson Thor 上成功搭建了完整的深度学习与大模型运行环境。关键要点:
善用量化与 MoE 架构:128GB 内存可运行 70B~122B 的量化模型。
国内镜像加速是必须的:GitHub 代理、HF-Mirror、ModelScope 可大幅提升下载速度。
Ollama 的 llama-server 需从源码编译:务必使用 Ollama 自带的子模块版本,避免参数不兼容。
区分系统 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应该与官网的版本有区别。