BF16(Brain Float16)
BF16比 FP16 更稳的低精度
亦作、亦称:Brain Float16 · Brain Float 16 · bfloat16
BF16(Brain Float16)是由 Google Brain 团队为深度学习硬件设计的 16 位浮点格式,其核心特点是保留与 FP32 相同宽度的 8 位指数位,使其动态范围远超传统 FP16,已成为大模型训练与推理中最主流的低精度数值格式之一。
概述
BF16 全称 Brain Float 16,专为神经网络计算设计,在保持足够数值稳定性的同时大幅降低显存与带宽消耗。
- 位宽分配:1 位符号位 + 8 位指数位 + 7 位尾数位,共 16 位。
- 动态范围:指数位与 FP32 一致,可表示约 ±3.4×10³⁸,与 FP32 量级完全相同。
- 精度牺牲:尾数仅 7 位,十进制精度约 2–3 位,低于 FP16 的 3–4 位,但在梯度更新场景中通常可接受。
- 硬件加速:Google TPU v2+、NVIDIA A100/H100、Intel Xeon(第 3 代以上)、ARM v8.6-A、Apple M2+ 等均对 BF16 提供原生矩阵乘法加速。
工作原理
BF16 通过截断 FP32 的低 16 位尾数来完成格式转换,转换代价极低。
- FP32 → BF16 转换:直接丢弃 FP32 末 16 位尾数(或加入舍入),可视为「截断版 FP32」,无需复杂重编码。
- 混合精度训练:通常与 FP32「主权重」(master weights)配合使用——前向传播和梯度计算用 BF16,权重更新用 FP32 累加,兼顾速度与精度。
- 梯度稳定性:8 位指数避免了 FP16 在小梯度时频繁发生的梯度下溢(underflow)和梯度溢出(overflow)问题,训练无需额外损失缩放(loss scaling)。
- 推理模式:推理阶段权重直接以 BF16 存储和计算,显存占用约为 FP32 的一半。
与相邻格式的区别
BF16 在低精度格式家族中处于「动态范围优先」的设计方向。
- BF16 vs FP16:FP16 有 10 位尾数(精度更高)但仅 5 位指数(动态范围窄),训练中更易梯度溢出;BF16 指数位更多,稳定性更好,现已基本取代 FP16 成为大模型训练默认格式。
- BF16 vs FP32:FP32 有 23 位尾数,精度远高于 BF16,但显存占用是 BF16 的 2 倍;两者动态范围相同,BF16 可视为「截断版 FP32」。
- BF16 vs FP8:FP8(如 E4M3、E5M2)进一步压缩至 8 位,显存更省但精度损失更大,目前主要用于 H100 推理加速,训练稳定性低于 BF16。
- BF16 vs INT8/INT4:整数量化格式通常需要额外的校准步骤(calibration)和量化感知训练,而 BF16 可直接替换 FP32 无需校准,迁移成本更低。
应用场景
BF16 已成为大规模 AI 训练与部署的事实标准低精度格式。
- 大模型预训练:LLaMA、GPT 系列、Gemini 等主流大语言模型均在 BF16 混合精度下完成预训练,显存节省约 40%–50%。
- 分布式训练:多卡通信时传输 BF16 梯度可减少约一半带宽消耗,提升 AllReduce 效率。
- 推理服务:vLLM、SGLang、TGI 等推理框架默认使用 BF16 权重加载,在保持生成质量的同时最大化吞吐量。
- 微调(SFT/LoRA/DPO):全参数微调和参数高效微调(PEFT)均支持 BF16,平衡显存与收敛稳定性。
局限与误区
BF16 并非万能,在特定场景下需谨慎使用。
- 精度损失不可忽视:7 位尾数意味着相邻可表示数之间的间距较大,对数值敏感的操作(如大量小数累加、softmax 数值稳定性)建议保留 FP32 累加。
- 并非所有硬件支持:较老 GPU(如 V100/Volta 架构及更早)不支持 BF16 原生计算,使用时会回退到软件仿真,反而比 FP32 更慢。
- 误区——「BF16 就是半精度」:半精度通常指 FP16,两者位宽相同但格式不同、不可混用;BF16 更准确的描述是「截断版单精度」。
- 量化叠加风险:在已量化为 INT8/INT4 的模型上再转换 BF16 无意义,双重压缩会加剧精度损失。
发展脉络
BF16 的普及与 AI 训练硬件的演进紧密交织。
- 2017:Google Brain 为 Cloud TPU v2 引入 BF16 作为默认训练精度,这是该格式首次在生产硬件中使用。
- 2018:Google 在 Google I/O 公开 BF16 的技术细节,Google Brain 团队正式对外推广此格式。
- 2019:Google Cloud 博客发布《BFloat16: The Secret to High Performance on Cloud TPUs》,全面阐述 BF16 设计动机与性能优势。
- 2020:NVIDIA A100 GPU 正式引入 BF16 Tensor Core 原生支持,将 BF16 推广至 GPU 训练主流场景。
- 2022:LLaMA、Chinchilla 等大规模语言模型训练默认采用 BF16,确立其在 LLM 领域的主导地位。
- 2023:NVIDIA H100 进一步引入 FP8 支持,ARM、Intel、AMD 等厂商相继完善 BF16 硬件加速,但 BF16 仍是稳定训练的首选格式。
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「比 FP16 更稳的低精度」
- 「大模型训练常用精度」
- 「跟 FP16 不是一回事」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
🎯 考点练习
含该术语的高频面试题,含标准答案与追问。
- 中级场景高频查看详解 →
训练出现 NaN / Inf,如何定位原因?
常见于学习率过大、log(0)/除零、exp 溢出、梯度爆炸或脏数据;用 anomaly detection 定位首次出现 NaN 的算子。
- 中级概念查看详解 →
混合精度训练(AMP)如何加速并节省显存?
fp16/bf16 做计算 + fp32 主权重 + loss scaling,借 Tensor Core 提速并减半显存。
- 初级概念高频查看详解 →
什么是大语言模型(LLM)?它能做什么、不能做什么?
LLM 是基于 Transformer、在海量文本上预训练的自回归语言模型,擅长语言任务,但不擅长精确计算、实时信息,且会产生幻觉。
- 高级概念查看详解 →
MLOps 生命周期包含哪些关键阶段?
MLOps 生命周期:问题定义 → 数据工程 → 实验/训练 → 评估验证 → 部署 → 监控 → (触发)再训练,形成持续改进闭环。
延伸阅读
从知识库精选 3 篇文章,帮助深入理解该术语。
- 1
模型量化与压缩:从 FP32 到 INT4 的完整指南(ML 全场景)
系统讲解模型量化与压缩的核心技术——从 PTQ/QAT 实战到知识蒸馏与结构化剪枝,涵盖 INT8、INT4 等主流方案在 ML 全场景的应用
- 2
LLM 推理优化:量化、剪枝、蒸馏与推理加速实战
系统讲解大语言模型推理优化的四大核心技术——量化(Quantization)、剪枝(Pruning)、知识蒸馏(Knowledge Distillation)和推理引擎加速,覆盖从原理到实战的完整链路
- 3
NVIDIA RTX Spark:消费级AI芯片架构与Windows AI代理平台全景解读
2026年6月1日,NVIDIA CEO黄仁勋在GTC Taipei/COMPUTEX 2026主题演讲中发布RTX Spark超级芯片——这是NVIDIA时隔十余年再次挑战PC处理器领域,将Blackwell GPU与20核Grace CPU集成于单一SoC,支持128GB统一内存和1 petaflop AI算力。本文系统解读RTX Spark的硬件架构、与微软合作的AI代理平台生态、Windows on Arm战略意义,以及对PC行业格局的深远影响。
外部参考
维基百科:查看「BF16」词条本页内容为本站原创撰写;维基百科链接仅作延伸参考。
