下载
中文
注册

飞桨新一代框架——飞桨框架3.0-beta昇腾版:释放昇腾硬件潜能,引领大模型时代

产业开发者生态伙伴

发表于 2024/09/04

在深度学习领域,飞桨作为中国首个自主研发、功能丰富、开源开放的深度学习平台,持续推动AI技术的发展与应用。为应对大模型时代的挑战,飞桨框架3.0-beta昇腾版应运而生,以其独特的“动静统一自动并行、大模型训推一体、大模型昇腾硬件适配”三大特性,为大模型的开发与部署提供了强大的支持,并深度适配昇腾硬件,充分释放其潜能。

飞桨框架3.0-beta昇腾版的核心特性
1. 动静统一自动并行:
飞桨框架3.0-beta昇腾版通过动静统一的设计理念,实现了动态图的灵活性与静态图的高效性的完美结合。在大模型训练场景中,自动并行功能显著降低了开发门槛。开发者只需进行少量的张量切分标注,框架便能自动完成分布式切分信息的推导,并添加必要的通信算子,确保训练过程的正确性和高效性。这一特性大幅减少了分布式训练的核心代码量,降低了大模型开发的复杂性和成本。
2. 大模型训推一体:
飞桨框架3.0支持从模型训练到推理的一体化流程,实现了训练与推理能力的无缝衔接。通过动转静技术,开发者可以在训练过程中生成推理优化,提高推理效率;同时,推理过程中也可以复用训练的分布式自动并行策略,进一步优化性能。这一特性为产业界提供了极致的开发体验,加速了AI模型的商业化进程。
3. 大模型昇腾硬件适配:
飞桨框架与昇腾硬件进行了适配,充分发挥了昇腾硬件的性能优势。通过融合算子、数据类型适配、计算与通信并行以及profile工具等优化手段,飞桨框架在昇腾硬件上实现了显著的性能提升。特别是在大模型训练场景下,飞桨框架与昇腾硬件的结合,为开发者提供了更加高效、稳定的训练环境。

▎融合算子
融合算⼦通过将多个操作合并为⼀个操作来有效减少内存访问,提升训练效率。FlashAttention 算⼦优化:昇腾⽀持 FlashAttention2优化算法的融合算⼦,计算精度⽀持 FP16、BF16,sequence length ⽀持最⼤8k。在昇腾亲和的 Shape 配置下,Flash Attention 计算的硬件利⽤率可以得到有效提升。Sparse attention:FlashAttention 融合算⼦参数使能 Sparseattention 计算,有效减少50%+的 QK 计算量。除此之外,当前飞桨+昇腾⽬前⽀持融合算⼦主要包括:RMSNorm、Swiglu、RotaryMul、ApplyAdamW 等;累计性能收益可达20%~30%。

▎数据类型适配
不同的数据类型可能会对性能产⽣显著影响,当昇腾使⽤ double 数据类型时,算⼦会通过 AICPU 来执⾏,⽽这可能会导致性能⼤幅度下降,如下图所示。为了避免类似情况引⼊的性能问题难以发现,我们在昇腾适配层代码加⼊告警,以便于问题定位。


AICPU 算子优化前

AICPU 算子优化后

▎计算与通信并行
在开启了 TP 和 SP 的大模型训练场景下,存在matmul计算和all-reduce操作的强依赖关系(不开启 SP),或存在 matmul 计算和 all_gather/reduce_scatter 操作的强依赖关系(开启 SP)。当模型参数量较大时,此处通信量和计算量都较大,在串行执行时,会引入较长的等待闲置时间。解决方案:将 matmul 计算和集合通信操作进行融合,将较大的计算和通信任务切分成较小的计算子任务和通信子任务,通过流水的方式使得通信子任务和计算子任务可以互相掩盖,从而减少等待和闲置时间,提高利用率。

原始计算图vs切分后的更细粒度的计算图 & 执行过程模拟对比

▎profile 工具
昇腾与飞桨共建了 profile 工具,能够方便地生成性能分析数据。
import paddle.profiler as profilerprofiler = profiler.Profiler(targets=[profiler.ProfilerTarget.CUSTOM_DEVICE],custom_device_types=['npu'])paddle.set_device("npu")profiler.start()### 需要采集的部分###profiler.stop()

接下来使用 msprof ⼯具输出分析结果。
alias msprof='/usr/local/Ascend/ascend-toolkit/latest/tools/profiler/bin/msprof'msprof --export=on --output=ascend_profilingmsprof_*.json #timeline文件,可以用chrome://tracing解析op_statistic_*.csv # CANN OP 的调用总结 op_summary_*.csv # CANN OP 的详细调用信息

在昇腾硬件上采集 profiling 信息

飞桨与昇腾就⼤模型⽀持进⾏了适配,欢迎⼤家按照使⽤教程体验:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/llm/npu/llama

总的来说,飞桨新⼀代框架——飞桨框架3.0-beta 昇腾版⾯向⼤模型进⾏专属设计,向下与昇腾硬件适配,充分释放昇腾硬件潜能;向上⼀体化⽀撑⼤模型的训练、推理。它不仅为开发者提供了便捷、高效的开发环境,更为产业界带来了显著的价值提升。随着AI技术的不断发展,飞桨框架将继续迭代升级,为AI技术的普及和应用做出更大的贡献。
⽬前此版本已⾯向开发者开放,并且所有的开发接⼝跟2.0完全兼容,欢迎⼴⼤开发者使⽤和反馈。
# 安装PaddlePaddle。该命令会自动安装飞桨主框架的3.0-beta版本:python -m pip install paddlepaddle==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/

#安装CustomDevice。该命令会自动安装飞桨Custom Device的3.0-beta版本:python -m pip install paddle-custom-npu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/npu/
【直播预告】
为了帮助开发者更好地掌握使用飞桨在昇腾机器上掌握模型开发、性能优化的技能,飞桨团队联合昇腾AI团队,特别推出了一门面向开发者的课程--《飞桨x昇腾AI开发者进阶之路》。百度飞桨和昇腾AI的资深工程师『天团』在9月13日晚间19:00直播(飞桨PaddlePaddle视频号、昇腾AI开发者B站),请扫描下方海报中的二维码,报名加入飞桨新硬件用户官方交流群,提前预约直播!


【⻜桨官⽹】
https://www.paddlepaddle.org.cn/

【昇腾社区】
https://www.hiascend.com/

上一篇

华为全联接大会2024“激发原生创新,拥抱数智世界”昇腾产业峰会成功举办

下一篇

CANN训练营深度开放直播特辑 | 持续解读基于深度开放的代码样例