🚀 Linux 原生 AI 设置指南
RTX 5090 24GB + Qwen3.8-27B Q4_K_M
本教程专为 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 这样的新硬件,推荐使用最新的夜间版(b 标签)以获得最佳优化。
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
git checkout b10566 # 截至 2026年8月24日最新版,如有更新可替换
如果后续有更新,可访问 llama.cpp Releases 查看最新 b 标签。
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。
编译完成后,可执行文件位于 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 显存。
mkdir -p ~/models/Qwen3.8-27B
cd ~/models/Qwen3.8-27B
wget https://huggingface.co/Qwen/Qwen3.8-27B-GGUF/resolve/main/qwen3.8-27b-q4_k_m.gguf
8. 测试推理
cd ~/llama.cpp
./build/bin/llama-cli -m ~/models/Qwen3.8-27B/qwen3.8-27b-q4_k_m.gguf -ngl 999 -p "你好" -n 32
若能输出中文回复,则编译和模型加载成功。
9. 创建启动脚本
在桌面创建启动脚本 ~/Desktop/run-qwen.sh:
nano ~/Desktop/run-qwen.sh
粘贴以下内容(所有路径已替换为你的用户名 ai):
#!/bin/bash
cd /home/ai/llama.cpp
./build/bin/llama-server \
-m "/home/ai/models/Qwen3.8-27B/qwen3.8-27b-q4_k_m.gguf" \
--no-mmap \
--ctx-size 32768 \
--flash-attn on \
--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
参数说明:
--ctx-size 32768:上下文 32K,安全起点,可根据显存余量调高至 64K。--threads 16:根据你 270K+ CPU 设置,可适当调整。--no-mmap:完全加载到内存/显存,避免磁盘 I/O。-ngl 999:所有层卸载到 GPU。--host 0.0.0.0:允许本机和局域网访问。- 删除了
--tensor-split(单卡不需要)。
保存后赋予执行权限:
chmod +x ~/Desktop/run-qwen.sh
10. 创建桌面快捷方式
nano ~/Desktop/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;
保存后,右键点击桌面 QwenServer.desktop 文件,选择 “允许启动”(Allow Launching)。之后双击即可启动服务。
11. 验证服务(含 Web UI)
启动脚本后(双击桌面图标或终端运行 ~/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 是瓶颈。
评论(0)
暂无评论