在 Ubuntu 26.04 上编译与生产级部署 llama.cpp (支持 AMD ROCm 加速与 UMA 极致优化)

本文详细记录在 Ubuntu 26.04 LTS 环境下从源码编译 llama.cpp 的完整过程。重点探讨如何配置最新版 AMD ROCm 驱动、解决系统级动态链接库冲突、构建 Python AI 生态,以及如何利用大容量 UMA 共享显存进行 qwen3.6等大模型的 128K 超长上下文企业级极速推理部署。

llama.cpp 是目前在本地设备上高效推理大语言模型(LLM)的最强利器之一。它不仅支持极致的纯 CPU 推理,还能完美适配各类硬件加速框架。随着硬件的发展,利用高性价比的高性能集显配合 BIOS 调配的大容量 UMA(统一内存架构)共享显存(如我们的 48GB 配置),在本地流畅运行中大型旗舰模型已成为现实。

本文将详细记录如何在最新的 Ubuntu 26.04 LTS 环境下,从底层驱动安装、系统依赖打通、源码编译、Python 生态构建,到最终通过 systemd 守护进程实现企业级安全、高可用部署的完整全栈指南。

1. 系统环境与基础依赖准备

在正式开始底层编译与环境配置之前,必须确保系统处于最新状态,并准备好完整的 C++ 构建工具链以及网络通信相关的核心开发包。

# 更新系统软件源与已安装的软件包
sudo apt update && sudo apt upgrade -y

# 安装基础编译环境及常用命令行工具
sudo apt install build-essential libomp-dev libgomp1 git wget curl gnupg2 cmake ninja-build -y

# 安装网络及加密相关的核心开发库
sudo apt install libssl-dev libcurl4-openssl-dev -y

2. 打通 AMD GPU 底层驱动层 (ROCm 安装)

为了完全释放 AMD 硬件的算力,我们需要部署 AMD ROCm 深度学习框架。以下采用最新的自动化包管理配置流程(以 ROCm 7.2.3 为例)。

2.1 配置 APT 仓库与密钥

# 创建密钥存放目录
sudo mkdir -p /etc/apt/keyrings

# 下载并导入 AMD 官方 GPG 密钥
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | \
gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null

# 添加软件源
sudo tee /etc/apt/sources.list.d/rocm.list << EOF
deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/7.2.3 noble main
deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/graphics/7.2.3/ubuntu noble main
EOF

# 设置 APT Pin 优先级,防止后续系统更新时遭遇非官方包覆盖冲突
sudo tee /etc/apt/preferences.d/rocm-pin-600 << EOF
Package: *
Pin: release o=repo.radeon.com
Pin-Priority: 600
EOF

2.2 安装驱动与运行时

sudo apt update
# 完整安装 ROCm 运行时环境(包含 HIP SDK、OpenCL 等全套开发工具)
sudo apt install rocm -y

2.3 权限分配与架构环境变量配置

要让非 root 用户能够直接调用硬件算力,必须分配相应的硬件设备组权限:

# 将当前用户加入 render 和 video 用户组
sudo usermod -a -G render,video $USER

注意: 执行完权限分配后,必须重启系统或注销重新登录才能生效。

#查看gpu情况
rocminfo | grep -E "gfx|Name"
rocm-smi

针对特定的核显架构(如 Radeon 890M 对应的 gfx1150),官方运行时默认白名单可能未完全覆盖。建议向全局环境中注入以下覆盖变量,强制指定兼容的硬件架构:

echo 'export HSA_OVERRIDE_GFX_VERSION=11.5.0' >> ~/.bashrc
echo 'export ROCR_VISIBLE_DEVICES=0' >> ~/.bashrc
source ~/.bashrc

3. 避坑指北:解决动态链接库 (libxml2) 报错

在最新的 Ubuntu 26.04 LTS 系统中,许多底层系统库进行了主版本升级(例如默认自带 libxml2.so.16)。然而,部分预编译的 AI 组件或驱动程序可能仍顽固地链接旧版本的 libxml2.so.2。若遇到 Shared object file not found 报错,请执行以下标准运维方案:

# 1. 确保已安装新版的 libxml2 及开发包
sudo apt install libxml2-16 libxml2-dev -y

# 2. 创建向后兼容的动态库软链接
sudo ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.16 /usr/lib/x86_64-linux-gnu/libxml2.so.2

# 3. 刷新系统动态链接库缓存(关键!确保系统立刻识别到新的软链接)
sudo ldconfig

4. 获取 llama.cpp 源码与进行编译

准备好底层环境后,即可从官方 GitHub 仓库克隆最新的源码,并通过 CMake 开启 HIP (ROCm) 后端加速构建。

# 克隆官方最新源码仓库
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

# 创建并进入构建目录
mkdir build&&cd build
# 配置 CMake (替换 AMGPU_TARGETS 为您查到的实际架构代号)
# -DGGML_HIP_ROCWMMA_FATTN=ON 开启 Flash Attention ROCm 矩阵乘法加速
# -DAMDGPU_TARGETS=gfx1150 (示例,请按需更改)
cmake .. -G Ninja \
 -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang \
 -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ \
 -DCMAKE_BUILD_TYPE=Release \
 -DGGML_HIP=ON \
 -DGGML_HIP_ROCWMMA_FATTN=ON \
 -DAMDGPU_TARGETS="gfx1150"
#开始编译并安装
ninja
sudo ninja install

安装python环境

5. Hugging Face 镜像加速与模型获取

配置官方国内镜像站并使用更加简短高效的 hf 命令(huggingface-cli 的官方别名)能够提供极致且稳定的下载体验。这里我们以高性能的 qwen3.6-35B 模型的无限制版本为例:

# 1. 配置镜像环境变量(永久写入 .bashrc)
echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.bashrc
source ~/.bashrc

# 2. 安装 Python Hugging Face 官方客户端
pip3 install -U "huggingface_hub[cli]"
mkdir /home/user/llmModel&&cd /home/user/llmModel

# 3. 使用极简 CLI 命令高速下载特定的 GGUF 格式大模型
hf download \
  HauhauCS/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive \
  --local-dir /home/user/llmModel \
  --local-dir-use-symlinks False

6. 拓展配置:构建完整的 Python AI 生态

为了执行模型量化转换或运行上层高阶深度学习框架,本地算力节点必须配置适配 ROCm 的原生 PyTorch 环境。

# 升级 pip 以避免老版本解析错误
pip install --upgrade pip

# 从 PyTorch 官方源安装适配 ROCm 7.2 的最新专属版本
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.2

7. 进阶实战:企业级服务部署与极致显存优化

我们将挑战在一台 48GB 共享显存的主机上,全量加速运行刚才下载的 qwen3.6-35B 旗舰模型,并激进地开启 128K (131,072 Token) 超长上下文窗口:

/usr/local/bin/llama-server \
  -m Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q8_K_P.gguf \
  --mmproj mmproj-Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-f16.gguf \
  --jinja \
  -c 131072 \
  -ngl 99 \
  --temp 0.6 \
  --top-p 0.95 \
  --top-k 20 \
  --min-p 0 \
  --presence-penalty 0 \
  --flash-attn \
  --cache-type-k q8_0 \
  --cache-type-v q8_0 \
  --no-mmap \
  --api-key "你的自定义密码" \
  --host 0.0.0.0 \
  --port 8070

核心参数与极限榨干算力解析:

  1. –no-mmap(UMA 核心调优):对于共享系统内存的集显架构,禁用内存映射强制系统将巨型模型权重一次性锁死在物理内存中。这不仅防止了页面置换,还能大幅稳定首字延迟。
  2. –flash-attn(闪电注意力):处理 128K 超长上下文的绝对核心,显著降低长文本下的显存开销。
  3. –cache-type-k q8_0 –cache-type-v q8_0:将巨大的 KV 缓存显存开销直接压缩近一倍,是 35B 级别模型在 48GB 物理边界内完美运转的底线。

8. 生产环境收尾:配置 systemd 守护进程与开机自启

8.1 创建 Service 配置文件

sudo nano /etc/systemd/system/qwen.service

将以下完全打磨好的工业级配置模板粘贴进去:

[Unit]
Description=qwen3.6 35B LLM Service (ROCm Accelerated & UMA Optimized)
After=network.target

[Service]
Type=simple
User=user
Group=user

# 极端重要:设置模型文件所在的绝对路径工作目录
WorkingDirectory=/home/user/llmModel/

# 注入 AMD 架构兼容环境变量
Environment="HSA_OVERRIDE_GFX_VERSION=11.5.0"
Environment="ROCR_VISIBLE_DEVICES=0"

# 启动命令
ExecStart=/usr/local/bin/llama-server \
  -m Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q8_K_P.gguf \
  --mmproj mmproj-Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-f16.gguf \
  --jinja \
  -c 131072 \
  -ngl 99 \
  --temp 0.6 \
  --top-p 0.95 \
  --top-k 20 \
  --min-p 0 \
  --presence-penalty 0 \
  --flash-attn \
  --cache-type-k q8_0 \
  --cache-type-v q8_0 \
  --no-mmap \
  --api-key "你的自定义密码" \
  --host 0.0.0.0 \
  --port 8070

Restart=always
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

8.2 启动与状态监控

# 重新加载 systemd 守护进程配置
sudo systemctl daemon-reload

# 启用服务开机自启并立即启动
sudo systemctl enable --now qwen.service

# 查看实时日志
sudo journalctl -u qwen.service -f

总结与展望 通过在最新的 Ubuntu 26.04 环境下对 ROCm 底层驱动、编译链、KV 缓存及内存分配的细致调优,我们成功构建了一个具备工业级高可用性、支持 128K 超长上下文的本地算力节点。 基于大容量统一内存(UMA)的极限压榨方案,让我们得以为复杂系统的核心开发、高性能量化回测等敏感数据业务,提供了一层彻底隔离于公网、绝对安全且成本极低的顶尖 AI 算力底座。

远思码技术实验室 远思为径,码动价值。