本教程专为 RTX 5090 24GB 显卡优化,使用 Qwen3.8-27B Q4_K_M 量化模型,在 Ubuntu 26.04 LTS 上从源码编译 llama.cpp 并配置一键启动,提供类似 Windows 的本地 AI 聊天体验。
1. 前提条件
你已经按照本站之前的教程成功安装了 NVIDIA 官方开源驱动(nvidia-open) 和 CUDA 工具包(cuda-toolkit),验证命令:
nvidia-smi # 应显示 RTX 5090 及驱动版本 ≥ 595
nvcc --version # 应显示 CUDA 版本 ≥ 13.2
nvidia-cuda-toolkit,它会覆盖你已有的新版 CUDA。
2. 安装编译依赖
打开终端(Ctrl+Alt+T),执行:
sudo apt update
sudo apt install -y build-essential cmake git curl wget
3. 克隆 llama.cpp 并拉取最新版本
对于 RTX 5090 这样的新硬件,建议使用最新的主分支代码,以获取最佳优化和最新的 GPU 支持。直接克隆并拉取最新提交:
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
git pull origin master # 确保是最新代码(可选,克隆后即最新)
如果你希望后续手动更新,可在 llama.cpp 目录下执行 git pull 即可。
4. CMake 配置(单卡 + CUDA)
针对你的单卡 RTX 5090,显式指定 CUDA 路径,并设置单卡模式。
rm -rf build
cmake -B build \
-DGGML_CUDA=ON \
-DCMAKE_BUILD_TYPE=Release \
-DLLAMA_MAX_DEVICES=1 \
-DCUDAToolkit_ROOT=/usr/local/cuda \
-DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc
5. 编译
利用 CPU 并行编译(建议限制并行数以控制内存使用,例如 -j16):
cmake --build build --config Release -j16
你的 32GB 内存对于 16 个并行任务足够。如果卡顿可降为 -j8。
编译完成后,可执行文件位于 /home/ai/llama.cpp/build/bin/ 目录,包括 llama-cli 和 llama-server。
6. 安装到系统路径(可选)
若希望在任何目录下直接调用 llama-server,可执行:
sudo cmake --install build
7. 下载 Qwen3.8-27B Q4_K_M 模型
选择 4-bit 量化版本(Q4_K_M),文件大小约 17-18 GB,完美适配 24GB 显存。我们将模型放在 /home/ai/llama.cpp/models/Qwen3.8-27B/ 下。
mkdir -p /home/ai/llama.cpp/models/Qwen3.8-27B
cd /home/ai/llama.cpp/models/Qwen3.8-27B
wget https://huggingface.co/Qwen/Qwen3.8-27B-GGUF/resolve/main/qwen3.8-27b-q4_k_m.gguf
8. 测试推理
cd /home/ai/llama.cpp
/home/ai/llama.cpp/build/bin/llama-cli -m /home/ai/llama.cpp/models/Qwen3.8-27B/qwen3.8-27b-q4_k_m.gguf -ngl 999 -p "你好" -n 32
若能输出中文回复,则编译和模型加载成功。
9. 创建启动脚本
在桌面空白处右键,选择 “在终端中打开”(Open in Terminal),此时终端直接位于桌面目录。然后直接编辑启动脚本 run-qwen.sh:
nano run-qwen.sh
在 nano 编辑器中,粘贴以下内容(所有路径均为绝对路径):
#!/bin/bash
cd /home/ai/llama.cpp
/home/ai/llama.cpp/build/bin/llama-server \
-m "/home/ai/llama.cpp/models/Qwen3.8-27B/qwen3.8-27b-q4_k_m.gguf" \
--no-mmap \
--ctx-size 32768 \
--flash-attn \
--batch-size 4096 \
--ubatch-size 1024 \
--parallel 1 \
--host 0.0.0.0 \
--port 8080 \
-ngl 999 \
--threads 16 \
--threads-batch 16 \
--cache-type-k q8_0 \
--cache-type-v q8_0 \
--temp 0.6 \
--top-p 0.95 \
--top-k 20 \
--min-p 0.00 \
--repeat-penalty 1.1 \
--jinja \
--props \
--metrics \
--perf
echo ""
read -p "Server stopped. Press Enter to exit..." temp
保存并退出:在 nano 中,按 Ctrl+O(字母 O)保存文件,按 Enter 确认文件名,然后按 Ctrl+X 退出编辑器。
参数说明:
--ctx-size 32768:上下文 32K,安全起点,可根据显存余量调高至 64K。--threads 16:根据你 270K+ CPU 设置,可适当调整。--no-mmap:完全加载到内存/显存,避免磁盘 I/O。-ngl 999:所有层卸载到 GPU。--host 0.0.0.0:允许本机和局域网访问。--flash-attn:启用 Flash Attention 加速(新版参数)。
保存后赋予执行权限:
chmod +x run-qwen.sh
10. 创建桌面快捷方式
在同一个终端(仍在桌面目录)中,执行:
nano QwenServer.desktop
粘贴以下内容:
[Desktop Entry]
Version=1.0
Type=Application
Name=Qwen3.8-27B (Q4_K_M)
Comment=Launch Local Qwen LLM Server
Exec=/home/ai/Desktop/run-qwen.sh
Icon=utilities-terminal
Terminal=true
Categories=Development;
保存(Ctrl+O,回车)并退出(Ctrl+X)。
之后,右键点击桌面上的 QwenServer.desktop 文件,选择 “允许启动”(Allow Launching)。之后双击即可启动服务。
11. 验证服务(含 Web UI)
启动脚本后(双击桌面图标或终端运行 /home/ai/Desktop/run-qwen.sh),可以通过以下方式验证:
方式一:浏览器 Web UI(推荐)
http://127.0.0.1:8080,即可看到聊天界面,直接输入对话。
这和使用 Windows 下的 AI 工具体验完全一致。
方式二:命令行 API 测试
# 查看模型列表
curl http://127.0.0.1:8080/v1/models | python3 -m json.tool
# 发送聊天请求
curl http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"qwen3.8-27b-q4_k_m","messages":[{"role":"user","content":"你好,请介绍一下你自己"}]}' | python3 -m json.tool
检查 GPU 使用
nvidia-smi
显存占用应在 18-20GB 之间(含 KV Cache)。
12. 常见报错及应对
| 报错现象 | 可能原因 | 解决方案 |
|---|---|---|
nvcc fatal: Unsupported gpu architecture 'compute_120' |
CUDA 版本 < 12.4 | 你已安装 13.x,不会出现。若出现则升级 CUDA。 |
CMake Error: CUDA not found |
CMake 未找到 CUDA | 在 cmake 命令中显式指定 -DCUDAToolkit_ROOT=/usr/local/cuda。 |
编译时 noexcept 相关错误 |
CUDA 13.0/13.1 已知 bug | CUDA 13.2+ 已修复,无需手动修改。 |
CUDA error: out of memory |
模型 + KV Cache 超出 24GB | 降低 --ctx-size(如 16384)或 --batch-size(如 2048)。 |
| 端口 8080 被占用 | 其他进程使用该端口 | 更改 --port 为其他端口。 |
| 桌面快捷方式无反应 | .desktop 未标记可执行或路径错误 |
确保 Exec= 路径正确,脚本有执行权限。 |
| 模型下载链接失效 | Hugging Face 文件路径更新 | 访问页面获取最新链接。 |
| 生成速度慢 | 上下文太大或线程数不足 | 降低 --ctx-size 或增加 --threads(不超过物理核心数)。 |
浏览器无法打开 http://127.0.0.1:8080 |
服务未启动或 --host 错误 |
检查终端日志,确认 --host 0.0.0.0 和 --port 8080 正确。 |
13. 性能调优建议
- 上下文长度:从 32K 开始,若显存 < 20GB 使用量,可逐步提升至 64K。
- 批量大小:
--batch-size 4096已优化,遇 OOM 可减半。 - KV Cache 量化:
q8_0平衡质量与显存,若需节省显存可改用q4_0。 - CPU 线程:
--threads 16足够,可调整至 24 或 32,但 GPU 是瓶颈。
双击桌面图标,打开浏览器访问
http://127.0.0.1:8080,开始本地 AI 对话吧!

评论(0)
暂无评论