跳到主要内容
极客日志极客日志面向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/9/1093 浏览

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. 输出测试效果

更多推荐文章

查看全部
  • OpenClaw 是怎么让 AI 变得 “像人” 的?
  • 别再盲目追“智能”:我与机器人打交道的 3 年,藏着最真实的科技温度
  • 使用 LLaMA-Factory 训练和微调 Llama3 构建专属 AI 模型
  • OpenClaw 开源 AI 智能体项目精选与部署指南
  • Web3 开发者入门:从零构建首个 DApp 实战指南
  • 开源低代码平台 Microi 吾码功能与安装指南
  • WebView 并发初始化竞争风险分析
  • MySQL 基本查询实战:增删改查与聚合分组详解
  • 移动 Git 管理工具效率对比与选型指南
  • 前端状态管理方案对比与选型指南
  • PentAGI Docker 环境部署指南
  • Java IO 流概述与基础应用
  • 基础数据结构详解及 C++ 模板实现
  • Win11 本地部署 OpenClaw:WSL 方式实现飞书机器人
  • Cursor 辅助开发 Web 版背单词应用演示
  • 基于 Spark 的超市销售数据分析系统设计与实现
  • 大模型算法岗常见面试题 100 道
  • Dify 接入企业微信群聊机器人配置指南
  • FPGA 入门实战:基于 Quartus 点亮 LED 灯
  • OpenClaw 框架解析:AI Agent、RAG、MCP 与 Skills 核心概念梳理

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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