飞桨框架技术创新之路

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
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.

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-15 20:35
浙ICP备14020137号-1 $Carte des visiteurs$