惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Webroot Blog
Webroot Blog
AI
AI
P
Palo Alto Networks Blog
Attack and Defense Labs
Attack and Defense Labs
WordPress大学
WordPress大学
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
Spread Privacy
Spread Privacy
T
Tor Project blog
罗磊的独立博客
小众软件
小众软件
S
Security Affairs
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
Apple Machine Learning Research
Apple Machine Learning Research
T
Threatpost
NISL@THU
NISL@THU
博客园_首页
PCI Perspectives
PCI Perspectives
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Forbes - Security
Forbes - Security
博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
腾讯CDC
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Cloudflare Blog
A
About on SuperTechFans
爱范儿
爱范儿
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
TaoSecurity Blog
TaoSecurity Blog
宝玉的分享
宝玉的分享
G
GRAHAM CLULEY
雷峰网
雷峰网
F
Full Disclosure
I
Intezer
Cloudbric
Cloudbric
博客园 - 三生石上(FineUI控件)
U
Unit 42

无妄当自持

在 RTX 4060 Laptop(8GB 显存)笔记本上部署 Qwen3.5-4B 和 Qwopus3.5-9B-Coder 的完整实战 给 Hermes Agent 接入 Sciverse:5 分钟搞定学术搜索 MCP MinerU:让 AI Agent 读懂 PDF 的文档提取利器 用 Firecrawl + SearXNG 给 Hermes Agent 搭建本地搜索与网页抓取 让服务器的 AI 读写你的 Obsidian 笔记库:从自建同步到 MCP 集成 在 RTX 4060 笔记本上运行 Qwen 3.5 9B:llama.cpp 本地部署实录 Hermes WebUI 安装与使用指南 Hermes Agent 使用实践:核心机制与命令技巧 小米 MiMo 模型本地部署实践:从选型到踩坑 介绍并初步使用 Hermes Agent Linux 下将浏览器缓存放到内存,并在登录登出时进行同步 Fedora 使用脚本配置国内镜像源 在 Fedora server 39 中纯手动部署 Nextcloud 使用 shell 脚本和 systemd 定时替换 Gnome 壁纸 Linux 下字体配置 设置 VirtualBox 虚拟机为静态 ip 以方便主机访问 在启用安全启动的 Fedora 中安装 Nvidia 驱动 曲登尼玛冰川 面向神经科学家的人工神经网络
在 Fedora 44 上编译支持 CUDA 的 llama.cpp:完整指南
insidentally · 2026-05-24 · via 无妄当自持

llama.cpp 是本地运行大模型的首选推理引擎,但官方预编译版本在 Linux 上不提供 CUDA 支持。本文记录了在 Fedora 44 系统上,使用 Toolbox 容器从源码编译支持 CUDA 13.2 的 llama.cpp 的完整过程,包括环境配置、依赖解决和性能优化。

为什么选择自己编译?

在尝试了多种方案后,我决定从源码编译 llama.cpp,主要基于以下考虑:

方案 优点 缺点
llama.cpp 预编译 免编译 官方不提供 Linux CUDA 版本
Ollama 一键安装,自动 CUDA 封装层,略重
Vulkan 后端 无需 CUDA Toolkit 性能损失约 20-30%
源码编译 性能最优,可定制 需要解决依赖问题

关键发现:llama.cpp 官方发布的 Linux 版本只有 CPU、Vulkan、ROCm 和 SYCL 后端,没有 CUDA 后端。CUDA 预编译仅限 Windows。这意味着在 Linux 上用 NVIDIA GPU 跑 llama.cpp,要么从源码编译,要么接受 Vulkan 的性能损失。

本机配置

我的开发环境如下:

项目 配置
OS Fedora 44 Workstation(内核 7.0.9-204.fc44.x86_64)
CPU AMD Ryzen 7 7840HS(Zen 4 架构,8核16线程)
GPU NVIDIA GeForce RTX 4060 Laptop(8GB GDDR6)
内存 32GB DDR5
CUDA 驱动 595.71.05(支持 CUDA 13.2)

关键限制:8GB 显存决定了模型量化方案,CUDA 13.2 需要特定版本的编译器支持。

编译环境选择:为什么用 Toolbox?

直接在主机上编译会污染系统环境,而 Docker 容器又过于笨重。Fedora Toolbox 是完美的折衷方案:

  • 环境隔离:与主机系统完全隔离,避免依赖冲突
  • 文件共享:自动挂载主机 $HOME 目录,方便访问模型文件
  • GPU 透传:自动透传 NVIDIA 驱动,只需配置 CUDA 运行时
  • 轻量级:基于 Podman,启动快速,资源占用少

详细编译步骤

1. 创建 Toolbox 容器

1
2
3
4
5

toolbox create --assumeyes --image registry.fedoraproject.org/fedora-toolbox:44 --container fedora-toolbox-44-cuda


toolbox enter --container fedora-toolbox-44-cuda

2. 安装基础开发工具

1
2
3
4
5

sudo dnf distro-sync


sudo dnf install @c-development @development-tools cmake

3. 配置 CUDA Toolkit 13.2

3.1 添加 NVIDIA CUDA 仓库
1
2
3
4
5

sudo dnf config-manager addrepo --from-repofile=https://developer.download.nvidia.com/compute/cuda/repos/fedora43/x86_64/cuda-fedora43.repo


sudo dnf distro-sync
3.2 处理 NVIDIA 驱动透传

由于主机已安装 NVIDIA 驱动,容器内会自动挂载 libcuda.so.1。为避免文件冲突,我们只更新 RPM 数据库而不实际安装驱动:

1
2
3
4
5
6

sudo dnf download --destdir=/tmp/nvidia-driver-libs --resolve --arch x86_64 \
nvidia-driver-cuda nvidia-driver-libs nvidia-driver-cuda-libs nvidia-persistenced


sudo rpm --install --verbose --hash --justdb /tmp/nvidia-driver-libs/*
3.3 安装 CUDA Toolkit
1
2
3
4
5
6
7

sudo dnf install cuda-toolkit


sudo sh -c 'echo "export PATH=\$PATH:/usr/local/cuda/bin" >> /etc/profile.d/cuda.sh'
sudo chmod +x /etc/profile.d/cuda.sh
source /etc/profile.d/cuda.sh

验证安装:

1
2
nvcc --version

4. 解决 GCC 版本兼容性问题

CUDA 13.2 不支持默认的 GCC 16,需要安装 GCC 15:

1
2
3
4
5
6

sudo dnf install gcc15 gcc15-c++


export NVCC_CCBIN='g++-15'
echo 'export NVCC_CCBIN="g++-15"' >> ~/.bashrc

5. 获取并编译 llama.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

git clone --depth 1 https://github.com/ggml-org/llama.cpp.git
cd llama.cpp


mkdir build && cd build


cmake .. \
-DGGML_CUDA=ON \
-DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc \
-DLLAMA_BUILD_WEBUI=OFF


cmake --build . --config Release -j$(nproc)

WebUI 所需要的依赖下载很慢,我干脆禁用了 WebUI。

6. 验证安装

1
2
3
4
5
6
7
8

ls -la ./bin/llama-*


./bin/llama-cli --help | grep -i "gpu\|cuda"


ldd ./bin/libggml-cuda.so.0.11.1 | grep -i cuda

常见问题与解决方案

1. GCC 版本不兼容

错误#error -- unsupported GNU version! gcc versions later than 15 are not supported!

解决:安装 GCC 15 并设置 NVCC_CCBIN='g++-15'

2. 驱动透传问题

现象:容器内无法访问 GPU

解决:确保主机 NVIDIA 驱动正常工作,重启容器:podman restart fedora-toolbox-44-cuda

3. WebUI 下载失败

错误WebUI: failed to download assets from HF Bucket

解决:编译时添加 -DLLAMA_BUILD_WEBUI=OFF 禁用 WebUI

4. 模型加载错误

错误missing tensor 'blk.32.ssm_conv1d.weight'

原因:某些模型(如 Qwopus3.5-9B-Coder-MTP)使用 MTP(多令牌预测)架构,需要特定版本的 llama.cpp。

解决:使用支持 MTP 的分支或选择非 MTP 版本的模型。

性能对比:容器内 vs 主机

指标 容器内编译 主机直接编译
环境隔离 ✅ 完全隔离 ❌ 依赖系统包
驱动兼容性 ✅ 自动透传 ✅ 原生支持
编译速度 略慢(容器开销)
系统影响 可能污染系统

使用建议

1. 模型推理

1
2
3
4
5
6
7
8
9
10
11
12

./bin/llama-server \
-m /path/to/model.gguf \
-ngl 99 \
--host 0.0.0.0 \
--port 8080


./bin/llama-cli \
-m /path/to/model.gguf \
-p "你的提示词" \
-ngl 99

2. 性能调优

  • 显存管理:根据显存调整 -ngl 参数(RTX 4060 8GB 建议 20-30 层)
  • 上下文长度:使用 -c 4096 设置合适的上下文长度
  • Flash Attention:启用 -fa on 提升推理速度
  • 量化选择:Q4_K_M 量化是 8GB 显存的最佳平衡点

3. 容器管理

1
2
3
4
5
6
7
8

toolbox enter --container fedora-toolbox-44-cuda


podman stop fedora-toolbox-44-cuda


podman start fedora-toolbox-44-cuda

总结

通过本次编译,我获得了:

  1. 完全兼容的 CUDA 13.2 支持,充分发挥 RTX 4060 性能
  2. 干净隔离的开发环境,不影响主机系统稳定性
  3. 最新版本的 llama.cpp,支持所有新模型和功能
  4. 可复现的编译流程,便于后续更新和维护

关键收获

  • 使用 Toolbox 容器是 Fedora 上进行 CUDA 开发的最佳实践
  • 版本兼容性问题(如 GCC 版本)需要提前解决
  • 自己编译虽然步骤较多,但能获得最佳性能和最新功能

对于希望在本机运行大模型的用户,我强烈推荐从源码编译 llama.cpp。虽然过程略显复杂,但带来的性能提升和灵活性是值得的。

参考资料:
llama.cpp 官方文档
NVIDIA CUDA 安装指南
Fedora Toolbox 文档
Multi-Token Prediction Tutorial

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 无妄当自持


avatar

insidentally

学习、实践、分享