B300 现在根本不是你想买就能买到的,又贵又稀缺,到处都是询价的,却没几个人摸过真机。

我们就想做一件全网现在还很难看到的事——跑一次 GLM-5.2-FP8 的硬核实测,看看企业真要把它用到生产环境,选型到底该盯哪些点。

B300 是 Blackwell 架构,部署成功的关键在于整条软件栈必须匹配:

  • NVIDIA 驱动:580.159.04
  • Fabric Manager:580.159.04-1,必须与驱动严格一致
  • CUDA Toolkit:13.0
  • DOCA-OFED:24.10-4.1.4.0
  • NCCL:CUDA 13 对应版本
  • PyTorch:2.5+ cu130
  • 推理框架:SGLang
  • 模型:GLM-5.2-FP8

本文按工程实践方式记录一次完整部署过程:

系统准备 → 高速网络 → GPU 驱动 → Fabric Manager → CUDA 13 → Python 环境 → SGLang 启动 → benchmark 验证。

本次实测中,8 卡 Tensor Parallel 成功跑通 GLM-5.2-FP8,关键压测结果如下:

指标实测结果
后端sglang
最大并发16
成功请求数8
压测时长8.63 s
请求吞吐0.93 req/s
输入 token 吞吐4449.39 tok/s
输出 token 吞吐309.28 tok/s
峰值输出吞吐607.00 tok/s
总 token 吞吐4758.67 tok/s
平均并发5.13

结论先放前面:B300 不是简单的“升级换卡”,而是一次 GPU、驱动、网络、多卡通信和推理框架的全链路升级。


一、场景背景

1.1 要解决的具体问题

本文解决的问题是:

如何在 Ubuntu 22.04 环境下,将 NVIDIA B300 GPU 从系统安装阶段配置到可运行 GLM-5.2-FP8 推理服务,并通过 benchmark 验证服务可用性和性能?

这个问题在实际部署中容易被低估。很多团队以为新机器到位后,只需要:

安装驱动 -> nvidia-smi 正常 -> 启动模型服务

但在 B300 上,这条路径很容易失败。

原因是 B300 属于 Blackwell 架构,涉及 CUDA 13、FP8、NVLink / NVSwitch、InfiniBand、NCCL、SGLang / vLLM 等一整套组件。只要其中一个版本或配置不匹配,可能出现以下问题:

  • GPU 能被识别,但多卡通信失败;
  • nvidia-smi 正常,但 nvidia-smi nvlink --status 报错;
  • 推理服务卡在 load checkpoint 阶段;
  • NCCL 没走 InfiniBand,而是 fallback 到 SOCKET;
  • FP8 模型加载失败;
  • 服务能启动,但吞吐或延迟明显不符合预期。

1.2 为什么 B300 部署比 A100 / H100 更容易踩坑?

核心原因是:B300 的硬件能力需要更高版本的软件栈才能释放。

组件常见问题
NVIDIA 驱动老版本驱动可能识别不了 B300,或者无法暴露完整能力。
Fabric ManagerNVLink / NVSwitch 多卡通信依赖它,版本不一致会导致 P2P 失败。
CUDA 13Blackwell 相关特性需要 CUDA 13 支持。
DOCA-OFED / InfiniBand配置错误会导致 RDMA、NCCL 退化。
NCCL多卡 / 多机通信性能依赖 NCCL 正确识别高速网络。
SGLang / vLLMFP8、MoE、Tensor Parallel 支持持续迭代,版本不对可能启动失败。
GLM-5.2-FP8模型路径、量化配置、TP 参数都需要匹配。

一句话总结:

B300 部署不是验证某一个命令成功,而是要验证 GPU、网络、通信库、推理框架和模型服务的闭环。


二、技术方案

2.1 推荐部署顺序

建议严格按照以下顺序执行:

  1. 系统准备,禁用 Nouveau;
  2. 安装 DOCA-OFED,验证 InfiniBand;
  3. 安装 NVIDIA 驱动 580.159.04;
  4. 安装 Fabric Manager 580.159.04-1;
  5. 安装 CUDA Toolkit 13.0;
  6. 安装 Python / PyTorch / SGLang 环境;
  7. 做系统级优化;
  8. 启动 GLM-5.2-FP8 推理服务;
  9. 跑 benchmark 验证吞吐和延迟。

为什么要这个顺序?

因为 B300 的排障成本很高。如果一开始就启动模型服务,错误可能来自驱动、CUDA、NCCL、Fabric Manager、模型路径、容器挂载、量化配置等多个层面,很难定位。

更稳妥的方法是:每安装一层,就验证一层。

2.2 版本锁定清单

建议先把版本锁死,不要边安装边升级。

组件推荐版本说明
操作系统Ubuntu 22.04 LTS服务器版,LTS 长期支持。
内核5.15+与 NVIDIA 580 驱动兼容。
NVIDIA 驱动580.159.04B300 专用驱动。
Fabric Manager580.159.04-1必须与驱动版本严格一致。
CUDA Toolkit13.0Blackwell 完整特性支持。
DOCA-OFED24.10-4.1.4.0高速网络与 GPUDirect RDMA。
cuDNN9.x for CUDA 13深度学习基础库。
NCCL2.x for CUDA 13多卡 / 多机通信。
PyTorch2.5+ cu130训练 / 推理框架依赖。

关键经验:

驱动和 Fabric Manager 的版本必须严格一致。实测中遇到过 Fabric Manager 小版本落后,导致 nvidia-smi nvlink --status 报错、多卡通信无法建立的问题。


2.3 第 1 步:系统准备,禁用 Nouveau

Nouveau 是开源 NVIDIA 驱动,可能和官方 NVIDIA 驱动冲突。安装 B300 驱动前建议先禁用。

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y build-essential dkms linux-headers-$(uname -r) \
    wget curl vim git net-tools pciutils ethtool openssh-server python3-pip

# 禁用 Nouveau,避免和 NVIDIA 驱动冲突
sudo bash -c "cat > /etc/modprobe.d/blacklist-nouveau.conf" << EOF
blacklist nouveau
options nouveau modeset=0
EOF

sudo update-initramfs -u
sudo reboot

重启后验证:

lsmod | grep nouveau   # 应无输出
lspci | grep -i nvidia  # 应能看到 B300

验证标准:

  • lsmod | grep nouveau 无输出;
  • lspci | grep -i nvidia 能看到 NVIDIA 设备。

2.4 第 2 步:安装 DOCA-OFED,先验证高速网络

B300 集群通常配合 ConnectX-7 / InfiniBand 使用。多机训练或推理场景下,InfiniBand、RDMA、NCCL 的配置会直接影响性能。

本次使用 DOCA-OFED 24.10:

cd ~/downloads
wget https://content.mellanox.com/ofed/MLNX_OFED-24.10-4.1.4.0/MLNX_OFED_LINUX-24.10-4.1.4.0-ubuntu22.04-x86_64.tgz
tar -xzf MLNX_OFED_LINUX-24.10-4.1.4.0-ubuntu22.04-x86_64.tgz
cd MLNX_OFED_LINUX-24.10-4.1.4.0-ubuntu22.04-x86_64

sudo ./mlnxofedinstall --all --with-doca
sudo /etc/init.d/openibd restart

# 验证
ofed_info -s
ibstat

如果需要 GPUDirect RDMA,可继续配置:

echo "options nvidia NVreg_EnableGpuFirmwareLogs=2" | sudo tee /etc/modprobe.d/nvidia.conf
echo "options mlx5_core enable_nvpeer=1" | sudo tee -a /etc/modprobe.d/mlx5.conf

# 网络缓冲区优化
sudo sysctl -w net.core.rmem_max=268435456
sudo sysctl -w net.core.wmem_max=268435456

验证标准:

  • ofed_info -s 能显示 DOCA-OFED 版本;
  • ibstat 中链路状态应为 Active
  • 后续 NCCL 日志中应确认走的是 IB,而不是 SOCKET。

注意:不要只看网络能不能 ping 通。ping 通只能说明 IP 网络可达,不代表 RDMA / InfiniBand / NCCL 链路正常。


2.5 第 3 步:安装 NVIDIA 驱动 580.159.04

B300 需要匹配的新驱动。本次实测使用 580.159.04。

cd ~/downloads/nvidia_driver
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/580.159.04/NVIDIA-Linux-x86_64-580.159.04.run
chmod +x NVIDIA-Linux-x86_64-580.159.04.run

sudo systemctl isolate multi-user.target
sudo ./NVIDIA-Linux-x86_64-580.159.04.run

# 安装选项:接受协议;自动更新 X 配置选 No;32 位兼容库可选 Yes;运行 nvidia-xconfig 选 No
sudo reboot

重启后检查:

nvidia-smi
# 应显示 Driver Version: 580.159.04,CUDA Version: 13.0

验证标准:

  • nvidia-smi 能识别 GPU;
  • Driver Version 为 580.159.04
  • CUDA Version 显示 13.0

2.6 第 4 步:安装 Fabric Manager,验证多卡互通

Fabric Manager 是 B300 多卡互通的关键组件。NVLink / NVSwitch 通信依赖它。

版本要求:

Fabric Manager 版本必须和 NVIDIA 驱动版本完全一致。

安装命令:

# 添加 NVIDIA 仓库
distribution=$(. /etc/os-release; echo $ID$VERSION_ID | sed -e 's/\.//g')
wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt update

# 安装指定版本
sudo apt install -y nvidia-fabricmanager-580=580.159.04-1
sudo systemctl start nvidia-fabricmanager
sudo systemctl enable nvidia-fabricmanager

验证:

sudo systemctl status nvidia-fabricmanager
nvidia-smi nvlink --status
nvidia-smi nvlink --capabilities

验证标准:

  • nvidia-fabricmanager 服务为 active;
  • nvidia-smi nvlink --status 不报错;
  • 多卡通信链路可被正常识别。

常见坑:

问题可能原因解决方案
nvidia-smi nvlink --status 报错Fabric Manager 版本不匹配安装与驱动严格一致的版本。
多卡 P2P 失败Fabric Manager 未启动检查 systemd 服务状态。
单卡可用,多卡推理失败NVLink / NCCL 异常继续检查 Fabric Manager 和 NCCL 日志。

2.7 第 5 步:安装 CUDA Toolkit 13.0

Blackwell 相关能力需要 CUDA 13 及匹配的库支持。

wget https://developer.download.nvidia.com/compute/cuda/13.0.0/local_installers/cuda_13.0.0_580.32.07_linux.run
chmod +x cuda_13.0.0_580.32.07_linux.run
sudo sh cuda_13.0.0_580.32.07_linux.run --silent --toolkit --samples

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

# 验证
nvcc --version
# 应显示 release 13.0

验证标准:

nvcc --version

输出中应包含:

release 13.0

如果深度学习框架报类似 CUDA capability 10.0+ required 的错误,需要重点检查:

  • 是否误装 CUDA 12;
  • PyTorch 是否是 cu130 版本;
  • 容器内 CUDA / NCCL 是否与宿主机兼容。

2.8 第 6 步:安装 Python 深度学习环境

建议使用 Python 3.11 虚拟环境,避免污染系统 Python。

# Python 3.11
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
sudo apt install -y python3.11 python3.11-venv python3.11-dev
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11

# 创建虚拟环境
python3.11 -m venv ~/b300-env
source ~/b300-env/bin/activate

# PyTorch for CUDA 13.0
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130

# 推理和优化工具
pip install transformers accelerate vllm sglang flash-attn --no-build-isolation
pip install deepspeed

验证 GPU 是否可被 PyTorch 识别:

python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"

验证标准:

  • torch.cuda.is_available() 返回 True
  • 能输出 GPU 名称。

2.9 第 7 步:系统级优化

这些优化不是必须解决所有问题,但能减少资源限制和性能抖动。

# GPU 持久模式 + 功耗限制
sudo nvidia-smi -pm 1
sudo nvidia-smi -pl 700

# 文件描述符和内存锁
sudo bash -c "cat >> /etc/security/limits.conf" << EOF
*    soft    nofile    65536
*    hard    nofile    65536
*    soft    memlock   unlimited
*    hard    memlock   unlimited
EOF

# 共享内存
sudo bash -c "cat >> /etc/sysctl.conf" << EOF
kernel.shmmax = 68719476736
kernel.shmall = 16777216
EOF
sudo sysctl -p

# 禁用透明大页
sudo systemctl disable --now systemd-timesyncd  # 示例

这里需要特别说明:

原始记录中“禁用透明大页”的命令示例实际指向 systemd-timesyncd,与透明大页配置不完全对应。生产环境建议补充准确的 THP 配置命令,并通过系统文件确认 THP 状态。


2.10 启动 GLM-5.2-FP8 推理服务

当以上环境都验证通过后,再启动 SGLang 推理服务。

本次测试使用 8 卡 Tensor Parallel:

docker run --gpus all \
  --shm-size 32g \
  -p 30000:30000 \
  -v /models:/models \
  --ipc=host \
  -e PYTHONUNBUFFERED=1 \
  -e NCCL_DEBUG=WARN \
  lmsysorg/sglang:latest \
  sglang serve \
    --model-path /models/GLM-5.2-FP8 \
    --tp 8 \
    --mem-fraction-static 0.8 \
    --enforce-disable-flashinfer-allreduce-fusion \
    --host 0.0.0.0

在这里插入图片描述

启动日志中重点看这些信号:

  • CUDA 版本:CUDA Version 13.0.1
  • NCCL 版本:NCCL version 2.28.9+cuda13.0
  • DeepGemm 已启用,用于 Blackwell FP8 推理加速;
  • FlashInfer TRTLLM MoE 后端初始化;
  • 8 个 tensor parallel rank 依次完成初始化;
  • 服务监听:http://0.0.0.0:30000

常见启动问题如下:

现象可能原因排查建议
load checkpoint 阶段卡住模型路径错误或权限不足检查 /models/GLM-5.2-FP8 是否存在,容器挂载是否成功。
FP8 相关报错量化配置与框架版本不匹配检查模型配置、SGLang 版本、CUDA / NCCL 日志。
--tp 8 启动失败GPU 数量或可见设备不匹配检查 docker --gpus allnvidia-smiCUDA_VISIBLE_DEVICES
多卡通信失败Fabric Manager 或 NCCL 异常检查 nvidia-smi nvlink --status 和 NCCL 日志。
性能明显偏低NCCL 可能 fallback 到 SOCKET开启 NCCL 日志,确认是否走 IB。

三、核心指标

3.1 benchmark 测试条件

服务启动后,使用 SGLang benchmark 工具做压测。

测试条件:

  • 最大并发:16;
  • 成功请求数:8;
  • 输入 token 总量:38412;
  • 输出 token 总量:2670。

在这里插入图片描述

3.2 吞吐指标

指标数值
后端sglang
最大并发16
成功请求数8
压测时长8.63 s
请求吞吐0.93 req/s
输入 token 吞吐4449.39 tok/s
输出 token 吞吐309.28 tok/s
峰值输出吞吐607.00 tok/s
总 token 吞吐4758.67 tok/s
平均并发5.13

3.3 延迟指标

端到端延迟如下:

在这里插入图片描述

分位E2E Latency (ms)TTFT (ms)TPOT (ms)ITL (ms)
Mean5535.541294.3112.9212.75
Median5855.461356.8612.7312.40
P907604.151447.7813.4712.60
P958108.001448.5413.9212.64
P998511.071449.1414.2714.82

3.4 如何解读这些指标?

1. TTFT 约 1.3s

TTFT 是首 token 延迟。此次输入 token 总量为 38412,属于长上下文输入,预填充阶段开销较大。因此 TTFT 约 1.3s 属于可以解释的范围。

2. TPOT 约 12.7 - 13 ms/token

TPOT 反映单 token 生成阶段延迟。该数值说明 FP8 推理链路已经跑通,生成阶段比较稳定。

3. 峰值输出吞吐 607 tok/s

说明在并发爬坡阶段,GPU 利用率能够被拉起来,B300 的 FP8 推理能力能够发挥出来。

4. P99 E2E 延迟达到 8.5s

当并发接近当前配置上限时,队列等待时间会明显增加。

生产环境中不能只看平均值,建议同时关注:

  • TTFT;
  • TPOT;
  • P95 / P99 E2E 延迟;
  • 请求失败数;
  • GPU 利用率;
  • NCCL 通信路径;
  • 队列等待时间。

四、适用 / 不适用场景

4.1 适用场景

本文方案适合以下场景:

  1. 单机 8 卡 B300 推理验证
    需要快速验证 B300 是否能跑通 GLM-5.2-FP8、SGLang、FP8 推理链路。

  2. 大模型 FP8 推理部署
    模型使用 FP8 量化,需要 Blackwell、CUDA 13、SGLang / vLLM 等新版本能力。

  3. 长上下文推理压测
    需要关注 TTFT、TPOT、P95 / P99 延迟和 token 吞吐。

  4. 多卡 Tensor Parallel 推理
    需要验证 8 卡 TP、NVLink / NVSwitch、Fabric Manager、NCCL 是否正常。

  5. 从单机扩展到多机前的基础验证
    建议先按本文流程跑通单机,再扩展到多节点。

4.2 不适用场景

本文不完全适用于以下场景:

  1. 不同 GPU 架构
    如果是 A100、H100 或其他 GPU,驱动、CUDA、功耗限制、通信配置可能不同。

  2. 非 Ubuntu 22.04 系统
    本文命令基于 Ubuntu 22.04,其他发行版需要调整包管理和驱动安装方式。

  3. 生产级多机集群完整方案
    本文重点是单机 8 卡实测。多机生产环境还需要补充 SSH 互信、主机名解析、NCCL 拓扑、故障恢复、监控告警、灰度发布等内容。

  4. 所有模型的性能评估
    benchmark 数据只代表本文环境、模型、并发和输入输出长度下的结果,不能直接外推到所有业务。

  5. 成本评估或云厂商选型
    原文没有提供价格、成本、SLA 或云厂商资源规格,因此本文不做成本结论。


五、FAQ

Q1:B300 部署时最容易踩的坑是什么?

最容易踩的坑是只验证 nvidia-smi,没有继续验证 Fabric Manager、NVLink、NCCL 和 InfiniBand。

nvidia-smi 正常只能说明 GPU 驱动基本可用,不能说明多卡通信、RDMA、NCCL 和推理服务都正常。

建议至少完成以下验证:

nvidia-smi
sudo systemctl status nvidia-fabricmanager
nvidia-smi nvlink --status
ofed_info -s
ibstat
python -c "import torch; print(torch.cuda.is_available())"

Q2:为什么 Fabric Manager 必须和驱动版本一致?

Fabric Manager 负责管理 NVLink / NVSwitch 等多 GPU 通信能力。

实测中遇到过 Fabric Manager 小版本落后,导致:

  • nvidia-smi nvlink --status 报错;
  • 多卡通信无法建立;
  • 推理服务启动异常。

因此建议使用 apt 仓库安装指定版本:

sudo apt install -y nvidia-fabricmanager-580=580.159.04-1

避免手动下载多个 deb 包导致版本混装。


Q3:什么时候需要重点检查 InfiniBand 和 NCCL?

以下情况都需要重点检查:

  • 从单机扩展到多机;
  • 多卡推理性能明显低于预期;
  • NCCL 初始化慢;
  • GPU 利用率不均衡;
  • 日志中出现 SOCKET fallback;
  • benchmark 吞吐偏低。

检查命令包括:

ibstat
ofed_info -s

同时建议打开 NCCL 日志,确认通信是否走 IB,而不是 SOCKET。


Q4:GLM-5.2-FP8 启动失败时先查什么?

优先查三项:

  1. 模型路径是否存在;
  2. FP8 量化配置是否与 SGLang 版本匹配;
  3. --tp 8 是否与实际 GPU 数量一致。

比如本文启动命令中:

--model-path /models/GLM-5.2-FP8
--tp 8
--mem-fraction-static 0.8

如果 /models/GLM-5.2-FP8 在容器内不存在,或者宿主机目录没有正确挂载,就容易卡在 load checkpoint 阶段。


Q5:CUDA 13 是必须的吗?

在本文 B300 / Blackwell / GLM-5.2-FP8 场景下,建议使用 CUDA 13。

原因是 Blackwell 相关特性和新架构支持需要 CUDA 13 及对应生态库配合。如果误装 CUDA 12,可能出现:

  • PyTorch 不识别 GPU 能力;
  • FP8 相关算子不可用;
  • SGLang / vLLM 启动失败;
  • CUDA capability 10.0+ required 等兼容性错误。

Q6:这组 benchmark 数据能代表生产性能吗?

不能直接代表所有生产场景。

这组数据只说明在本文环境、模型、并发和输入输出 token 条件下,B300 可以跑通 GLM-5.2-FP8,并获得如下结果:

  • 输入 token 吞吐:4449.39 tok/s;
  • 输出 token 吞吐:309.28 tok/s;
  • 峰值输出吞吐:607.00 tok/s;
  • P99 E2E 延迟:8511.07 ms。

生产环境还需要根据真实业务重新压测,包括:

  • 请求长度分布;
  • 并发峰值;
  • SLA;
  • 多轮对话比例;
  • 是否流式输出;
  • 容灾和降级策略;
  • GPU 利用率和成本目标。

Q7:部署完成后怎么做 checklist 验证?

可以按下面这张表逐项检查。

阶段需要解决的问题解决方案验证方式
系统准备Nouveau 可能与 NVIDIA 驱动冲突禁用 Nouveau 并重启`lsmod
GPU 驱动B300 需要匹配驱动安装 580.159.04nvidia-smi 显示正确驱动版本
多卡通信NVLink / NVSwitch 依赖 Fabric Manager安装 580.159.04-1systemctl status nvidia-fabricmanagernvidia-smi nvlink --status
CUDABlackwell 需要 CUDA 13 环境安装 CUDA Toolkit 13.0nvcc --version 显示 release 13.0
高速网络RDMA / NCCL 可能 fallback安装 DOCA-OFED 并检查 IBofed_info -sibstat、NCCL 日志
推理框架FP8 / Tensor Parallel 依赖框架支持安装 SGLang / PyTorch cu130torch.cuda.is_available() 返回 True
模型服务模型路径、量化配置、TP 参数可能不一致使用 SGLang 启动 GLM-5.2-FP88 个 TP rank 初始化完成,服务监听 30000
性能验证服务可用不等于性能达标运行 benchmark查看吞吐、TTFT、TPOT、P95 / P99 延迟

七、参考链接

  • NVIDIA CUDA Toolkit 下载页: https://developer.nvidia.com/cuda-downloads
  • NVIDIA 驱动下载页: https://www.nvidia.com/Download/index.aspx
  • NVIDIA DOCA / OFED 相关资料: https://developer.nvidia.com/networking/doca
  • SGLang 项目: https://github.com/sgl-project/sglang
  • PyTorch 安装说明: https://pytorch.org/get-started/locally/

总结

B300 部署的难点不在某一条命令,而在全链路版本和配置对齐。

推荐实践是:

  1. 先锁定版本;
  2. 按顺序安装系统、网络、驱动、Fabric Manager、CUDA、推理环境;
  3. 每完成一层就验证一层;
  4. 先跑通单机 8 卡,再扩多机;
  5. 最后用 benchmark 验证吞吐、TTFT、TPOT 和 P99 延迟。

本次实测表明,在 8 卡 Tensor Parallel、SGLang、GLM-5.2-FP8 场景下,B300 能够成功启动推理服务并完成压测,输入 token 吞吐达到 4449.39 tok/s,输出 token 吞吐达到 309.28 tok/s,峰值输出吞吐达到 607.00 tok/s。

真正耗时的部分不是最后的 sglang serve 命令,而是前期驱动、Fabric Manager、CUDA、DOCA-OFED、NCCL 和模型配置的逐项对齐。

注:本次测评由优刻得技术研究院支持,包含部署环境、设备等资源。

更多推荐