8卡RTX 5090服务器llama.cpp测试
8 卡 RTX 5090 服务器
完整安装及性能调优指南
8卡RTX 5090服务器 从 NVIDIA驱动安装 → CUDA环境 → llama.cpp编译 → 多GPU测试 的完整、可直接执行流程(基于Ubuntu 22.04 LTS,适配Blackwell架构)。
一、系统与硬件准备(必做)
1.1 系统要求
• 推荐:Ubuntu 22.04 LTS(64位)
• 内核:6.8+ HWE内核(5090必须高内核)
• 禁用:Nouveau开源驱动(与NVIDIA驱动冲突)
1.2 硬件检查
Bash |

二、安装NVIDIA驱动(5090专属流程)
2.1 卸载旧驱动与禁用Nouveau
Bash |



2.2 安装高版本HWE内核(5090强制要求)
Bash |


2.3 安装5090专用开源驱动(-open)
RTX 5090(Blackwell)必须用 open-dkms 开源内核模块驱动,闭源驱动会报错。
Bash |
输出应显示 8张RTX 5090、驱动版本 590.xx、CUDA Version 12.4+。




三、安装CUDA Toolkit(llama.cpp依赖)
3.1 安装CUDA 12.4(与590驱动匹配)
Bash |


3.2 安装基础编译工具(llama.cpp多GPU核心依赖)
Bash |


四、安装llama.cpp编译依赖
Bash |


五、编译llama.cpp(开启8卡CUDA加速)
5.1 克隆源码
Bash |

5.2 编译(开启CUDA + 多GPU + 5090算力sm_120)
Bash |



5.3 验证编译
Bash |

六、准备GGUF模型(测试用)
6.1 下载测试模型(以Qwen3 32B Q4_K_M为例)
Bash
|

七、8卡5090 llama.cpp测试(核心步骤)
7.1 单卡基础测试(验证CUDA)
Bash ./build/bin/llama-cli \ -m models/Qwen_Qwen3-32B-Q4_K_M.gguf \ --gpu-layers 99 \ -t 64 \ -c 32768 \ -p "你好" |
同时另开一个终端,
watch -n 1 nvidia-smi
7.2 8卡并行测试(多GPU自动负载均衡)
llama.cpp 自动识别所有NVIDIA GPU,无需手动指定卡ID。
Bash -m models/Qwen_Qwen3-32B-Q4_K_M.gguf \ -n 1024 \ --gpu-layers 99 \ -t 32 \ -c 16384 \ -p "撰写关于8x RTX 5090服务器用于大语言模型(LLM)推理的技术概述。" \ --batch-size 1024 \ --mlock \ --flash-attn on |

[ Prompt: 289.1 t/s | Generation: 66.6 t/s ]
7.3 8卡显存与负载验证
新开终端,实时监控:
Bash |
8张5090显存均被占用(≈4GB/卡)、GPU利用率 =55%。
八、性能调优(8卡5090专属)
8.1 关键参数优化
Bash -m models/Qwen_Qwen3-32B-Q4_K_M.gguf \ -n 2048 \ --gpu-layers 99 \ -t 64 \ -c 32768 \ -p "撰写关于8x RTX 5090服务器用于大语言模型(LLM)推理的技术概述。" \ --batch-size 2048 \ --mlock \ --flash-attn on \ --no-mmap \ --numa distribute |
-n 2048:将最大生成token数提升至2048,满足更长篇幅的技术概述撰写需求; -t 64:分配64个CPU线程,匹配多GPU并行推理的CPU调度需求,提升协同效率; -c 32768:将上下文长度提升至32768,支持更长文本输入与生成,适配技术概述的深度撰写; --batch-size 2048:提升批量推理效率,适配8×RTX 5090多GPU并行算力; --mlock:锁定内存,避免内存交换(swap),提升多GPU推理稳定性; --flash-attn on:启用Flash Attention优化,充分发挥RTX 5090硬件性能,显著提升推理速度; --no-mmap:禁用内存映射(mmap),减少内存开销,进一步提升多GPU协同推理速度; --numa distribute:启用NUMA(非统一内存访问)优化,采用“distribute”模式,将执行任务均匀分配到所有CPU节点,适配多CPU节点服务器,平衡CPU与多GPU之间的内存访问效率,避免资源瓶颈 |

[ Prompt: 280.4 t/s | Generation: 65.2 t/s ]
8张5090显存均被占用(≈4GB/卡)、GPU利用率 =55%。

8.2 多GPU显存分配(手动指定)
如需手动分配层到不同GPU:
Bash |
-n 2048:最大生成token数,满足技术概述长文本撰写需求;
-t 64:分配64个CPU线程,匹配多GPU并行推理的CPU调度,提升协同效率;
-c 32768:上下文长度32768,支持长文本输入与生成;
--batch-size 2048:提升批量推理效率,适配8×RTX 5090多GPU算力;
--mlock:锁定内存,避免内存交换,提升推理稳定性;
--flash-attn on:启用Flash Attention优化,充分发挥RTX 5090硬件性能;
--no-mmap:禁用内存映射,减少内存开销,提升多GPU协同速度;
--numa distribute:NUMA优化,均匀分配任务到所有CPU节点,避免资源瓶颈;
--gpu-layers 80:核心分层配置,总加载80层模型到GPU(前40层+后40层),需确保该层数不超过Qwen3-32B模型总层数(适配32B模型,80层为合理分配值);
--main-gpu 0:关键分层参数,指定GPU0作为主GPU,llama.cpp会优先将前40层模型加载到主GPU(GPU0),剩余的40层会自动均匀分配到其余GPU(GPU1-GPU7),完全匹配“前40层到GPU0,后40层到GPU1-7”的需求;
补充:llama.cpp不支持--cuda-devices参数,无需手动指定GPU设备(0-7),通过--main-gpu 0即可实现分层分配,系统会自动识别剩余GPU并分配后续层数。

[ Prompt: 248.7 t/s | Generation: 65.1 t/s ]
九、常见问题排查
1. nvidia-smi 只显示部分卡
○ 重启服务器、检查PCIe插槽与供电
○ 确认驱动为 590-open,非闭源
2. llama.cpp 只跑CPU,不调用GPU
○ 编译时必须加 -DLLAMA_CUDA=ON
○ 运行时加 --gpu-layers ≥32
○ 验证CUDA:nvcc -V
3. 显存溢出(OOM)
○ 降低 --gpu-layers(如99→80)
○ 使用更低量化(Q3_K_M)
○ 增大 -c 上下文窗口
4. 5090 报错:Failed to allocate NvKmsKapiDevice
○ 必须用 nvidia-driver-xxx-open 开源驱动
○ 内核必须 ≥6.8
十、最终验证
执行以下命令,确认 8卡5090全量工作:
Bash -m models/Qwen_Qwen3-32B-Q4_K_M.gguf \ -n 4096 \ --gpu-layers 99 \ -t 64 \ -c 32768 \ -p "阐述8x RTX 5090在大型语言模型部署中的优势。" \ --batch-size 2048 \ --mlock \ --flash-attn on |

[ Prompt: 229.4 t/s | Generation: 65.7 t/s ]
十、输出测试效果:
# 使用 llama-bench 正确的参数格式
./build/bin/llama-bench \
-m models/Qwen_Qwen3-32B-Q4_K_M.gguf \
-t 64 \
-p 512,2048,8192 \
-n 128,512,2048 \
-ngl 99 \
-b 2048 \
-ub 512 \
-fa 1 \
-r 3 \
2>&1 | tee benchmark_results.txt

| model | size | params | b ackend | ngl | fa | test | t/s |
| qwen3 32B Q4_K - Medium | 18.40 GiB | 32.76 B | CUDA | 99 | 1 | pp512 | 3569.28 ± 44.41 |
| qwen3 32B Q4_K - Medium | 18.40 GiB | 32.76 B | CUDA | 99 | 1 | pp2048 | 3744.03 ± 0.42 |
| qwen3 32B Q4_K - Medium | 18.40 GiB | 32.76 B | CUDA | 99 | 1 | pp8192 | 3512.90 ± 0.50 |
| qwen3 32B Q4_K - Medium | 18.40 GiB | 32.76 B | CUDA | 99 | 1 | tg128 | 66.56 ± 0.02 |
| qwen3 32B Q4_K - Medium | 18.40 GiB | 32.76 B | CUDA | 99 | 1 | tg512 | 66.29 ± 0.07 |
| qwen3 32B Q4_K - Medium | 18.40 GiB | 32.76 B | CUDA | 99 | 1 | tg2048 | 65.12 ± 0.03 |
build: 08f21453a (8589)