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

二、安装NVIDIA驱动(5090专属流程)

2.1 卸载旧驱动与禁用Nouveau

Bash
# 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强制要求)

Bash
# 安装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)

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

Bash
# 添加显卡驱动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+

三、安装CUDA Toolkit(llama.cpp依赖)

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

Bash
# 下载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核心依赖)

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

四、安装llama.cpp编译依赖

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

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

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

5.1 克隆源码

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

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

Bash
# 关键参数:
# 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 验证编译

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

六、准备GGUF模型(测试用)

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

Bash
# 进入模型目录
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 ..

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

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

Bash
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。

Bash
./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

[ Prompt: 289.1 t/s | Generation: 66.6 t/s ]

7.3 8卡显存与负载验证

新开终端,实时监控:

Bash
watch -n 1 nvidia-smi

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

八、性能调优(8卡5090专属)

8.1 关键参数优化

Bash
# 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(非统一内存访问)优化,采用“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
# 示例:前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

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

[ 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)

Read more

(3-2)机器人身体结构与人体仿生学:人形机器人躯干系统

(3-2)机器人身体结构与人体仿生学:人形机器人躯干系统

3.2  人形机器人躯干系统 躯干是人形机器人的核心支撑与功能集成单元,承担连接四肢、容纳核心部件(电池、控制器、传感器)、传递运动力矩及维持动态平衡的多重使命。其设计需在人体仿生学(如脊柱运动特性、躯干质量分布)与工程实现(结构刚度、驱动效率、空间利用率)之间找到最优平衡,直接决定机器人的运动协调性、负载能力与运行稳定性。 3.2.1  躯干结构方案 人形机器人躯干结构如图3-6所示,躯干是连接四肢、承载核心部件(电池、控制器、传感器)并传递运动力矩的关键载体,其结构设计的核心矛盾是刚度与灵活性的平衡、集成效率与维护便捷性的取舍。 图3-6  人形机器人躯干的结构 当前工程领域形成了三类主流方案,均围绕“仿生适配+工程落地”展开,具体设计特性与适用场景如下。 1. 一体化结构方案 (1)设计逻辑: 以“极致刚性与结构稳定性”为核心,采用整体式无拆分框架,通过高性能复合材料一体成型工艺,

硬核:如何用大疆 SRT 数据实现高精度 AR 视频投射?

硬核:如何用大疆 SRT 数据实现高精度 AR 视频投射?

随着行业无人机的普及,“视频 + GIS”(Video AR)的需求在安防、巡检、应急指挥场景中越来越高频。 所谓 Video AR,简单说就是把无人机实时/回放的视频,“贴”在三维地图(如 Cesium)的对应位置上。让操作员既能看到真实的视频画面,又能看到视频中对应的地理信息(路网、标注、POI)。 听起来原理很简单:拿到无人机的位置和姿态,把地图摄像机摆过去不就行了? “能做出来”和“能用”是两码事。 今天我们就来复盘一下,如何从零实现一个 Video GIS 系统,以及如何解决那些让开发者头秃的“对不准、飘移、画面乱转”等核心痛点。 第一部分:如何实现?(基础篇) 实现一套视频融合系统,核心在于 “双层叠加”与“时空同步”。我们的技术栈选用 Vue3

Microi吾码:开源低代码,微服务开发的利器

Microi吾码:开源低代码,微服务开发的利器

前言 在微服务架构的应用中,服务的灵活性和可扩展性至关重要。Microi吾码作为一个高效的微服务框架,凭借其轻量级、可插拔的特性,已经成为开发者构建分布式应用的首选工具。除了基础的微服务开发功能外,Microi吾码还提供了丰富的扩展功能,其中表单引擎是一个重要亮点。本篇博客将详细介绍Microi吾码的特点,以及如何使用其表单引擎和其他实用功能。 一. Microi吾码简介 Microi吾码是一个基于Spring Boot构建的微服务框架,致力于为开发者提供简单、灵活的解决方案,帮助他们高效构建分布式应用。它整合了常用的微服务功能,如服务注册与发现、负载均衡、熔断器、API网关、配置中心等,使得开发者无需从零开始构建基础设施,从而专注于业务逻辑。 1.1 核心特点 Microi吾码的核心特点: * 轻量级:基于Spring Boot,极大地简化了项目配置和开发流程。 * 高度可扩展:提供丰富的插件支持,可以根据需要定制功能。 * 开箱即用:内置常见的微服务功能,减少了开发者的重复工作。 * 开发友好:支持热部署和自动化构建,提升开发效率。 1.2 功能介绍

低空经济新实践:无人机如何革新光伏电站巡检

低空经济新实践:无人机如何革新光伏电站巡检

引言:当低空经济遇见新能源革命 在“双碳”战略引领下,光伏电站如雨后春笋般遍布神州大地。截至2023年底,我国光伏发电装机容量已突破6亿千瓦,连续多年位居全球首位。然而,随着光伏电站规模的急剧扩大,传统人工巡检方式已难以满足高效、精准的运维需求。此时,低空经济的崛起为这一痛点带来了创新解法——无人机光伏巡检技术正在重新定义新能源设施的运维模式。 一、传统光伏巡检之困:低效、高风险、不精准 传统光伏巡检主要依赖人工方式,运维人员需要手持红外热像仪等设备,在光伏板阵列中徒步检查。这种方式存在明显短板: 1. 效率低下:一个100MW的光伏电站,人工全面巡检往往需要数周时间 2. 安全风险:高温、高电压环境下作业,人员安全隐患不容忽视 3. 漏检率高:人工目视检查难以发现细微缺陷,问题检出率通常不足70% 4. 数据离散:检查结果依赖个人经验,难以形成标准化数据资产 二、无人机智能巡检系统架构 现代无人机光伏巡检已形成完整的系统解决方案,主要由以下核心模块组成: 2.1 硬件配置 * 飞行平台: