系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

版本信息最后核对:2026-10-24

fp8-inference

FP8 推理:用 8 位浮点降低显存和带宽,在 Hopper/Ada 上提升吞吐

补充说明

FP8 是 8 位浮点格式,常用两种编码:E4M3(4 位指数、3 位尾数,精度更高)和 E5M2(5 位指数、2 位尾数,动态范围更大)。在支持 FP8 的 NVIDIA GPU(Hopper H100/H200、Ada 部分型号、Blackwell)上,矩阵乘可以用 FP8 Tensor Core 加速,权重和激活占用约为 FP16 的一半,带宽压力也更小。

FP8 不是简单地把权重截断。通常需要校准(calibration)或动态缩放(dynamic scaling)来确定激活的缩放因子,避免溢出或精度损失。vLLM、TensorRT-LLM、Transformer Engine 都提供 FP8 路径;不同框架的 checkpoint 格式、校准数据和开启方式不同。

常用示例

# 确认 GPU 是否支持 FP8(Hopper/Ada/Blackwell)
nvidia-smi --query-gpu=name,compute_cap --format=csv
# H100 的 compute capability 是 9.0,Ada 是 8.9

# vLLM:加载已量化好的 FP8 checkpoint
vllm serve /models/Qwen2.5-7B-Instruct-FP8 \
  --quantization fp8 --dtype auto \
  --host 0.0.0.0 --port 8000

# vLLM:在线量化(按版本支持情况)
vllm serve Qwen/Qwen2.5-7B-Instruct \
  --quantization fp8 --dtype bfloat16 \
  --host 0.0.0.0 --port 8000
# 对比 FP16 与 FP8 的显存和吞吐
nvidia-smi --query-gpu=memory.used,utilization.gpu --format=csv -l 1
# 用相同并发和输入长度压测,记录 tokens/s、TTFT、TPOT 和显存峰值

# 精度验收:用业务评测集对比 FP16/FP8 输出
# 关注代码、数学、JSON 结构化输出和长上下文任务,不只看困惑度

TensorRT-LLM 通常需要先转换 checkpoint 并构建 FP8 engine;Transformer Engine 在训练/推理中自动管理 FP8 缩放。上线前要固定驱动、CUDA、框架版本,并记录校准数据。

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. FP8 的 E4M3 和 E5M2 有什么区别?
  2. 为什么 FP8 需要校准或动态缩放?
  3. FP8 上线前应该用哪些任务做精度验收?
答案
  1. E4M3 尾数更多、精度更高但动态范围较小;E5M2 指数更多、动态范围更大但精度较低。
  2. 8 位表示的动态范围有限,激活值可能溢出或下溢;校准/动态缩放用于确定合适的缩放因子,减少精度损失。
  3. 代码、数学、JSON/结构化输出、长上下文和业务问答;用真实评测集对比 FP16/BF16 基线,不能只看困惑度。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令