大模型部署实战—1:NVIDIA Jetson Thor (128GB) :Ubuntu 24.04 + JetPack 7.2 搭建完整深度学习环境+部署本地大模型全记录

📅 2026/8/9 14:40:13
大模型部署实战—1:NVIDIA Jetson Thor (128GB) :Ubuntu 24.04 + JetPack 7.2 搭建完整深度学习环境+部署本地大模型全记录
┌─────────────────────────────────────────┐│ 应用层 (你写的代码) │ ← 你的 Python/C 程序├─────────────────────────────────────────┤│ 深度学习框架 (PyTorch/TF) │ ← 模型训练和推理├─────────────────────────────────────────┤│ CUDA / cuDNN / TensorRT (加速库) │ ← GPU 加速计算├─────────────────────────────────────────┤│ JetPack SDK (软件包集合) │ ← 核心驱动 库 系统├─────────────────────────────────────────┤│ Ubuntu 操作系统 (Linux内核) │ ← 底层系统├─────────────────────────────────────────┤│ NVIDIA Jetson Thor (硬件) │ ← 你的开发板└─────────────────────────────────────────┘参考1. 小白之——Jetson AGX Orin运行环境安装与部署教程Anaconda, JetpackjtopCUDA, CUDNNpytorchtorchvision_jetson agx orin pytorch cuda cudnn-CSDN博客一、基础环境JetPack 与系统配置1.1 安装 JetPack SDKJetson 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可能找不到需要手动添加 PATHexport PATH/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH永久生效写入~/.bashrcecho 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 安装监控工具 jtopjetson-statsjtop是 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 shells config file (i.e. ~/.bashrc). done! ✨ ✨ (base) zzczzc:~/Downloads$ jtop bash: jtop: command not found安装成功了但现在系统还不知道jtop命令在哪里因为它被安装在了一个还没有加入系统 PATH的目录里。错误信息已经提示得很清楚了/home/zzc/.local/bin不在你的 PATH 环境变量中。⚙️ 解决方法运行pipx推荐的命令让它自动帮你把路径加入 PATHbashpipx 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解决办法打开配置文件在终端中输入以下命令编辑你的用户配置文件~/.bashrcbashnano ~/.bashrc添加 Anaconda 路径在文件的末尾添加下面这行。请注意如果你的安装目录不是默认的~/anaconda3请替换成你实际的安装路径。bashexport PATH~/anaconda3/bin:$PATH保存并退出按CtrlO回车保存再按CtrlX退出nano编辑器。使配置生效运行以下命令让刚才的修改立即生效bashsource ~/.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/python3JetPack 依赖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. · GitHubllama.cpp地址GitHub - ggml-org/llama.cpp: LLM inference in C/C · GitHub3.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-serverOllama 核心组件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_TYPERelease -DLLAMA_CUDAON -DLLAMA_CUDA_ARCHITECTURES87 cmake --build . --config Release -j $(nproc)-DLLAMA_CUDA_ARCHITECTURES87针对 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_ENDPOINThttps://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创建 Modelfileecho FROM /path/to/downloaded/model.gguf Modelfile步骤3导入 Ollamaollama create qwen3.5:122b -f Modelfile步骤4运行ollama run qwen3.5:122b5.4 处理分片 GGUFsharded 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-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-A3BMoE激活仅 3B探索上限Qwen3.5-122B-A10B-NVFP4需 ~75GB可尝试七、常用命令速查7.1 Ollama 服务管理bashsudo systemctl status ollama # 查看服务状态 sudo systemctl restart ollama # 重启服务 sudo journalctl -u ollama -f # 实时查看日志按 CtrlC 退出 sudo journalctl -u ollama -n 100 # 查看最近 100 行日志7.2 模型管理bashollama list # 已安装模型列表 ollama ps # 当前驻留内存的模型 ollama stop model # 卸载模型 ollama rm model # 删除模型 ollama cp src dst # 重命名模型 ollama run model --verbose # 运行并显示性能指标7.3 环境变量bashexport OLLAMA_KEEP_ALIVE600 # 模型驻留时间秒默认 300 export OLLAMA_MODELS/path/to/models # 更改模型存储路径 export HF_ENDPOINThttps://hf-mirror.com # Hugging Face 镜像 export OLLAMA_NUM_GPU0 # 强制 CPU 模式调试用八、常见错误与解决方案速查错误信息常见原因解决方案bash: command not foundPATH 未包含检查~/.local/bin或hash -rPermission denied文件无执行权限sudo chmod x filestatus203/EXEC可执行文件不存在检查服务文件中的ExecStart路径exit status 127缺失动态库复制.so到/usr/local/lib并sudo ldconfig400: tag not available镜像未同步换用官方源或其他标签sharded GGUF模型分片使用llama-gguf-split合并invalid argument: --no-log-prefixllama-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)JetPack7.0Ollama0.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应该与官网的版本有区别。