当前位置: 首页 > java >正文

一次讲清 FP32 / FP16 / BF16 / INT8 / INT4

一次讲清 FP32 / FP16 / BF16 / INT8 / INT4

目标:让你3 分钟读懂格式原理,5 分钟学会选型
只记一句:“指数定范围,尾数定精度;位宽定显存,硬件定成本”


1 | 为什么要有这么多格式?

时代典型位宽驱动力
早期科学计算FP32精度第一
深度学习训练FP16 / BF16显存 & 带宽瓶颈
推理上云 / 上端INT8降本、提速
边缘 & 移动INT4极限压缩,离线运行

2 | 浮点格式:尺子比喻

┌─符号(S)──┬─────指数(E)─────┬──────────尾数(M)──────────┐决定正负      决定“尺子长度”            决定“刻度密度”
格式总位指数位尾数位范围大小*刻度数量**
FP3232823★★★★★★★★★★
BF161687★★★★★★★☆
FP1616510★★★★★★
INT888 (补码)取决于缩放★★
INT444同上

* 归一化可表示的最大/最小值(Dynamic Range)
** 一个数量级内可分多少格(Precision)

口诀

  • FP16 = “刻度更密,尺子变短”
  • BF16 = “舍刻度,保尺子”
  • FP32 = “密+长,最豪华”
  • INT8/4 = “把刻度记成整数,再配一支比例尺(缩放因子)”

3 | 每种格式到底什么时候用?

场景首选理由
预训练 / 大梯度BF16与 FP32 同范围,梯度不溢出;显存减半
显存吃紧训练 (LoRA、SFT)BF16 + FP32 累加省显存又保稳定
云端推理(>=20 GB GPU)FP16硬件 TensorCore 2× 加速;误差可接受
成本敏感推理(<10 GB)INT8量化后体积 ↓75%,吞吐 ↑2‑3×
移动 / 浏览器INT4 + GPTQ/AWQ模型 < 2 GB,可跑在 Mac M‑series / Android
科学模拟 / 金融回测FP32需极高累计精度

4 | 硬件支持一览

芯片FP32FP16BF16INT8INT4
NVIDIA A100✅ TensorCore
NVIDIA H100✅ TensorCore🚧 (B100)
Google TPU v4✅ 原生
AMD MI300
Apple M3软件模拟✅ (MetalLLM)

5 | 精度 & 性能实测示例(Llama‑2‑7B, Alpaca Eval)

格式ppl ↓BLEU ↑推理 tokens/s (A100)显存
FP325.8528.64514 GB
BF165.8628.5907 GB
FP165.8728.5927 GB
INT8 (RTN)6.0228.11304 GB
INT4 (GPTQ)6.2527.81602.3 GB

差距 < 0.2 ppl / 1 BLEU 在多数应用感知有限


6 | 快速选型流程(训练 / 推理)

① 你正在做什么?

  • 训练
  • 推理

▍训练路线

梯度是否容易溢出?建议精度说明
是(频繁出现 Inf/Nan)BF16 + GradScaler保留 FP32 级范围,显存减半
否(训练稳定)FP16半精度省显存、TensorCore 加速

▍推理路线

显存预算能接受 ≤ 1‑2 % 精度损失?建议精度
≥ 16 GB——FP16(或 BF16)
< 16 GBINT8 / INT4
FP16

额外提示

  • 移动 / 浏览器:优先 INT4(GPTQ / AWQ 量化)。
  • 高精度金融 & 科研:仍用 FP32 或混合 BF16+FP32。
  • INT 量化后如指标下降,可用 LoRA 微调追回。

7 | 常见误区 Q&A

问题正解
FP16 ≈ BF16?No. FP16 精度高但范围窄;BF16 范围大但刻度粗。
INT8 总会掉精度?用 GPTQ / AWQ + 校准数据,掉点 < 1%;对话模型体感差异极小。
手机真能跑 INT4 LLM?M2/M3、骁龙 X Elite 已实测 7B INT4 达 10‑20 tokens/s。
训练一定要 FP32?混合精度早已主流。BF16 TensorCore 训练可比 FP32 快 2‑3×。

8 | 记忆三板斧

  1. 指数位 = 尺子长度
    ‑ 大梯度就要长尺子(8 bit) → BF16
  2. 尾数位 = 刻度密度
    ‑ 推理要细腻回答 → FP16
  3. 位宽 = 钱包厚度
    ‑ 显存贵但要求快 → INT8 / INT4

结语

格式选对,显存省一半,速度翻一番。

  • 训练:优先 BF16;显存充足再混 FP32 累加器。
  • 推理:优先 FP16;显存不足进 INT8;边缘 & 移动用 INT4。
  • 永远记得:先测指标,再定精度。

至此,FP32/FP16/BF16/INT8/INT4 的来龙去脉、优势劣势、硬件匹配与典型场景已全部说清。祝你的模型 又准又快又省钱

http://www.xdnf.cn/news/5807.html

相关文章:

  • VR和眼动控制集群机器人的方法
  • 青少年编程与数学 02-019 Rust 编程基础 10课题、函数、闭包和迭代器
  • 机器学习中分类模型的常用评价指标
  • 设计模式系列(03):设计原则(二):DIP、ISP、LoD
  • SpringBoot与Eventuate Tram整合 - 实现转账最终一致性系统
  • 解锁生命周期评价密码:OpenLCA、GREET 与 R 语言的融合应用
  • 基于 Amazon Bedrock 和 Amazon Connect 打造智能客服自助服务 – 设计篇
  • 【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法
  • Java Solon v3.3.0 发布(国产优秀应用开发基座)
  • Spring Boot Swagger 安全防护全解析:从旧版实践到官方规范
  • Spring Boot 跨域问题全解:原理、解决方案与最佳实践
  • Tomcat和Nginx的主要区别
  • 【MySQL】第三弹——表的CRUD进阶(一)数据库约束
  • 地址簿模块-01.需求分析
  • D-Pointer(Pimpl)设计模式(指向实现的指针)
  • 在VSCode中接入DeepSeek的指南
  • 【时时三省】(C语言基础)使用字符串处理函数
  • 基于Spring Boot+Layui构建企业级电子招投标系统实战指南
  • 人脸识别系统中的隐私与数据权利保障
  • ‌OPE.AI开放平台:一站式企业AI应用引擎
  • 前端学习(2)—— CSS详解与使用
  • centos7.x下,使用宝塔进行主从复制的原理和实践
  • 博客系统技术需求文档(基于 Flask)
  • R语言绘图 | 渐变火山图
  • Leetcode 3548. Equal Sum Grid Partition II
  • Andorid之TabLayout+ViewPager
  • 通过POI实现对word基于书签的内容替换、删除、插入
  • 网络协议与系统架构分析实战:工具与方法全解
  • 【应用密码学】实验五 公钥密码2——ECC
  • 深入 MySQL 查询优化器:Optimizer Trace 分析