0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

低精度浮点数定义——什么是 FP8、FP6、FP4?

颖脉Imgtec 2026-04-23 12:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

什么是浮点精度?

浮点精度是一种以二进制格式表示数字的方法,计算机将数字解读为由 0 和 1 组成的二进制序列。本文将聚焦于更小众的低精度格式——FP8、FP6和FP4,这类格式更适用于神经网络人工智能领域。

在浮点数表示中,第一个二进制位表示数字的正负(符号位);接下来的一组二进制位构成指数位,以 2 为基数表示数字的量级;最后一组二进制位为尾数位(也称为有效数字位),表示数字的小数部分。在这些低精度格式中,核心目标并非保持数学精度,而是尽可能节省计算资源、内存空间和带宽,从而提升人工智能任务的响应速度与整体性能。


低精度格式为何存在?

首先需要说明,浮点数精度降低的核心原因并非数学限制,而是数据移动的瓶颈。

将权重和激活值在内存中传输所消耗的时间与能量,远高于对它们进行乘法运算的成本。随着模型规模不断扩大(尤其是大语言模型),性能瓶颈逐渐转向内存带宽、缓存容量和功耗,而非浮点运算吞吐量。降低数值精度是缓解这些瓶颈最有效的手段之一。

这也是行业从 FP32 转向 FP16 和 BF16 的原因——且即便如此,精度降低的需求仍未得到满足。

降低精度可实现以下优势:

缩小模型体积,提升缓存局部性

提高有效内存带宽

降低单次运算的能耗

提升计算资源利用率

人工智能神经网络训练本身具有一定的近似容错性:训练过程中会刻意引入噪声,采用随机优化方法,且评估的是整体表现而非精确的数值正确性。因此,精度不再是固定要求,而是需要谨慎分配的“资源预算”。

问题的核心也从“应使用何种精度?”转变为“精度在哪些环节至关重要?”


什么是 FP8?

FP8 指的是一类 8 位浮点数格式,而非单一标准。与更大的 IEEE 浮点数类型类似,FP8 包含两种版本:E4M3 和 E5M2(命名直观反映其位分配规则)。

对于 8 位长度的浮点数,单一格式无法同时兼顾足够的数值范围和精度。因此,现代硬件与框架会混合使用两种 FP8 变体:

FP8 E4M3 适用于数值精度更关键的场景

FP8 E5M2 适用于动态范围成为限制因素的场景

在实际应用中,FP8 极少单独使用:计算过程通常以 FP8 执行,而累加运算则在 FP16 或 FP32 精度下进行。这种方式在大幅降低存储和计算精度的同时,保障了训练与推理的稳定性。

FP8 被广泛应用于多款人工智能加速器,核心原因在于其能够完美适配混合精度工作负载。

什么是 FP8 E4M3?

FP8 E4M3 优先保证精度而非范围。更多的尾数位使其能更精确地表示接近零的数值,因此非常适合分布相对集中的激活值和梯度。其位分配如下:

1 位:表示正负的符号位

4 位:以 2 为基数的指数位

3 位:尾数位/有效数字位/小数位(即小数点后的数值部分)

什么是 FP8 E5M2?

FP8 E5M2 将部分尾数位分配给指数位,以牺牲精度为代价扩大了可表示的数值范围。这使其对异常值和大动态范围具有更强的鲁棒性,适用于权重和中间结果等场景。其位分配如下:

1 位:表示正负的符号位

5 位:以 2 为基数的指数位

2位:尾数位/有效数字位/小数位(即小数点后的数值部分)

b7f8f3b4-3ecf-11f1-ab55-92fbcf53809c.jpg


什么是 FP6?

FP6 并非单一的标准化格式,而是一类 6 位浮点数表示方法。与 FP8 类似,FP6 也由符号位、指数位和尾数位组成——但由于仅含 6 位,其优势与取舍更为极端。

尽管具体实现存在差异,但大多数 FP6 方案遵循以下通用模式:

FP6 E2M3

1 位:表示正负的符号位

2 位:以 2 为基数的指数位

3 位:尾数位/有效数字位/小数位(即小数点后的数值部分)

FP6 E3M2

1 位:表示正负的符号位

3 位:以 2 为基数的指数位

2 位:尾数位/有效数字位/小数位(即小数点后的数值部分)

b813554c-3ecf-11f1-ab55-92fbcf53809c.jpg

FP6 相关:E2M3 与 E3M2 详解

不同的指数位-尾数位分配比例适用于不同场景,但所有 FP6 格式都存在数值范围或精度极度受限的问题——通常两者同时受限。与 FP8 不同,单一 FP6 格式几乎没有平衡范围与精度的空间。因此,使用 FP6 几乎必然需要采用激进的数值缩放策略和严格的数值分布控制。

相较于 FP8,FP6 带来的效率提升有限,但复杂度成本却显著增加。在多数情况下,FP8 已能捕获大部分性能和内存优势,同时不会将数值稳定性推向崩溃边缘。

FP6 仅在以下条件下具有可行性:

数值分布狭窄且规律

按层或按张量实施数值缩放

累加运算在 FP16 或 FP32 精度下进行


什么是 FP4?

FP4 是当前实际讨论中精度最低的浮点数格式。仅 4 位的长度将浮点数的性能推向绝对极限,其存在的核心目的几乎完全是为了满足硬件吞吐量和密度目标。截至目前,仅有 NVIDIA Blackwell 系列 GPU 原生支持 FP4 精度。

FP4 没有统一标准,但典型设计的位分配如下:

符号位:1 位

指数位:2 位

尾数位:1 位

b826b2f4-3ecf-11f1-ab55-92fbcf53809c.jpg

FP4 相关详解

部分变体通过调整指数偏置或完全移除特殊值来优化性能。无论具体布局如何,FP4 的数值范围都极度有限,且几乎没有精度可言。FP4 的核心作用是通过实现极高的计算密度,最大化张量核心吞吐量并最小化内存带宽消耗。

从数值角度看,FP4 并非为单独使用而设计:它是一种计算格式,而非存储或累加格式。当硬件规格中提及FP4 时,通常遵循以下逻辑:

数值通常经过缩放或块缩放处理

计算过程以 FP4 执行

累加运算在 FP16 或 FP32 精度下进行

输入和输出通常以更高精度存储

这一逻辑契合行业大趋势:计算环节采用越来越低的精度,而在误差易累积的环节保留更高精度。

因此,FP4 更应被视为一种硬件能力,而非通用的数值格式。其被纳入 NVIDIA GPU 规格,反映的是 GPU 的性能极限方向,而非当前多数模型的可运行精度。计算过程中位长度的减少,降低了运算复杂度并加快了执行速度——在 GPU 执行人工智能训练与推理过程中万亿次的运算中,这种优势会不断累积放大。


精度的应用场景比精度位数更重要

现代人工智能系统并非采用单一精度运行,而是刻意在存储、计算和累加等环节混合使用不同精度,仅在数值误差易累积的关键环节保留较高精度。

这也是极低精度格式能够可行的核心原因:

计算环节使用 FP8、FP6 甚至 FP4,以最大化吞吐量

存储环节优先选择能保证精度的最小格式

累加环节保留 FP16 或 FP32 精度,以维持数值稳定性

一种精度格式的有效性,与其位数关系较小,更取决于其在整个计算流程中的应用场景。

FP8:最佳通用低精度浮点数,适用于训练和推理计算,搭配高精度累加

FP6:实验性与专用性格式,仅在严格缩放和受控分布条件下可行

FP4:硬件驱动的极限精度格式,仅在严格约束下作为计算格式使用,不可单独应用

低精度并非意味着在所有环节牺牲正确性,而是在关键环节合理分配精度资源,在其他环节回收效率收益。

b8359c4c-3ecf-11f1-ab55-92fbcf53809c.jpg


FP8、FP6、FP4 常见问题解答

1. 为何降低精度不会彻底破坏模型精度?

神经网络本身具有噪声容错性。只要累加和缩放处理得当,低精度计算引入的微小数值误差不会显著影响最终输出结果。

2. 为何选择 FP8、FP6 等浮点数格式而非整数格式(如 INT8)?

浮点数格式能够保留动态范围,这对激活值和梯度至关重要。整数格式需要显式校准,且难以应对快速变化的数值分布。

3. 为何累加运算几乎总是采用更高精度?

误差会在累加过程中不断累积。即使输入是极低精度,使用 FP16 或 FP32 进行累加也能避免微小的舍入误差主导最终结果。

4. 为何 FP4 已有硬件支持却未被广泛使用?

FP4 的数值范围和精度极度有限。若缺乏严格的缩放和受控的数值分布,数值误差会迅速扩大,超出多数模型的容忍范围。

5. 如何在 FP8、FP6 和 FP4 之间选择?

多数低精度计算场景优先选择 FP8;FP6 仅适用于专用或实验性场景;将 FP4 视为硬件优化手段,而非通用数值格式。


总结

低精度浮点数格式在吞吐量、延迟或功耗为核心约束的场景中极具优势,具体应用包括:

大语言模型(LLM):FP8 越来越多地用于训练和推理计算,而 FP4 则在严格控制的推理内核中使用,以最大化张量核心利用率

数据中心推理:FP8 和 INT8 降低了每 Token 的内存带宽消耗和能耗,直接提升成本效益和可扩展性

机器人自动驾驶系统:在严格的功耗和散热限制下,低精度计算可提升控制环路速率,尤其适用于边缘加速器

推荐与排序模型:这类模型对近似计算容忍度高,通过激进的精度降低可满足延迟目标

含学习组件的科学与工业仿真:替代模型和学习求解器通常能在 FP8 精度下高效运行,且性能无明显下降

这些场景的共性并非应用领域,而是核心约束:当数据移动成本高于计算成本时,低精度格式能带来显著收益。

随着硬件与软件的协同演进,未来数值格式的发展方向将更少依赖 IEEE 标准,更多取决于精度资源的高效分配能力。

本文转自:联泰集群 LTHPC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 浮点
    +关注

    关注

    0

    文章

    32

    浏览量

    13719
  • 人工智能
    +关注

    关注

    1820

    文章

    50317

    浏览量

    266894
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【RV32F与RV32D】之单精度和双精度浮点数

    。 七、结束语 IEEE 754-2008浮点标准[IEEE Standards Committee 2008]定义浮点数据类型,计算精度和所需操作。它的广泛流行大大降低了移植
    发表于 08-29 12:24

    FP6166 /FP6128 /FP6121 /FP6130 全新原装正品 专注电源管理芯片 选择凌晔科技

    6132 SOT-89FP6134 SOT-23-5FP6136 SOT-223/TDFN-8 (3x3)FP6141 SOT-23-3/SOT-23-5/TDFN-
    发表于 12-25 13:53

    FP5207 VS FP5208

    封装:SOP-8L(EP)应用1 蓝牙音箱2充电器3移动电源4便携式产品概述FP5208与FP5208B是异步升压控制 IC,透过EXT Pin控制外部NMOS,输入
    发表于 08-15 15:19

    如何将浮点数据存储至FLASH中呢

    需求:参数的数据类型为浮点数据,需要存储至FLASH中。解决办法:采用联合体联合体特性:联合体内的参数,共用一块内存。案例://构建联合体数据结构typedef union{floatfp;//浮点
    发表于 01-26 06:50

    分享一种用于神经网络处理的新8浮点交换格式

    发布了一份关于新的 8浮点规范“FP8”的白皮书.FP8 是一种可让软件生态系统轻松共享 NN 模型的交换格式,而 Arm、英特尔和 NVIDIA 之间为支持这一标准而开展的合作意
    发表于 09-15 15:15

    FLASH存储浮点数据的解决办法

    需求: 参数的数据类型为浮点数据,需要存储至FLASH中。解决办法:采用联合体联合体特性:联合体内的参数,共用一块内存。案例://构建联合体数据结构typedef union{ float
    发表于 12-02 12:21 6次下载
    FLASH存储<b class='flag-5'>浮点数</b>据的解决办法

    缝缝补补的浮点数进制转换器

    [浮点数]()在计算机科学中是一种重要的数据类型,用于表示实数。其中,FP32和FP16是两种常见的浮点数格式,分别占用32位和16位。
    的头像 发表于 12-04 14:00 3240次阅读
    缝缝补补的<b class='flag-5'>浮点数</b>进制转换器

    精度和双精度浮点数的区别

    在计算机科学和数值计算中,浮点数是一种用于表示实数的数据类型。浮点数有两种精度级别:单精度和双精度。这两种
    的头像 发表于 12-13 10:55 1.5w次阅读

    精度和双精度浮点数的区别

    精度和双精度是计算机中表示浮点数的两种不同的精度。在计算机中,浮点数用来表示带有小数部分的实数,而单
    的头像 发表于 12-15 10:25 7574次阅读

    NVIDIA GPU架构下的FP8训练与推理

    FP8 训练利用 E5M2/E4M3 格式,具备与 FP16 相当的动态范围,适用于反向传播与前向传播。
    的头像 发表于 04-25 10:01 4602次阅读
    NVIDIA GPU架构下的<b class='flag-5'>FP8</b>训练与推理

    FP8模型训练中Debug优化思路

    目前,市场上许多公司都积极开展基于 FP8 的大模型训练,以提高计算效率和性能。在此,我们整理并总结了客户及 NVIDIA 技术团队在 FP8 模型训练过程中的 debug 思路和方法,供大家参考。
    的头像 发表于 09-06 14:36 2068次阅读
    <b class='flag-5'>FP8</b>模型训练中Debug优化思路

    FP8数据格式在大型模型训练中的应用

    本文主要介绍了 FP8 数据格式在大型模型训练中的应用、挑战及最佳实践,展示了 FP8 在提升训练速度和效率方面的潜力和实际效果。
    的头像 发表于 11-19 14:54 3793次阅读
    <b class='flag-5'>FP8</b>数据格式在大型模型训练中的应用

    如何使用FP8新技术加速大模型训练

    利用 FP8 技术加速 LLM 推理和训练越来越受到关注,本文主要和大家介绍如何使用 FP8 这项新技术加速大模型的训练。 使用 FP8 进行大模型训练的优势 FP8 是一种
    的头像 发表于 12-09 11:30 2664次阅读

    FP8在大模型训练中的应用

    。如果在训练时使用 FP8 精度,可以更方便快速的将 FP8 部署到推理侧,使 FP8 训练可以更容易顺畅地与
    的头像 发表于 01-23 09:39 2432次阅读
    <b class='flag-5'>FP8</b>在大模型训练中的应用

    摩尔线程发布Torch-MUSA v2.0.0版本 支持原生FP8和PyTorch 2.5.0

    本次升级的核心亮点, Torch-MUSA v2.0.0率先在国产GPU上实现了对FP8数据类型的完整支持 。FP8是当前AI计算的一种前沿精度格式,在支持原生
    的头像 发表于 05-11 16:41 1871次阅读