此文档展示 PaddlePaddle Hackathon 第七期活动——飞桨护航计划集训营(提前批) 项目的详细介绍
飞桨自 2.6 版本预发布新一代中间表示 Paddle IR(下简称 PIR),这项技术对底层的核心概念如 Operation、Attribute 等进行了系统性的抽象,为开发者提供了灵活的基础组件;同时,通过引入 Dialect 这一概念,飞桨能够全面、分层次管理框架各模块对中间表示的需求,并支持开发者根据需求定制化扩展 Dialect,显著提升了框架的扩展性。PIR 遵循 SSA(即 Static Single Assignment)原则,统一了顶层结构,实现“算子顺序性”和“计算图语义”的兼容表示。此外,PIR 还提供了更加简洁、低成本的 Pass 开发体系,并内置了一系列丰富且功能完备的 Pass 优化策略,为大模型的极致性能优化提供了强有力支撑。
经过与基础架构、推理、分布式、社区生态协同和孵化,飞桨 PIR 预计在 3.0 版本正式发布。为了向开发者和用户提供更完备、灵活、流畅的开发使用体验,PIR 项目正式进入全方位机制完善推全状态,本项目任务方向包括但不限于:
- 大模型分布式训练支持、优化:提升自动并行、模型并行等策略机制的完备性。
- 高性能、可插拔的多硬件通用推理 Pass 体系建设和完善:支撑更多大模型推理性能提速。
- 神经网络编译器全架构子图训练、动态 Shape 推理:融合策略、自动 Kernel 优化和生成,联动分布式和组合算子,加速训推效果,降低手工优化成本。
- 内核执行器迭代:优化调度策略,降低调度开销和峰值显存,训推一体。
- Python API 适配 PIR:下沉 Pybind 和 C++层,稀疏计算,多版本兼容的 Save/Load 体系,动静一体的组合算子拆分,架构统一。
故面向社区招募优秀的开发者,共建飞桨 3.0 生态。参与此项目,你可以接触到更前沿的 IR 设计(如 MLIR),算子融合 Pass 技能、自动 Kernel 生成、执行器调度策略、Pybind 技术栈、自动微分机制等知识。更重要的是,有优秀的导师耐心指导和例行答疑,深入理解飞桨基础框架、推理、分布式、神经网络编译器的架构设计,提升系统化思维能力。本任务的主要工作:
- 以基础框架、分布式、推理方向框架单测为牵引,完成相关功能机制的迭代完善,实现各个方向在 PIR 层面的验证。
- 灵活参与 Python API、稀疏算子、Save/Load 体系、组合算子等核心架构组件的迁移适配工作。
- 鼓励以兴趣自驱,持续发现和修复 PIR 为核心的框架问题,鼓励参与技术分享,与其他开发者共同学习成长。
- 拥有追求技术的开源热情、简单问题的细心、疑难问题的耐心、主动沟通学习的平常心
- 熟悉 Python、C++,有深度学习模型算法、框架研发经验
- 了解或使用过 CMake、熟悉 Git 操作,熟练 Linux 开发命令
- 熟悉有向无环图、拓扑排序等领域的算法
传统编译器通常是通过一些静态的优化技术将高级语言代码转化为底层机器码,以提高程序的性能和效率。AI 编译器作为一种新兴的编译器技术,则利用机器学习算法、自动化搜索和优化技术,通过对程序代码进行分析和处理,实现更高的性能和效率。
AI 编译器主要聚焦于解决深度学习模型的部署和推理过程中的多个关键问题,包括模型优化、跨平台适配、算法选择和编译效率等。其以减少人工优化工作量和提高模型性能为目标,通过融合自动化、机器学习和优化算法等技术,对深度学习模型进行综合优化和高效部署。
简言之,AI 编译器将一段用 DSL(Domain Specific Language)描述深度学习模型代码(即 High-Level IR),经过通用、高效、鲁棒的「设备无关的」自动优化策略以 Lower 到更低层次 IR 上(即 Low-Level IR),最后在给定的硬件设备上完成计算图优化、算子选择和内存分配,生成高性能的可执行程序。
飞桨的 AI 编译器 CINN 的静态 shape 功能在自 2.5 版本已正式开放给用户使用,可以在 to_static()动转静 API 接口中添加 backend="CINN"触发使用 CINN 作为执行后端,同时飞桨框架正在对编译器进行架构升级,支持动态 Shape 场景模型的训练、推理提速。
目前我们已经初步完成了整体方案路线的设计和流程搭建,但要支持完备的模型动态 shape 训练和推理,还有大量的机制开发和完善工作。本次护航计划参与的工作主要包括:
- 动态 Shape 架构下核心功能的鲁棒性迭代增强,包括但不限于 High-Level Compiler、AST Lowering、Low-level Pass、Backend Compiler 等模块优化。
- 动态 Shape 架构典型子图的性能分析优化工作,包括但不限于子图测试体系协同构建、Nsys 性能分析、Schedule 流程改造、Pass 增强或新增等。
- 在 PIR 中处理动态 Shape 符号推导与化简,PIR 中动态 Shape 与组合算子、编译器对接及联调,优化编译器关键组件与代码架构,提升系统稳定性和可维护性。
- 编译器模型应用扩量、部分机制问题修复、调试易用性、代码规范性等灵活事项。
- 拥有追求技术的开源热情、简单问题的细心、疑难问题的耐心、主动沟通学习的平常心
- 熟悉 Python、C++,有深度学习模型算法、框架研发经验
- 了解或使用过 CMake、熟悉 Git 操作,熟练 Linux 开发命令
- 熟悉有向无环图、拓扑排序等领域的算法
- 有 AI 编译器方向相关经验(加分项)
- 有高性能计算方向相关经验(加分项)
大模型训练已成为深度学习领域的重要研究方向,为了提高训练效率,减少资源浪费,各种优化策略和技术创新层出不穷。参与本课题的选手将与飞桨团队的工程师共同研究和探索业界前沿的大模型优化技术(包括但不限于计算算子优化、通信效率优化等),并在飞桨中开发落地,沉淀成框架基础化和平台化的能力,提升飞桨在大规模分布式训练场景的性能优势,为相关领域的研究者和从业者提供更流畅和更高效的训练体验。
- 熟悉 Python 和 C++
- 有深度学习框架应用和研发经验
- 了解 Transformer 相关模型结构及常见优化手段
深度学习框架算子数量多导致编译器对接、高阶微分和新硬件接入的成本增高和实现难度增大。而短期不可能大幅降低算子数量,所以可行思路是将算子分为基础算子和组合算子两类,并控制基础算子数量,其它算子均使用基础算子实现,使得新硬件接入、高阶微分和编译器对接只要在基础算子实现,即可实现预期功能。
目前组合机制的功能开发已经完成,并且在部分算子和模型上经过了初步验证。未来组合机制需要进一步拓展对动态 shape 的支持,并且选择一批算子集合进行组合机制的推全,本次护航计划参与的工作主要包括:
- 组合算子拆解成基础算子。
- PIR 中组合机制与其他模块的联调和问题解决。
- 动态 shape 的适配。
- 熟悉 Python,C++
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
为了降低代码转换
工具中转换策略 Matcher 的开发难度,需要对框架 API 中功能缺失、功能 Bug 的地方进行增强,补齐框架的短板功能。所有任务已记录在框架 API 易用性提升任务描述,一共 55 个任务,其中问题描述这一列阐述了当前 Paddle API 的问题;修改方案这一列阐述了该 API 的升级修改思路,即你需要开发的内容;预计成本这一列阐述了该任务的预估难度及成本。
- 熟悉 Python
- 熟悉 C++、CUDA
- 熟悉飞桨 API 算子开发,有 API 开发经验者优先
随着深度学习应用的扩展,也出现对复数支持的需求,比如图像、语音等领域的傅里叶变换,量子物理领域,其理论体系都是基于复数建立的。虽然并非不能用实数表示复数运算,但稍显繁琐,深度学习框架有原生的复数支持,可以使建模更接近其理论。
从更广义的视角来看,深度学习框架提供更好的复数支持,也是更好地支持复数神经网络研究的基础,而 Paddle 支持复数可以分成两个步骤:
- 【已完成】通用机制和基础设施的增强,包括复数 Attribute 的支持,复数自动微分,数值微分和梯度检测功能,这是实现支持复数的算子的基础。
- 【进行中】渐进式添加增强的功能,包括新增支持复数的算子,为已有算子添加复数 kernel,以及为相关 API 添加复数功能支持等。
主要职责为第 2 部分,主要有:
- 批量支持 Paddle 仅注册类算子复数(推全扩量)。
- 调研并支持 Paddle 组网类算子复数运算(推全扩量)。
- 增强 Paddle 复数反向单测的功能。
- 熟悉 Python
- 熟悉 C++
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源套件,囊括语音识别、语音合成、语音唤醒、声纹识别等多种语音常用功能的支持。由于近期 Paddle 新版本的升级存在不兼容部分(如 0-d tensor,view 行为修改等),需要重新对 PaddleSpeech 中的模型进行适配开发与回归测试,保证套件正常运转,模型功能与精度不受损失。
外部开发者需要做的事情包括:
- 基于新 Paddle 版本对 PaddleSpeech 进行适配升级,解决已有堵点。
- 现有语音模型的回归测试。
- 熟悉 Python
- 对深度学习有一定了解
- 工程能力较强
- 有过语音相关开发或训练经验者优先
PaddleDetection 是一个基于 PaddlePaddle 的目标检测端到端开发套件,在提供丰富的模型组件和测试基准的同时,注重端到端的产业落地应用,通过打造产业级特色模型|工具、建设产业应用范例等手段,帮助开发者实现数据准备、模型选型、模型训练、模型部署的全流程打通,快速进行落地应用。近期目标检测领域有新的热门模型发布,需要复现添加此类模型,保证套件模型丰富度和领先性。
外部开发者需要做的事情包括:
- 调研和复现近期 YOLO、DETR 相关的检测模型。
- 调研和复现近期开放世界的目标检测算法。
- 熟悉 Python
- 对深度学习有一定了解
- 工程能力较强
- 有过目标检测或者多模态相关经验者优先
飞桨开源跨模态大模型套件,聚合图像、文本、视频等多种模态,覆盖视觉语言预训练,文生图,文生视频等丰富的跨模态任务。旨在提供开箱即用的开发体验,同时满足开发者灵活定制需求,探索通用人工智能。
目前我们已经完成了模型的训练、推理、应用等基础能力建设,但跨模态领域发展迅速,从数据流、模型、训练、推理等都要不断地跟进与丰富。本次护航计划参与的工作主要分为三个部分:
- 前沿模型复现。
- 参与基础能力建设,包括 PPDiffusers 的 models、pipeline、训练等全流程能力建设与丰富。
- 进阶:推理、训练性能优化。
- 熟悉 Python
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 有跨模态大模型相关经验(加分项)
Paddle Predictor 是推理的重要组件,影响到业务的降本增效和上线迭代的效率。本项目旨在通过优化 Predictor 的 API 和核心组件,结合 PIR 的核心能力,实现 Predictor 的重构。同时本项目关注重要 IR Pass 的建设,包括混合精度推理 pass 等,以实现精度无损、显存节省的推理。
本次护航计划参与的工作主要分为三个部分:
- 参与新版本的 Predictor 设计实现。
- 参与 GPU 重点 Pass 的设计实现。
- 进阶:结合大模型重点优化推理性能。
- 熟悉 C++、Python
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 对大模型有了解和实践经验(加分项)
为了实现高效的将PyTorch代码自动化的转写成Paddle代码,从而提升模型迁移的效率,我们建设了代码自动转换工具: PaddlePaddle Code Convert Toolkits。目前虽然已支持约1500个Pytorch API的自动转换与90%的代码转换率,但在 单测的规范化建设、文档的规范化建设、机制建设 等方面仍然存在着很多的问题,仍有很多可以继续完善的地方。
本次护航计划参与的工作主要包括以下部分:
- 单测规范化建设约264个 + 框架问题的记录
- API功能增强对应的转换工具升级
- 新增API转换策略约200个
- 文档规范化的建设
- 转换机制开发,例如lazy_guard机制
- 辅助函数策略开发
- 熟悉 Python
- 熟悉Pytorch框架的使用,有论文复现经验者优先