AI计算中的数值精度怎么选:FP64、TF32、BF16、FP8、INT4与NVFP4解析
本文从动态范围、有效精度、存储格式、计算格式、累加精度、缩放方式和硬件支持出发,说明FP64、FP32、TF32、BF16、FP16、FP8、INT8、INT4与NVFP4的区别,并给出科学计算、大模型训练和推理部署中的判断方法。帮助AI服务器、科学计算和大模型部署人员理解不同数值精度的结构、计算路径及适用边界,避免仅按位宽判断显存、性能和模型质量。
- Slug
ai-compute-precision-formats- 更新
- 2026-07-17
- 来源
- 6
- 关系
- 5
先给结论:精度选择不能只看位宽
FP64、FP32、TF32、BF16、FP16、FP8、INT8、INT4和NVFP4都与数值精度有关,但它们并不处于完全相同的技术层级。部分是常规浮点格式,部分是Tensor Core计算模式,部分还必须结合缩放、校准和量化内核理解。
位宽降低通常有利于减少数据存储和搬运量,但不代表实际显存一定按同比例下降,也不代表端到端计算一定更快。最终结果取决于数据对象、GPU架构、算子覆盖、框架实现、缩放策略和模型质量要求。
| 格式或方案 | 主要定位 | 常见场景 | 首先核对的边界 |
|---|---|---|---|
| FP64 | 双精度浮点 | 高精度科学计算、数值模拟 | GPU双精度算力和应用误差要求 |
| FP32 | 单精度浮点 | 通用计算、高精度基线 | 算力、显存和实际计算模式 |
| TF32 | Tensor Core计算模式 | 部分FP32矩阵计算加速 | GPU架构、库设置和精度容差 |
| BF16 / FP16 | 16位浮点 | 大模型训练、微调和高精度推理 | 动态范围、损失缩放和累加精度 |
| FP8 | 低精度浮点与缩放方案 | 具备匹配硬件和软件栈的训练与推理 | E4M3/E5M2、缩放方式和内核覆盖 |
| INT8 / INT4 | 整数低比特量化 | 生产推理、权重压缩和带宽优化 | 量化对象、scale、zero point和计算精度 |
| NVFP4 | 带两级缩放的4位浮点方案 | Blackwell平台上的低精度训练或推理路径 | 模型、量化工具、运行后端和Blackwell支持 |
先区分四件事:存储、计算、累加与量化
描述AI工作负载时,只写“使用FP8”或“使用INT4”通常不够。权重、激活、梯度、累加结果和KV Cache可能采用不同格式,同一模型也可能同时包含多种精度路径。
| 层级 | 需要回答的问题 | 常见误区 |
|---|---|---|
| 存储格式 | 权重或张量以什么格式保存在内存、显存或模型文件中 | 把模型文件大小直接等同于运行显存 |
| 计算格式 | GPU计算单元执行乘法等操作时采用什么精度 | 看到模型格式后默认全部算子都以相同精度执行 |
| 累加精度 | 矩阵乘加结果以什么精度累积 | 忽略累加精度对数值稳定性和结果误差的影响 |
| 量化方案 | 哪些数据被量化,以及scale、zero point、分组和校准如何设置 | 把相同位宽的不同量化方法视为同一方案 |
例如,模型权重可以采用4位表示,激活保留16位,部分矩阵计算执行反量化后再进入高精度路径,累加结果则使用FP32。验收时应记录完整执行链路,而不是只记录一个位宽。
浮点数中的范围与精度分别由什么决定
常见二进制浮点数由符号位、指数位和尾数位组成。符号位决定正负;指数位主要影响可表示数值的动态范围;尾数位主要影响相邻可表示数值的间隔,也就是有效精度。
- 指数位更多:通常可以覆盖更大或更小的数值范围,但不代表小数一定更精细。
- 尾数位更多:通常能够保留更细的数值差异,但不代表动态范围一定更大。
- 总位宽更低:数据本体通常更紧凑,但需要通过缩放、混合精度或其他方法控制误差。
因此,BF16和FP16虽然都是16位,动态范围和有效精度仍然不同;FP8 E4M3和E5M2同为8位,也对应不同的范围与精度取舍。
常见AI计算格式对比
| 格式 | 典型结构或表示 | 主要特点 | 常见用途 |
|---|---|---|---|
| FP64 | 1位符号+11位指数+52位尾数 | 在本页所列常规格式中精度和范围较高,存储与计算成本也较高 | 高精度科学计算、工程仿真和数值分析 |
| FP32 | 1位符号+8位指数+23位尾数 | 范围和精度较均衡,常用于高精度基线 | 通用计算、传统深度学习和质量对照 |
| TF32 | 常按1位符号+8位指数+10位尾数理解乘法输入 | 保留接近FP32的动态范围,降低部分矩阵计算的有效尾数精度 | NVIDIA Tensor Core上的部分FP32矩阵运算 |
| BF16 | 1位符号+8位指数+7位尾数 | 动态范围接近FP32,尾数精度低于FP16 | 大模型训练、微调和高精度推理 |
| FP16 | 1位符号+5位指数+10位尾数 | 尾数位多于BF16,但动态范围更窄 | 混合精度训练、推理和图形计算 |
| FP8 E4M3 | 1位符号+4位指数+3位尾数 | 相对侧重有效精度,仍需配合缩放策略 | 部分权重、激活和训练或推理计算 |
| FP8 E5M2 | 1位符号+5位指数+2位尾数 | 相对侧重动态范围,具体用途由训练配方决定 | 部分梯度、激活或其他低精度路径 |
| INT8 / INT4 | 整数编码+scale,可选zero point | 数值含义依赖量化方式,不直接保留浮点指数结构 | 权重、激活和KV Cache量化 |
| NVFP4 | E2M1数值本体+微块级E4M3 scale+张量级FP32 scale | 通过两级缩放改善4位浮点的数值覆盖能力 | Blackwell平台支持的低精度训练或推理方案 |
表中的结构用于说明主要差异,不等同于完整执行路径。具体数值范围、特殊值编码、舍入方式和计算行为还需结合数据类型变体、硬件架构及软件实现核对。
FP64、FP32与TF32:不要把存储格式和计算模式混为一谈
FP64适合对累计误差、收敛稳定性或结果可重复性要求较高的科学计算任务。是否需要FP64,应由算法误差容限和软件特性决定,不能仅依据GPU是否标注双精度算力。
FP32长期用于通用计算和深度学习高精度基线。当前训练和推理通常会采用混合精度,但FP32仍常用于部分参数、归一化、累加或质量对照。
TF32是NVIDIA自Ampere架构引入的Tensor Core计算模式。它通常接收FP32输入,在部分矩阵运算中保留FP32级别的指数范围并降低乘法阶段的尾数精度,累加通常仍采用FP32。
因此,TF32不能简单理解为一种19位模型权重存储格式。实际是否启用TF32,还取决于GPU、CUDA数学库、深度学习框架设置和应用对数值误差的容忍度。
BF16与FP16:同为16位,取舍并不相同
BF16保留8位指数,动态范围接近FP32,但只有7位尾数。FP16具有10位尾数,能表示更细的数值差异,但指数位较少,更容易在训练中遇到溢出或下溢。
BF16常被用于大模型训练和推理,但“使用BF16”不代表权重、激活、梯度、累加和通信全部固定为BF16。实际系统通常采用混合精度,并对关键算子保留更高精度。
FP16仍是广泛使用的训练和推理格式。训练时可能需要损失缩放等机制控制数值风险,是否适用应以模型官方建议、GPU能力和框架实现为准。
FP8:格式只是基础,缩放和内核决定能否落地
FP8常见编码包括E4M3和E5M2。E4M3相对侧重有效精度,E5M2相对侧重动态范围。在部分训练配方中,两者会用于不同张量或不同阶段,但这不是脱离模型和框架的固定规则。
FP8通常需要per-tensor、per-channel、per-row或block scaling等缩放方式。缩放粒度越细,可能越有利于控制局部离群值,但元数据、内核和调度也会更复杂。
NVIDIA Hopper平台通过FP8 Tensor Core推动了FP8训练和推理应用,Blackwell进一步扩展了低精度路径。硬件支持不代表当前模型和后端已具备完整算子覆盖。
评估FP8时,应同时检查模型格式、缩放方法、GPU架构、Transformer Engine或推理后端版本,以及加载日志中是否出现类型转换和算子回退。
INT8与INT4:整数本体必须结合scale理解
INT8和INT4本身不直接表示连续小数。量化过程会将浮点值映射到有限的整数集合,并通过scale恢复近似数值;非对称量化还可能使用zero point。
常见有符号INT8编码范围为-128至127,有符号INT4范围为-8至7。但实际方案也可能采用无符号表示、对称或非对称量化,因此不能用单一整数范围概括所有实现。
- W8A8:权重和激活采用8位路径,性能收益依赖硬件与匹配内核。
- W4A16:权重压缩到4位,激活或主要计算保留16位,常用于降低权重显存和带宽压力。
- W4A8:权重和激活使用不同低精度组合,对模型和推理后端的依赖更强。
AWQ、GPTQ、SmoothQuant等名称描述的是量化方法或技术路线,不等同于INT4或INT8位宽本身。生产记录应保留量化算法、分组大小、计算精度、校准数据和运行后端。
NVFP4:与INT4、普通FP4和MXFP4有什么区别
NVFP4是NVIDIA随Blackwell架构引入的4位浮点方案。数值本体采用E2M1,即1位符号、2位指数和1位尾数,单个数值的表示能力有限,因此需要更细粒度的缩放机制。
NVFP4为每16个4位值配置一个E4M3缩放因子,并使用张量级FP32缩放。两级缩放有助于适应张量内部不同区域的数值分布,降低极低位宽带来的量化误差。
INT4通常依赖整数值与scale恢复近似数值;NVFP4保留低位浮点结构;MXFP4采用不同的共享缩放规则。三者不能只按“都是4位”直接比较质量或性能。
NVFP4需要Blackwell GPU及匹配的软件路径。TensorRT-LLM等后端已经提供相应量化支持,但具体模型、算子、KV Cache和部署方式仍应以当前支持矩阵为准。
NVIDIA在部分模型和基准测试中报告了较小的质量差异,这类结果仅适用于对应模型、数据集和测试配置,不能作为企业业务的通用精度承诺。
理论容量:每十亿参数需要多少权重空间
对于稠密模型,可以使用“参数量×每参数理论字节数”估算权重本体。下表按十进制GB计算每十亿参数的理论容量,不包含运行时及训练开销。
| 格式 | 理论每参数容量 | 每十亿参数理论权重容量 | 主要未包含项 |
|---|---|---|---|
| FP64 | 8字节 | 约8GB | 运行时工作区、临时张量及训练状态 |
| FP32 | 4字节 | 约4GB | 运行时工作区、激活及其他副本 |
| BF16 / FP16 | 2字节 | 约2GB | 激活、KV Cache、工作区和通信缓冲 |
| FP8 / INT8 | 约1字节 | 约1GB | scale、zero point、未量化层和对齐空间 |
| INT4 | 约0.5字节 | 约0.5GB | 分组元数据、打包、未量化层和对齐空间 |
| NVFP4 | 约0.5625字节,仅计E2M1本体及每16值一个8位scale | 约0.5625GB | 张量级scale、对齐、未量化层和运行时开销 |
这些数字不能直接作为GPU显存配置承诺。推理还要考虑激活、KV Cache、批处理、并发、CUDA工作区、通信缓冲和显存碎片;训练则还可能包含梯度、优化器状态和高精度主权重。
科学计算、训练和推理如何选择
| 场景 | 常见候选 | 判断重点 |
|---|---|---|
| 高精度科学计算 | FP64、FP32 | 误差容限、收敛性、双精度算力和应用软件支持 |
| 常规大模型训练 | BF16、FP16及混合精度 | 模型官方建议、损失缩放、关键算子和累加精度 |
| 低精度训练 | FP8;特定Blackwell方案中的NVFP4 | GPU架构、训练配方、缩放策略和质量回归 |
| 高精度推理基线 | BF16、FP16或模型官方推荐格式 | 输出质量、兼容性、显存和稳定性 |
| 生产低精度推理 | FP8、INT8、INT4、NVFP4 | 模型支持、量化后端、算子覆盖和业务回归 |
| 长上下文与高并发推理 | 权重量化与独立KV Cache精度 | 上下文、并发、KV Cache容量、TTFT和TPOT |
不存在脱离工作负载的固定精度优先级。科学计算首先看误差和数值稳定性;训练重点关注收敛与混合精度路径;推理则需要在模型质量、显存、吞吐、时延和成本之间权衡。
硬件支持不等于模型可以直接使用
- 核对GPU架构:确认目标精度是否具有原生计算单元、支持哪些缩放方式,以及峰值指标对应稠密还是稀疏计算。
- 核对软件版本:确认驱动、CUDA、容器、数学库、训练框架和推理后端的版本组合。
- 核对模型支持:确认模型结构、检查点格式、量化方法和关键算子是否在支持矩阵中。
- 检查实际路径:通过启动日志、性能分析和算子信息确认是否发生反量化、类型转换或回退。
- 同条件压测:固定模型、输入输出长度、并发、批量和解码参数,比较显存、吞吐、TTFT、TPOT和P95/P99。
- 完成质量回归:使用业务数据覆盖长文本、代码、数学、工具调用、结构化输出及典型失败场景。
常见错误
- 把TF32当作普通模型权重存储格式,忽略它主要是Tensor Core计算模式。
- 看到GPU支持FP8或NVFP4,就默认当前模型和推理框架已经具备匹配内核。
- 使用理论位宽直接承诺实际显存,忽略scale、元数据、KV Cache和运行时工作区。
- 只写“INT4模型”,不说明AWQ、GPTQ、分组大小、计算精度和推理后端。
- 把某个公开基准中的精度差异或性能提升直接外推到其他模型和业务任务。
- 跨GPU、跨框架比较低精度性能,却没有固定输入输出长度、批量和并发条件。
赋创可以提供哪些支持
赋创可结合科学计算、大模型训练和推理场景,协助核对GPU的FP64、TF32、BF16、FP16、FP8、INT8、INT4及NVFP4能力,并根据显存、功耗、服务器拓扑和扩展需求评估硬件配置。
在部署阶段,赋创可协助完成驱动、CUDA、容器、训练或推理框架环境搭建,核对目标模型与低精度路径的兼容性,并在相同条件下记录显存、吞吐、时延和稳定性结果。
模型质量容差、业务回归集和上线标准应由客户算法或业务团队确认。赋创可配合执行测试、保留环境与结果记录,并结合实际数据确定服务器和部署方案。
常见问题
TF32是模型存储格式吗?
通常不是。TF32主要用于NVIDIA Tensor Core加速部分FP32矩阵计算。输入和输出可能仍以FP32形式存在,实际计算和累加路径由GPU、数学库及框架设置决定。
BF16一定比FP16更适合大模型训练吗?
不能一概而论。BF16动态范围更大,FP16尾数精度更高。具体选择还取决于模型、GPU、损失缩放、混合精度策略和关键算子的数值行为。
FP8 E4M3和E5M2应该怎么选?
E4M3相对侧重有效精度,E5M2相对侧重动态范围。部分训练配方会对不同张量使用不同格式,实际配置应以目标框架、模型和缩放方案为准。
INT4和NVFP4是一回事吗?
不是。INT4通常采用整数编码并通过scale恢复近似值;NVFP4采用E2M1浮点数值本体和两级缩放机制。二者的数值结构、硬件路径和量化工具不同。
位数降低一半,显存一定降低一半吗?
不一定。权重本体可能接近同比例下降,但实际显存还包含scale、zero point、未量化层、对齐、激活、KV Cache、工作区和显存碎片。
GPU支持FP8或NVFP4,模型就能直接加速吗?
不能直接推断。还需要模型格式、量化工具、训练或推理框架、算子内核和并行方式共同支持。正式部署应通过运行日志和同条件压测确认。
方案咨询
需要把方案落到实际配置?
联系赋创获取算力、软件栈和交付路径建议。