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

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


 reboot


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

输出应显示 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生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 前端开发基础:CSS 核心语法与常用属性详解
  • LigerUI入门帮助(API里没写的入门帮助)【不断更新】
  • AI 编程工具深度对比:Cursor、Copilot 与 Claude Code
  • FPGA 基础概念与架构面试题解析(一)
  • C++ const 关键字详解:变量、指针与函数用法
  • 基于 MCP 协议的 JS 逆向自动化工具构建与实践
  • MCP+Skill 驱动的前端 JS 逆向自动化方案与工具实现
  • 华为 OD 机试双机位 C 卷 - 卡牌游戏
  • 数据库 SQL 防火墙:拦截率 99.99% 及恶意 SQL 防护
  • JavaWeb 开发实战:JSON 数据交换与 Ajax 异步请求技术解析
  • 华为 ICT 大赛 2024-2025 网络赛道考试分析
  • Spring Boot RESTful API 分层开发与测试实战
  • C++11 核心新特性解析:列表初始化、右值引用与移动语义
  • 前端状态管理进阶:Immutable.js 实战与避坑指南
  • Spring Boot 数据仓库与 ETL 工具集成
  • 基于 Docker 的智能家居音乐播放系统部署指南
  • 自然语言处理在客户服务中的实战:从模型应用到聊天机器人开发
  • AI 大模型开发:程序员的机遇与挑战
  • Ubuntu 系统下 libwebkit2gtk-4.1-0 库安装指南
  • Whisper-large-v3-turbo 模型部署与性能优化实战

相关免费在线工具

  • 加密/解密文本

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