简单聊聊Deepseek V3的FP8训练

deepseek对训练fp8量化的观察和解决方法都很有启发,希望能看到fp8训练继续大放异彩

简单聊聊Deepseek V3的FP8训练

原标题:简单聊聊Deepseek V3的FP8训练
文章来源:智猩猩GenAI
内容字数:8368字

DeepSeek V3 FP8训练详解及对硬件的展望

本文概要介绍了DeepSeek V3中FP8训练的细节,包括量化方法、CUDA Core累加、整体量化流程以及对未来硬件改进的建议。文章基于作者对DeepSeek V3技术报告和相关资料的解读,并结合个人理解进行阐述,如有错误,欢迎指正。

1. FP8量化概述

FP8量化是一种新兴的低精度数值表示方法,通过将FP16或FP32降低到8位浮点数,可以显著减少模型的内存占用和计算开销,提升推理速度和能效比。它提供E4M3和E5M2两种格式,DeepSeek V3主要使用E4m3以保证精度。FP8量化需要特定硬件支持,例如NVIDIA Hopper架构GPU。

2. DeepSeek V3中的FP8量化位置

DeepSeek V3主要在MoE上的MLP和Attention前后的MLP上使用FP8量化,Embedding、Attention、gating和Norm等部分则使用原始精度(BF16或FP32)。 由于FP32/BF16到FP8转换可能导致溢出,因此需要进行量化并引入scale。

3. 量化方式

文章介绍了几种常见的量化方式:per tensor、per token、groupwise和tile wise。DeepSeek V3在训练中采用groupwise和tilewise的混合方法:输入采用groupwise量化,权重采用tilewise量化。这种方法在Tensor Core上进行FP8矩阵乘法,然后在CUDA Core上进行累加和解量化。

4. CUDA Core累加与WGMMA

由于NVIDIA H800 GPU上FP8 GEMM的累加精度只有约14位,DeepSeek V3选择在进行若干次WGMMA (Warpgroup MMA) 计算后,在CUDA Core上进行累加,以提高精度。文章推测其切分方法,并指出在H800架构上,可以一个group进行矩阵乘法,另一个group进行累加,以提高Tensor Core利用率。

5. 整体量化流程

文章描述了DeepSeek V3 FP8训练的前向和反向传播流程。前向传播中,输入使用BF16,权重使用FP32,量化到FP8,累加后输出为FP32,再转换为BF16。反向传播中,wgrad累加后为FP32,优化器状态使用BF16,权重以FP32更新,dgrad FP8反向后转换为BF16继续传播。Attention输出的反向传播使用了特殊精度E5M6。

6. 量化选择和Tile Wise量化问题

DeepSeek V3采用在线量化,每次量化前统计最大值计算scale。Tile wise量化虽然有效,但在反向传播中,激活梯度需要不同的分组方式,这增加了计算开销。作者探讨了使用相同scale的可能性,但实验表明input对块级量化非常敏感。

7. 对硬件的期待

文章最后总结了DeepSeek V3对未来硬件改进的期待,包括:更高的FP8 GEMM累加精度、对Tile和Block量化的原生支持、对在线量化的硬件支持、对转置GEMM操作的支持等,这些改进将进一步提升FP8训练的效率。

8. 总结

DeepSeek V3在FP8训练方面取得了显著进展,其量化策略和对硬件的改进建议为未来FP8训练的研究提供了宝贵的经验。文章也展现了对FP8训练未来的展望,期待其在自动驾驶等领域大放异彩。


联系作者

文章来源:智猩猩GenAI
作者微信:
作者简介:智猩猩旗下公众号之一,深入关注大模型与AI智能体,及时搜罗生成式AI技术产品。

阅读原文
© 版权声明

相关文章

暂无评论

暂无评论...