跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++AI算法

8 卡 RTX 5090 服务器 llama.cpp 编译与多 GPU 推理测试指南

介绍在 Ubuntu 22.04 LTS 环境下,基于 8 张 RTX 5090 显卡搭建 llm 推理服务器的完整流程。涵盖 NVIDIA 驱动安装(open-dkms)、CUDA 环境配置、llama.cpp 源码编译及多 GPU 加速参数调优。通过实测 Qwen3 32B 模型,验证了 8 卡并行推理的性能表现及显存分配策略,提供了从基础测试到性能基准测试的详细命令与优化建议。

道系青年发布于 2026/4/5更新于 2026/10/25125 浏览

8 卡 RTX 5090 服务器

完整安装及性能调优指南

本文介绍在 Ubuntu 22.04 LTS 环境下,基于 8 张 RTX 5090 显卡搭建 LLM 推理服务器的完整流程。涵盖 NVIDIA 驱动安装、CUDA 环境配置、llama.cpp 源码编译及多 GPU 加速参数调优。

1. 系统与硬件准备

1.1 系统要求

  • 推荐:Ubuntu 22.04 LTS(64 位)
  • 内核:6.8+ HWE 内核(5090 必须高内核)
  • 禁用:Nouveau 开源驱动(与 NVIDIA 驱动冲突)

1.2 硬件检查

# 查看 8 张 5090 是否被识别
lspci | grep -i nvidia
# 应输出 8 条 NVIDIA Corporation Device 2782 (rev a1)

2. 安装 NVIDIA 驱动(5090 专属流程)

2.1 卸载旧驱动与禁用 Nouveau

# 1. 彻底卸载旧 NVIDIA 驱动
sudo apt purge nvidia* libnvidia* -y
sudo apt autoremove -y

# 2. 禁用 Nouveau
sudo bash -c 'echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist-nouveau.conf'
sudo update-initramfs -u

# 3. 重启生效
sudo reboot

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

# 安装 6.8+ HWE 内核
sudo apt update
sudo apt install linux-generic-hwe-22.04 -y
sudo reboot

# 验证内核版本(必须≥6.8)
uname -r
# 输出示例:6.8.0-45-generic

2.3 安装 5090 专用开源驱动(open-dkms)

RTX 5090(Blackwell)必须用 open-dkms 开源内核模块驱动,闭源驱动会报错。

# 添加显卡驱动 PPA
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update

# 安装 590-open 驱动(5090 推荐)
sudo apt install nvidia-driver-590-open -y

# 重启
sudo reboot

# 验证驱动(8 卡均正常显示)
nvidia-smi

输出应显示 8 张 RTX 5090、驱动版本 590.xx、CUDA Version 12.4+。

3. 安装 CUDA Toolkit(llama.cpp 依赖)

3.1 安装 CUDA 12.4(与 590 驱动匹配)

# 下载 CUDA 12.4 安装包
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run

# 安装(仅安装 CUDA Toolkit,不装驱动)
sudo sh cuda_12.4.0_550.54.14_linux.run --silent --toolkit

# 配置环境变量
echo 'export PATH=/usr/local/cuda-12.4/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

# 验证 CUDA
nvcc -V
# 输出应显示 release 12.4

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

sudo apt update
sudo apt install git build-essential cmake pkg-config libopenblas-dev -y

4. 安装 llama.cpp 编译依赖

# 基础编译工具
sudo apt update
sudo apt install git build-essential cmake pkg-config libopenblas-dev -y

# 验证依赖
gcc --version  # ≥11
cmake --version # ≥3.22

5. 编译 llama.cpp(开启 8 卡 CUDA 加速)

5.1 克隆源码

git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

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

# 关键参数:
# LLAMA_CUDA=1:启用 CUDA
# LLAMA_CUDA_DMMV_X=32:提升多 GPU 显存效率
# LLAMA_CUDA_N_GRAPH_LAYERS=9999:全层 GPU 卸载
# LLAMA_CUDA_ARCHS=120:5090 专属算力(sm_120)
cmake -B build \
    -DLLAMA_CUDA=ON \
    -DLLAMA_CUDA_DMMV_X=32 \
    -DLLAMA_CUDA_N_GRAPH_LAYERS=9999 \
    -DLLAMA_CUDA_ARCHS=120 \
    -DCMAKE_BUILD_TYPE=Release

# 8 线程编译(匹配服务器 CPU 核心)
cmake --build build -j$(nproc)

5.3 验证编译

./build/bin/llama-cli --help | grep -E "cuda|gpu"
# 应输出:--cuda, --gpu-layers N 等 CUDA 参数

6. 准备 GGUF 模型(测试用)

6.1 下载测试模型(以 Qwen3 32B Q4_K_M 为例)

# 进入模型目录
mkdir -p models && cd models

# 下载 Qwen3 32B Q4_K_M 量化模型(4-bit,显存友好)
wget https://hf-mirror.com/bartowski/Qwen_Qwen3-32B-GGUF/resolve/main/Qwen_Qwen3-32B-Q4_K_M.gguf
cd ..

7. 8 卡 5090 llama.cpp 测试(核心步骤)

7.1 单卡基础测试(验证 CUDA)

cd ..
./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。

./build/bin/llama-cli \
-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

7.3 8 卡显存与负载验证

新开终端,实时监控:

watch -n 1 nvidia-smi

8 张 5090 显存均被占用(≈4GB/卡)、GPU 利用率 = 55%。

8. 性能调优(8 卡 5090 专属)

8.1 关键参数优化

# 8 卡极致性能参数
./build/bin/llama-cli \
-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 优化,将执行任务均匀分配到所有 CPU 节点,平衡 CPU 与多 GPU 之间的内存访问效率。

8.2 多 GPU 显存分配(手动指定)

如需手动分配层到不同 GPU:

# 示例:前 40 层到 GPU0,后 40 层到 GPU1-7
./build/bin/llama-cli -m models/Qwen_Qwen3-32B-Q4_K_M.gguf -n 2048 --gpu-layers 80 --main-gpu 0 -t 64 -c 32768 -p "撰写关于 8x RTX 5090 服务器用于大语言模型(LLM)推理的技术概述。" --batch-size 2048 --mlock --flash-attn on --no-mmap --numa distribute
  • --gpu-layers 80:核心分层配置,总加载 80 层模型到 GPU。
  • --main-gpu 0:指定 GPU0 作为主 GPU,llama.cpp 会优先将前 40 层模型加载到主 GPU,剩余的 40 层会自动均匀分配到其余 GPU。 补充:llama.cpp 不支持 --cuda-devices 参数,无需手动指定 GPU 设备(0-7),通过 --main-gpu 0 即可实现分层分配。

9. 常见问题排查

  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

10. 最终验证

执行以下命令,确认 8 卡 5090 全量工作:

./build/bin/llama-cli \
-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

11. 输出测试效果

使用 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
modelsizeparamsbackendnglfatestt/s
qwen3 32B Q4_K - Medium18.40 GiB32.76 BCUDA991pp5123569.28 ± 44.41
qwen3 32B Q4_K - Medium18.40 GiB32.76 BCUDA991pp20483744.03 ± 0.42
qwen3 32B Q4_K - Medium18.40 GiB32.76 BCUDA991pp81923512.90 ± 0.50
qwen3 32B Q4_K - Medium18.40 GiB32.76 BCUDA991tg12866.56 ± 0.02
qwen3 32B Q4_K - Medium18.40 GiB32.76 BCUDA991tg51266.29 ± 0.07
qwen3 32B Q4_K - Medium18.40 GiB32.76 BCUDA991tg204865.12 ± 0.03

build: 08f21453a (8589)

目录

  1. 8 卡 RTX 5090 服务器
  2. 完整安装及性能调优指南
  3. 1. 系统与硬件准备
  4. 1.1 系统要求
  5. 1.2 硬件检查
  6. 查看 8 张 5090 是否被识别
  7. 应输出 8 条 NVIDIA Corporation Device 2782 (rev a1)
  8. 2. 安装 NVIDIA 驱动(5090 专属流程)
  9. 2.1 卸载旧驱动与禁用 Nouveau
  10. 1. 彻底卸载旧 NVIDIA 驱动
  11. 2. 禁用 Nouveau
  12. 3. 重启生效
  13. 2.2 安装高版本 HWE 内核(5090 强制要求)
  14. 安装 6.8+ HWE 内核
  15. 验证内核版本(必须≥6.8)
  16. 输出示例:6.8.0-45-generic
  17. 2.3 安装 5090 专用开源驱动(open-dkms)
  18. 添加显卡驱动 PPA
  19. 安装 590-open 驱动(5090 推荐)
  20. 重启
  21. 验证驱动(8 卡均正常显示)
  22. 3. 安装 CUDA Toolkit(llama.cpp 依赖)
  23. 3.1 安装 CUDA 12.4(与 590 驱动匹配)
  24. 下载 CUDA 12.4 安装包
  25. 安装(仅安装 CUDA Toolkit,不装驱动)
  26. 配置环境变量
  27. 验证 CUDA
  28. 输出应显示 release 12.4
  29. 3.2 安装基础编译工具(llama.cpp 多 GPU 核心依赖)
  30. 4. 安装 llama.cpp 编译依赖
  31. 基础编译工具
  32. 验证依赖
  33. 5. 编译 llama.cpp(开启 8 卡 CUDA 加速)
  34. 5.1 克隆源码
  35. 5.2 编译(开启 CUDA + 多 GPU + 5090 算力 sm_120)
  36. 关键参数:
  37. LLAMA_CUDA=1:启用 CUDA
  38. LLAMACUDADMMV_X=32:提升多 GPU 显存效率
  39. LLAMACUDANGRAPHLAYERS=9999:全层 GPU 卸载
  40. LLAMACUDAARCHS=120:5090 专属算力(sm_120)
  41. 8 线程编译(匹配服务器 CPU 核心)
  42. 5.3 验证编译
  43. 应输出:--cuda, --gpu-layers N 等 CUDA 参数
  44. 6. 准备 GGUF 模型(测试用)
  45. 6.1 下载测试模型(以 Qwen3 32B Q4KM 为例)
  46. 进入模型目录
  47. 下载 Qwen3 32B Q4KM 量化模型(4-bit,显存友好)
  48. 7. 8 卡 5090 llama.cpp 测试(核心步骤)
  49. 7.1 单卡基础测试(验证 CUDA)
  50. 7.2 8 卡并行测试(多 GPU 自动负载均衡)
  51. 7.3 8 卡显存与负载验证
  52. 8. 性能调优(8 卡 5090 专属)
  53. 8.1 关键参数优化
  54. 8 卡极致性能参数
  55. 8.2 多 GPU 显存分配(手动指定)
  56. 示例:前 40 层到 GPU0,后 40 层到 GPU1-7
  57. 9. 常见问题排查
  58. 10. 最终验证
  59. 11. 输出测试效果

更多推荐文章

查看全部
  • 利用 AI 快速开发 APP 下载统计功能
  • OpenClaw ACP 协议深度解析:IDE 直接驱动 AI Agent
  • 基于大语言模型的需求依赖检测方法 LEREDD 实现高精度与强鲁棒性
  • 基于APF-RRT*算法的无人机避障与高效轨迹规划
  • 银行大模型应用现状与落地进展分析
  • Git 版本控制完全指南:从入门到实践
  • Moon VR Video Player 中文版评测:支持 8K/12K 多音轨及外挂字幕
  • Mac Big Sur 使用 Docker 运行 OpenCode 实现 AI 自动化开发流程
  • 2024 大模型学习路线:从原理到微调与行业应用实战
  • Android Studio 安装与 SDK、JDK、Gradle 配置详解
  • 通义万相 2.1 助力 AIGC 创作,多模态生成技术解析
  • AI 大模型核心概念、原理与应用全景解析
  • DeepSeek-R1-Distill-Qwen-1.5B 本地部署实战:vLLM+Open WebUI 低显存方案
  • 深入解析 Spring AOP 原理
  • Java 统计子字符串在父字符串中的出现次数
  • 边缘 AI 技术详解:从概念到终端部署实践
  • C++ string 类核心用法与底层实现
  • 自适应滑模观测器永磁同步电机仿真模型搭建与无位置传感器算法
  • 无需公网 IP 零端口暴露访问本地 AI 服务方案
  • 支持向量机 (SVM) 原理与代码实例讲解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online