RTX 5080搭配RTX 3090实现Qwen 3.6 27B模型80 Tok/s推理
速览
该配置展示了RTX 5080与RTX 3090显卡在运行Qwen 3.6 27B Q8量化模型时的性能表现。测试结果显示,该硬件组合能够实现80 Tok/s的推理速度。这一数据为本地部署中等规模大模型提供了参考基准。
AI 深度解读
RTX 5080 与 RTX 3090 双卡协同:在 Qwen 3.6 27B Q8 量化模型上实现 80+ Tok/s 推理
背景
随着大语言模型(LLM)参数量的增加,本地部署对显存(VRAM)的需求日益增长。作者一年前购入了一块 RTX 5080 显卡,初衷是兼顾游戏与 AI 实验。然而,随着 2026 年 Qwen 3.5、Gemma 以及 Qwen 3.6 等新一代模型的发布,仅靠 16GB 显存的 RTX 5080 已难以流畅运行高分辨率量化模型。
为了突破显存瓶颈,作者购入了一块二手 RTX 3090(24GB 显存)。虽然这允许运行 Qwen 3.6 的 Q4 量化版本,并在 MTP(Multi-Token Prediction,多令牌预测)加速下将速度提升至 50-60 tok/s,但 RTX 5080 的算力闲置造成了资源浪费。
为充分利用手头现有的 DDR4 内存、SSD 以及两块不同规格的 NVIDIA 显卡,作者开始探索如何构建一个能同时利用这两张卡的双卡系统。关键在于选择一块支持 PCIe 通道拆分的主板,并解决异构显卡驱动与配置兼容性问题。
核心内容
1. 硬件选型与 BIOS 配置
主板选择: 作者选择了 Asus Prime X570-Pro 主板。主板的 "Pro" 版本至关重要,因为它支持将 x16 PCIe 插槽拆分为两个 x8 插槽,从而允许两张显卡同时以 x8 带宽运行。
扩展卡: 由于 RTX 5080 体积较大,作者购买了一个高质量的 PCIe 4.0 Riser 线,将其连接至第二个插槽。
BIOS 关键设置: 为了正确识别并使用双卡,BIOS 必须进行特定配置:
- CSM (Compatibility Support Module):设置为 Disabled。必须使用 UEFI 模式启动,BIOS/MBR 模式会禁止双卡使用。
- Above 4G Decoding:设置为 Enabled。
- ReSize BAR Support:设置为 Auto 或 Enabled。
- PCIEX16_1 Link Mode:设置为 Gen 4。
- PCIEX16_2 Link Mode:设置为 Gen 4。
2. 驱动与内核模块
NVIDIA 官方文档对于双卡异构环境的配置较为混乱。作者尝试了社区开发的 open-gpu-kernel-modules(GitHub: aikitoria/open-gpu-kernel-modules),但该方案主要针对同型号显卡优化。由于 RTX 5080(Blackwell 架构)和 RTX 3090(Ampere 架构)属于不同代际,作者最终放弃了该补丁驱动,转而使用标准的 nvidia-open 驱动。
P2P 通信检查:
对于拥有同型号双卡的用户,安装补丁驱动后需卸载 nvidia-dkms-open 并黑名单 nova 驱动,以确保补丁驱动在启动时加载。随后通过以下命令检查 GPU 间点对点(P2P)通信状态:
nvidia-smi topo -p2p r
输出中若显示 GPU0 与 GPU1 之间为 OK,则表明 P2P 通信正常。
驱动验证:
重启后,使用 nvidia-smi 确认两张卡均被识别且显存未被错误占用:
- GPU 0: RTX 3090 (24GB)
- GPU 1: RTX 5080 (16GB)
3. llama.cpp 编译与运行配置
编译参数:
为了同时支持 Ampere (RTX 3090) 和 Blackwell (RTX 5080) 架构,编译 llama.cpp 时需指定 CUDA 架构:
cmake -B build -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DGGML_NATIVE=ON -DGGML_CUDA_FA=ON -DGGML_CUDA_FA_ALL_QUANTS=ON -DCMAKE_CUDA_ARCHITECTURES="86;120" -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc -DGGML_CUDA_NCCL=OFF
CMAKE_CUDA_ARCHITECTURES="86;120":分别对应 Ampere 和 Blackwell 架构。GGML_CUDA_NCCL=OFF:作者发现启用 NCCL 反而降低性能,因此选择关闭。
推理启动命令详解:
作者使用以下命令运行 Huihui-Qwen3.6-27B-abliterated-ggml-model-Q8_0.gguf 模型:
llama-server -m ./models/Huihui-Qwen3.6-27B-abliterated-ggml-model-Q8_0.gguf \
-c 229376 \
-np 1 -fa on -ngl 99 -ub 512 -t 6 --no-mmap \
--temp 0.7 --top-p 0.8 --top-k 20 --min-p 0.0 --presence-penalty 0.0 --repeat-penalty 1.0 \
-ctk q8_0 -ctv q8_0 --kv-unified \
--chat-template-kwargs {"preserve_thinking": true} \
--spec-type ngram-mod,draft-mtp --spec-draft-n-max 3 \
-sm tensor -ts 2,3 \
--port 8001 --host 0.0.0.0
关键参数解读:
- 模型量化:Q8_0 量化模型,配合 230k 上下文窗口和 Q8 KV 缓存,总显存占用控制在 39GB 以内(RTX 3090 24GB + RTX 5080 16GB ≈ 40GB)。
-ngl 99:尽可能将更多层卸载到 GPU。--spec-type ngram-mod,draft-mtp:结合 N-gram 和 MTP 推测解码加速。-sm tensor:启用张量并行(Tensor Parallelism),这是多卡推理的核心。-ts 2,3:指定两张卡的显存使用比例。这是一个关键调优参数,旨在填满每张卡的显存空间,实现负载均衡。
4. 性能结果
在该配置下,作者实现了 80+ tok/s 的推理速度,在特定任务下甚至可达 90+ tok/s。
日志分析:
- 解码速度:100 个 token 时达到 81.84 t/s,388 个 token 时达到 91.13 t/s。
- 推测解码效率:MTP 推测解码的接受率(draft acceptance)高达 0.77,表明推测机制非常有效。
- 带宽检查:通过
sudo lspci -vvv -s <bus_id> | grep "LnkSta:"确认 PCIe 链路运行在 16GT/s (PCIe 4.0) x8 模式下,确保双卡并未因带宽不足而受限。
关键要点
- 异构双卡可行性:不同代际的 NVIDIA 显卡(如 RTX 3090 和 RTX 5080)可以通过标准驱动配合
llama.cpp的张量并行功能协同工作,无需复杂的内核补丁。 - 主板通道拆分是关键:必须使用支持 PCIe x16 拆分为 x8+x8 的主板(如 Asus Prime X570-Pro),并确保 BIOS 中 CSM 禁用、Above 4G Decoding 开启。
