马上注册,查看更多内容,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
这是前天的消息了,相信大家都已经看到了,Deepseek V3.1发布,引入了UE8M0 FP8,说了针对即将发布的下一代国产芯片。
这个消息发布的时候,我们就在星球里面发了一个前一天的国产GPU纪要,根据纪要内容,也基本能确定是哪款国产芯片了。
本来我对这件事并没有太关注,因为感觉下一代芯片支持FP8应该是非常合情合理的,毕竟英伟达的B200都已经支持FP4和FP6了。后来想了一下,这件事的意义确实也是不小的,下面来分析一下。
要聊 UE8M0,得先说说 “FP8” 这个基础概念。咱们平时听得多的是 FP32、BF16 这些数据格式,数字越大,代表每个数据占用的存储空间越多,精度也越高,但反过来,内存消耗、计算速度都会受影响。相信写过代码的朋友对这些应该都很熟悉。
FP8 就是 “8 位浮点数”,核心作用就一个:压缩数据。比如把原本用 32 位存的数据改成 8 位,内存占用直接少 75%,计算速度还能提上去 —— 不管是训练大模型,还是用模型做推理,效率都会明显提升。
但 FP8 也不是只有一种。国外现在主流的是 Nvidia搞的 “MXFP8”,分两种:一种叫 E4M3,侧重精度;另一种叫 E5M2,侧重数据的动态范围。这些都是为 Nvidia 的 GPU(比如 H100、B100)量身定的,在其他芯片上用,就容易出问题。
UE8M0 是一种针对 FP8 张量数据的编码格式,其中 U 代表无符号(Unsigned),E8 代表指数位(Exponent)占 8 位,M0 代表尾数位(Mantissa)为 0 位。
UE8M0 是由 Open Compute Project(OCP)提出的。OCP 是 2011 年由 Facebook(现 Meta)联合英特尔、Rackspace 等发起的开源硬件协作计划,其成员包括微软、谷歌、亚马逊、AMD、英伟达等国外企业,以及阿里、腾讯、百度等国内企业。2023 年,OCP 发布了《Microscaling(MX)Formats Specification v1.0》,其中定义了 MXFP8 格式,UE8M0 就是 MXFP8 路径里的 “缩放因子”。
看到这里,有些非技术出身的读者可能还是有点晕,简单总结一下就是,FP8就是8位的浮点数,UE8M0、E5M2和E4M3都是FP8的一种,目前国外主流是支持后面两种,我们现在支持的第一种。
再解释下什么是原生FP8,很多读者可能看到有两家国产芯片公司宣传自己支持原生FP8。
原生 FP8指的是硬件直接支持 8 位浮点数(FP8)格式的计算能力,而无需通过软件模拟或降级到其他格式(如 FP16 或 INT8)来实现。摩尔线程 MUSA 架构宣称原生 FP8 张量加速,并点名能很好支持 UE8M0 FP8 Scale;芯原 VIP9000 NPU 亦被多家产业媒体与高管采访稿提到增加 FP8(E4M3/E5M2)支持,强调与主流框架/工具链的易部署性。
为什么Deepseek要用UE8M0,而英伟达用的却是E4M3和E5M2?
NVIDIA 用的FP8,是平衡了精度和范围,E4M3偏精度,E5M2偏范围,依托Tensor Core和专有软件优化,追求高性能和稳定性。但这套逻辑放到国产芯片上就不灵了,因为硬件的计算单元都不一样。
网上都在说UE8M0是“范围优先”,牺牲小数精度,换取大范围和硬件简约性。其实还有一层,就是 “兼容性优先”:放弃了靠 FP8 本身保证精度,转而用 “通道级校准”和 “高精度累加” 来补精度,把所有精力放在 “让国产芯片能稳定跑起来” 上。
很多人以为 V3.1 只是多了个 UE8M0 的选项,其实没这么简单。从官方透露的信息看,他们这次是把 UE8M0 深度融入了整个模型开发流程,核心是在做 “向前兼容”。首先,V3.1 整个训练过程都用了 UE8M0 FP8,不是事后补的功能。他们特别提到了 “microscaling 适配”,简单说就是通过调整数据缩放比例、用更高精度的累加器(比如 FP16)来补精度,确保用了 FP8 压缩,模型效果还能跟原来一样。
其次,虽然没明说和哪家国产芯片厂商合作,但明确说了 UE8M0 是给 “即将发布的下一代国产芯片” 准备的。这意思很明显:芯片还没上市,软件已经提前适配好了,等硬件一出来,模型就能直接用,不用再花时间调试。
这次的核心目标不是 “比国外 FP8 更高效”,而是 “能在更多国产芯片上稳定跑”。DeepSeek 之前也用过国外的 E4M3 格式,这次换 UE8M0,更像是在给行业探路 ,证明我们能做出适配国产硬件的通用方案。
为啥非要给国产芯片做专属 FP8?
可能有人觉得,直接用国外的 FP8 标准不行吗?为啥非要自己搞一个?其实这背后是中国 AI 生态的现实问题:
首先,国产芯片和 Nvidia 的 “底层逻辑” 不一样。比如同样算一个 FP8 的矩阵乘法,Nvidia 的 GPU 和国产芯片由于底层架构不同,所以计算步骤、数据流向都不同。直接套用国外标准,就像给中式厨房装西式的灶台,要么用不了,要么容易出故障 。比如训练到一半数值溢出,模型突然 “学歪了”,又得从头再来,成本太高。
其次,这是摆脱依赖的关键一步。我们上面已经提到,英伟达已经专门为E4M3和E5M2做了优化,而目前我们的国产GPU中,支持FP8的还不多,如果再都去针对E4M3和E5M2做优化,并不是最优解,反倒不如抛开英伟达的标准,找一个适合国产GPU的路线。
而且,这是 “软硬件协同” 的开始。以前我们搞 AI,要么是先有国外硬件再做软件适配,要么是先做模型再等硬件跟上,总是慢半拍。这次 DeepSeek 提前和国产芯片厂商合作,软件跟着硬件的节奏走,相当于 “软硬件一起设计”,能大幅缩短国产芯片从实验室到实际应用的时间。
UE8M0 的实际效果
虽然 UE8M0 主打兼容性,但也没牺牲 FP8 的核心优势 —— 效率。根据官方和行业的测试:
内存方面,相比 FP32 能省 75% 左右(当然实际用的时候会受缓存策略、数据类型影响,不一定能到这么高)。这意味着同样的显卡,用 UE8M0 能训练更大的模型,或者推理时同时处理更多请求。
速度方面,推理吞吐量差不多是 BF16 的 2 倍。比如原来一张卡每秒能处理 100 个请求,用了 UE8M0 可能能到 200 个,而且延迟不会明显增加 —— 这对需要大规模服务的场景(比如 AI 对话、内容生成)特别有用。
当然,也得清楚一点,UE8M0 没比国外的 FP8 更快,只是在国产芯片上能达到差不多的效率。它的价值不是 “超越”,而是 “补位”—— 让国产芯片也能享受到 FP8 的高效。
UE8M0 不是万能的
虽然 UE8M0 解决了不少问题,但也不是所有场景都能用。很多计算步骤(比如梯度累加)还是得用 BF16 或 FP16,不然精度会丢得太厉害。UE8M0 本质是 “FP8 存数据,16 位算累加” 的混合方案,不是纯 FP8。
而且还得看国产芯片的支持程度,如果芯片厂商没做好 FP8 的底层优化,就算用了 UE8M0,也发挥不出性能。这还需要芯片厂商和软件厂商一起推进。
最后,精度校准不能省。因为 UE8M0 的尾数位简化了,必须做好数据校准 —— 比如处理极端大或极端小的数值,不然可能在某些场景里出误差。 |