飞桨框架技术创新之路
如果无法正常显示,请先停止浏览器的去广告插件。
1. 飞桨框架技术创新之路
百度杰出架构师 / 胡晓光
2.
3. 目录
飞桨框架总体设计
动静统一自动并行
飞桨框架关键技术
4. 人工智能技术栈
应用层 New Bing
模型层 Gemini
Midjourney
ChatGPT
框架层
芯片层
百度新搜索
……
……
……
TPU
……
5. 深度学习框架核心功能
易用的开发接口
•
•
•
•
数据抽象:Tensor
操作抽象:Operator
Python,Numpy
避免了解硬件底层开发接口,如Cuda C, cuDNN, cuBlas等
自动微分功能
• 只需要写神经网络的前向,通过链式法则自动计算Loss关于参数的梯度
• 高阶自动微分
• 前向自动微分
多硬件
• 隔离硬件差异,如Cuda C, oneAPI, XTDK, BangC等等
• 充分发挥硬件性能
分布式,合理排布计算、访存、通信等操作
可扩展,如硬件后端、算子、Pass、Dialect等
6. 模型和框架代码规模对比
• 让深度学习技术的创新与应用更简单
模型 代码规模 框架 代码规模
Llama3(推理) 2千行 Tensorflow(去三方库) 420万行
StableDiffusion 1.8万行 PyTorch 298万行
AlphaFold 2.4万行 PaddlePaddle 307万行
https://github.com/meta-llama/llama3 https://github.com/tensorflow/tensorflow
https://github.com/Stability-AI/stablediffusion https://github.com/pytorch/pytorch
https://github.com/google-deepmind/alphafold https://github.com/PaddlePaddle/Paddle
统计于2024年6月6日
7. 自动微分功能
8. 深度学习框架发展历程
PaddlePaddle开源
(PArallel Distributed Deep
LEarning)
静态图模式
分布式训练
Theano开源
于2008
Caffe开源
TensorFlow开源
PyTorch v0.1发布
静态图模式
符号微分
Layer
动态图模式
2012
Deep Belief Nets
图像、语音应用
学术创新
动静统一
千亿模型混合并行 +Compile
+shard_tensor
TensorFlow v2.0 飞桨CINN探索
+Eager模式
Compiler
PyTorch v1.3
融合两种开发模式
灵活和效率的平衡
2016
自然语言处理
飞桨3.0 Beta待发布
+Graph模式
Operator
更小的复用粒度
2006
飞桨2.0发布
2019
Transformer
科技企业参与
PyTorch v2.0
+Compile
大规模分布式
极致性能优化
2023
预训练模型
科学计算、生物计算等
大规模产业应用
大语言模型、多模态模型
大模型时代
9. 大模型技术发展趋势
RWKV使用RNN网络达到跟Transformer可比的效果
Switch Transformers: Scaling to Trillion Parameter
Models with Simple and Efficient Sparsity
Mamba: Linear-Time Sequence Modeling with
Selective State Spaces
https://openai.com/research/video-generation-models-as-
world-simulators
10. 人工智能引发科学发现和模式创新变革
2021年 DeepMind公司提出AlphaFold2模型
突破生物学家50年未解蛋白质结构预测难题 2022年 英伟达&西门子 基于AI和物理的风电场数字孪生
以比传统方法快 4,000 倍
2023年 DeepMind公司提出GraphCast气象模型
90%气象要素预测精度领先权威气象台 2024年 普林斯顿团队用AI提前300毫秒预测
核聚变等离子不稳定态
11. 大模型时代的深度学习框架
开发体验:动静统一、训推一体、自动并行
开发者
MoE、多模态
AI for Science
AI技
术发
展
飞桨框架
产业
落地
训、压、推全流程
硬件
极致性能:广泛硬件适配、软硬一体协同优化
12. 飞桨框架架构图
模型层 大语言模型
接口层 张量表示
表示层
•
•
多模态模型
数学计算
动转静
AST代码转写
字节码模拟
•
•
科学计算
组网
自动微分
反向微分
高阶微分
计算机视觉
优化器
•
•
语音
自动微分
分布式
并行策略
集合通信
•
•
…
分布式
自动并行
张量切分
策略寻优
•
•
…
组合算子
前向规则
反向规则
Paddle IR
Program 语义
执行层
适配层
芯片层
SSA Graph 语义
Operation
Dialect
Pass
动态图执行引擎 静态图新执行器 内存/显存管理优化
设备抽象 PHI算子库 神经网络编译器CINN
设备运行时 分布式通信 Tensor定义 算子定义 动态形状推导 算子自动融合
存储管理 计算流管理 算子内核 基础算子 代码自动生成 参数自动调优
英伟达GPU
昆仑XPU
海光DCU
昇腾NPU
寒武纪MLU
…
13. 各模块之间的关系
大模型自动并行
动态图
(含自动并行)
动转静
静态图
(含自动并行)
自动微分
PIR
IR等基础架构统一
推理部署
动态执行引擎
Pass
执行器
算子库
组合算子
CINN编译器
多硬件
高性能编译计算
14. 飞桨新一代框架
动转静
动态图
def foo(x):
y = conv2d(x, …)
z =
batch_norm(y, …)
return relu(z)
拆解
静态图
x
Conv2d
BatchNorm
ReLU
动态图
动转静
对接
框架基础算子
编译器
动静统一、训推一体
广泛硬件适配
自动并行
高阶自动微分
w
x
Conv
x
+
-
bias
Mean(x)
Std(x)
Max(x, 0)
return return
新IR 自动微分
自动并行
组合算子
编译器
执行器
像写单机代码一样写大规模分布式程序,通过自动并行、自动微分、编译优化等技术,
实现极致性能和广泛硬件适配
15. 目录
飞桨框架总体设计
动静统一自动并行
飞桨框架关键技术
16. 静态图和动态图开发模式
切换到静态图
模式
动静统一的组
网
创建计算图
(编译期)
每次执行
都动态创
建计算图
每次执行相同
的计算图(执
行期)
静态图
动态图
17. 动静转换技术
to_static
一行命令转换成静态图
18. 动静转换技术
飞桨动转静Python语法支持率94%,领先PyTorch的59%
飞桨模型整图导出成功率95%,领先PyTorch的62%
通过比较官网文档说明的Python语法34项,以上展示部分语法
19. PaddleSOT动静转换
自适应图构建机制
Subgraph
op
op
op
op
升级
Subgraph
• 解决深度学习模型下 Python 语言与框架 IR 之间
差异性,实现转静训练100%的成功率,极致化
用户体验
• 拓宽接入AI 编译器的路径,解锁更多转静加速能
力
op
动转静
终止
op
op
op
op
op
自适应
图构建
20. 中间表示IR
静态图
先组网后执行、依赖执行器、全局视野
中间表示
运行时
张量 + 算子 = 计算图,即 IR 中间表示
执行器
硬件设备
21. 中间表示IR应用示例
推理部署 性能优化
模型训练仅是深度学习任务链条的一环,更重要地是结 IR 中包含了计算图的全局信息,如上下游算子的邻接
合业务落地,部署推理,开放给用户使用 关系等,更有利于进行图优化
推理计算图
常
量
折
叠
算子
融合
张量 inplace
22. Declarative Rewrite Rule 机制(即DRR)
三段式Pass开发范式,让开发者更聚焦于Pass逻辑的处理,无需关心底层IR的细节
Source Pattern
Pass样例:移除冗余连续的Cast计算
Result Pattern
23. Declarative Rewrite Rule 机制(即DRR)
DRR 应用广泛,在算子Fuse融合类Pass开发上,简洁易用,有效降低60%的开发成本
FlashAtten 算子融合Pass
Conv2d+Add+Act 算子融合Pass
24. 高扩展中间表示PIR
高扩展性IR
统计超过900个模型配置
PIR升级推理速度提升分布
支撑大模型性能极致优化
70.00%
功能完善的Pass体系
Pattern Rewriter
DRR
50.00%
40.00%
多层级的Dialect
Operator Dialect Distributed Dialect
Kernel Dialect CINN Dialect
Shape Dialect
Control Flow Dialect
58.98%
60.00%
30.00%
25.22%
20.00%
10.23%
10.00%
4.81%
1.76%
0.00%
灵活的基础组件
Operation Value Attribute
Type Trait Interface
提升30%+
提升10%
下降10%
下降30%
持平
通过使用PIR,Pass开发成本降低60%,推理性能提升超过10%
• 提前静态选Kernel策略,调度更加轻量高效
• 常量折叠Pass适用范围更广、执行速度更快
• Inplace Pass适用范围更广、支持更多算子
25. 大模型对算力的挑战
计算量、参数量增长大幅超越AI芯片算力、显存增长速度
计算量 vs 摩尔定律
多节点分布式/并行计算
参数量 vs 显存
算力 vs 带宽
以NVIDIA近年代表性GPU发展为例
GPU型号 发布时间 Tensor Performance 显存大小 机内互联带宽
A100 2020 312 TFLOPS(FP16/BF16) 80GB 600GB/s
H100 2022 1000 TFLOPS(FP16/BF16) 80/94GB 900GB/s
B200 2024 2250 TFLOPS(FP16/BF16) 192GB 1800GB/s
图片引自: https://arxiv.org/pdf/2005.14165.pdf https://medium.com/riselab/ai-and-memory-wall-2cb4265cb0b8
带宽瓶颈
26. 通往大模型训练之路
面临问题
解决思路
技术方案
Batch Size=1都跑不起来 进一步提高Batch Size
使用更低精度训练 提前释放Activation
节省显存 拆分mini-batch,多
次计算前反向,一次
参数更新
混合精度训练 重计算 梯度累加
参数切片并行 张量并行 流水线并行
模型状态切分 算子内部切分 层间切分
FP32显存占用过高
“可训练”
单
设备
优化
降低单卡显存占用
显存占用过高,
导致单卡无法放
下整个模型
多
设
备
优
化
多设备摊分显存
“训得快”
单设备
训练太慢
多设备摊分数据
并行训练
数据并行
27. 飞桨分布式技术架构演进路线
如何实现高效的混合并行策略以应对大模型的发展?
• 不同模型、不同规模、不同设备可能需要使用不同的策略
解决方案
• 手动并行:手动管理张量切分和通信,不同并行策略使用不同的API
• 自动并行:框架自动推导张量切分和通信,用统一API表示不同并行策略
• 半自动并行:需要用户添加少量分布式标记信息,框架推导剩余算子和张量的分布式信息
• 全自动并行:不需要用户添加分布式标记信息,框架自动推导所有算子和张量的分布式信息
手动并行到自动并行的架构演进
、
动态图
手动并行
动静统一
半自动并行
动态图
半自动并行
动转静
静态图
半自动并行
全自动
并行
28. 手动并行代码示例(TP&PP)
• 对于百亿甚至千亿规模的大模型,一般需要使用 TP + PP + DP/Sharding 的混合并行方式进行训练
修改TP组网
初始化分布式环境
构造分布式model和optimizer
运行模型训练
修改PP组网
如何用一种方式统一表达各种并行策略?
29. 分布式标记(DistAttr)
如何表示张量在多卡设备的分布状态以及不同的并行策略?
• ProcessMesh 每个设备映射一个进程,用进程mesh来表示设备资源
• Placement 张量在不同设备的分布(切分)状态
• Replicate: 复制的
• Shard(n): dim-n切分的
• Partial: 不完整的,需要规约
• sum, mean…
30. 动静统一自动并行
张量模型并行
混合并行训练代码开发大幅简化
张量模型并行
Data 0 GPU0 GPU1 Data 0 GPU4 GPU5
Data 1 GPU2 GPU3 Data 1 GPU6 GPU7
数据并行
mesh0/stage0
mesh1/stage1
流水线并行
张量切分
Replicate Shard(0) Shard(1)
1 2 1 1
3 4 1 2 3 4
GPU0
2
3
2
GPU1
3
4
4
31. 动静统一自动并行
无需感知
分布式通信逻辑
Llama2模型不同规模性能
2500
2000
1500
1000
以Llama模型为例,无需考虑通信逻辑,核心代码可减少50%,性能持平手动优化版本
500
0
Llama2 13B
32*A100 DP1_MP1_PP4_VPP5_Sharding8
同类开源产品
Llama2 70B
32*A100 DP1_MP4_PP8_VPP5_Sharding1
飞桨手动并行
飞桨自动并行
32. 动静统一自动并行架构
• 统一分布式标记
• 自动切分推导
• 自动切分转换
• 动静统一
• 参数自动转换
• 代价模型
• 静态图执行调度
33. 目录
飞桨框架总体设计
动静统一自动并行
飞桨框架关键技术
34. 高阶自动微分
2D矩形平板分布受载
2
2
2
2
�
�
�
�
�
4
∇ �=
+ 2
+ 2 �= ,
2
2
�
��
�� ��
��
� ∈ 0, � , � ∈ 0, �
在x = 0和x = �两条边上,有挠度�和力矩� � 为0
在x = 0和x = �两条边上,有挠度�和力矩� � 为0
�
� � =− �
��
�
� � =− �
��
� 2 � � 2 �
+ 2
2
��
��
� 2 � � 2 �
+ 2
2
��
��
� 2 �
� 2 �
� � =− �
2 +�
��
�� 2
� 2 �
� 2 �
� � =− �
2 +�
��
�� 2
� �� = � 1 − �
� 2 �
���
35. 组合算子机制
机制上保障模型性能
Python API
• 动态图:拆解N+1阶微分
C++ API
• 静态图:编译器融合优化
静态图组合机制
动态图组合机制
前向计算图
动态图前向执行
动静一体的组合规则
• 动静复用同一套组合规则
前向拆解
反向构图
基础计算图
自动微分
动态图反向执行
完备的基础算子集合
• 原子性
• 实用性
• 面向Tensor
• 完备性
完整计算图
动静一体基础算子体系
前向算子组合规则
基础算子微分规则
算子
注册
机制
基础算子体系
动态图基础算子
静态图基础算子
模型精度和显存优化
• 自定义反向
• 自动重计算
36. 组合算子模型精度和显存优化
通过自定义反向算子拆分规则,降低算子拆分计算图的复杂度,减少显存、提升计算数值稳定性
37. 深度学习编译器
算子组合方式更灵活,
但运行速度慢
手写算子运行速度快,
但不够灵活
1258
以RMSNorm算子为例,通过神经网络编译器技术,保持灵活易用的前提下,
速度相比手动优化版本提升14%,相比算子组合方式提升至5倍
单位微秒
耗时
282
247
算子组合
手动融合
编译器
38. 深度学习编译器
飞桨计算图
编译器高层 IR
飞桨计算图
LLVM IR 代码
(Operator Dialect)
拆解为组合算子,更容易
原始的计算图表示,包含
未拆解的大算子,以及原
始的动态Shape,无符号
约束信息。
优化。子图自动融合为
CINN Dialect 的Fusion
算子,且包含动态Shape
符号,以此为后端Kernel
基本单位。
动态shape支持
组合算子
机制
Host 端
Launch CUDA Kernel
高层IR
(CINN & Shape Dialect)
低层 IR: AST(抽象语法树)
算子自动聚合
神经网络
编译器前端
动态Shape信息
低层IR
运行时推导
(AST)
神经网络
编译器后端
CUDA C 源码
Kernel自动生成
面向大模型、科学计算等的训练和推理任务,支持可变形状输入,
LLVM IR
CUDA
通过多硬件Kernel自动生成、计算图编译优化等技术,实现极致性能和广泛硬件适配
GPU
XPU
机器码/汇编
CPU
39. Shape Dialect解读
飞桨对框架内150+基础算子和典型算子新增支持了动态Shape推导逻辑
InferSymbolicShape 可动态地随计算图Pass的应用,自适应且Lazy的更新符号信息
40. 动态Shape下Kernel生成
在CodeGen阶段,自动关联动态Shape符号,控制流分支自适应Dispatch
动态Shape下CodeGen 样例
符号动态推导
41. 0.06
科学计算模型优化
构建飞桨AI for Science 开源工具链
NVIDIA Modulus PaddlePaddle VS PyTorch
A100 GPU 吞吐率对比
0.14
PyTorch吞吐率
Paddle吞吐率
0.12
0.1
0.08
0.04
0.02
0
基于飞桨高阶自动微分及编译优化技术,NVIDAI Modulus 上44个飞桨为后端的案例
平均吞吐性能相比PyTorch提升40%
_1
e…
模型名称
42. 硬件适配方案
模型
深度学习框架(飞桨等)
计算图
① 算子映射
计算图
计算图
计算图
② 算子开发
③ 图引擎
④ 深度学习编译器
PHI算子库
框架调用芯片加
速库函数
手写算子库
手写高级语言代
码如Cuda C
芯片加速库
如cuBLAS, CUDNN
芯片加速库
可以由汇编或者高
级语言实现
计算图引擎
如TensorRT、
ONNXRuntime
CINN编译
器
生成高级语言代
码如Cuda C
高级编程语言编译器如NVCC
芯片软件栈提供高级编程语言
生成汇编语言
TorchInductor编
译器
生成
Triton IR
生成Triton IR
Triton编译器
生成
LLVM IR
SyCL
生成
LLVM IR
LLVM编译器
生成汇编语言
低层编程语言
芯片软件栈提供汇编编程语言及优化接口,如NVIDIA NVPTX
芯片
43. 共创繁荣硬件生态
共 与硬件伙伴合作深化,全面共创
创
实现生态繁荣共赢
与22家硬件伙伴联合发布飞桨生态发行版
软硬件协同深度优化,为开发者提供软硬一体化体验
Open Model Zoo
NGC & Deep Learning
Examples
Imagination_PaddlePaddle_M
odel Zoo
共 携手硬件生态伙伴软硬一体联合优化
研
适配主流芯片 / IP
Model zoo
飞桨镜像
Paddle Examples for
Arm Virtual Hardware
(AVH即将上线百度智能云) DeepSparkHub
DL飞桨模型库 海飞科模型库
飞桨-鹏城云脑发行版
Model Garden
TS.Knight-Model Zoo
龙芯版飞桨
Paddle_MLU
AX-Samples
PaddlePaddle
Model Zoo
紫光模型库
注:根据生态发行版发布时间先后排列
飞桨模型库
moffett-modelzoo-
paddle
飞桨_example_for
_Zhouyi_NPU
太初模型库
MetaX Model zoo
RKNN_model zoo
硬件生态共创计划成员超过40家,全面覆盖国内外主流硬件厂商
共 与合作伙伴联合发起飞桨硬件生态圈
聚
促进 AI 产业链的适配升级
注:根据加入硬件生态共创计划时间先后排列
44.
45.