此文档展示 PaddlePaddle Hackathon 第六期活动——飞桨护航计划集训营 项目的详细介绍
飞桨已经初步建立了一套新的 IR 体系,目前新旧两套 IR 体系同时存在,分别有各自的算子注册机制。在新的 PIR 体系下, 目前有很多算子尚未注册,我们需要把这些 在旧 IR 下注册但未在 PIR 下注册的算子进行补全。由于机制变动,部分算子的签名很难和旧算子保持完全一致,但是 PIR 算子体系依然要保持对旧 IR 的兼容性,这时候兼容性问题通过 Program Translator 模块来解决。所以这当中有两项工作:
- 对全量算子的覆盖。目前有相当一部分算子在新 IR 下是没有定义的,我们需要补充这部分算子的定义。
- 兼容性保证:需要确保新定义的算子和旧算子的兼容性。如果新旧算子的签名不一致,就需要为两个体系下的算子定义特殊的转换规则。
在这个过程中,我们会协同社区进行开发,你需要负责整理问题并发布任务到社区,为开发者答疑和 review PR。
- 熟悉 C++
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
为了进一步提升飞桨框架的可扩展性,我们研制了新一代中间表示 PIR(Paddle Intermediate Representation),基于 PIR, 我们重构升级了飞桨的执行器以及自动微分机制。PIR 控制流专项的主要内容是完善控制流算子的前反向设计表示、打通控制流算子的自动微分机制、支持控制流算子的转换和执行、并在框架存量单测上验证功能正确性。 本任务的主要工作包括:
-
完善和规范化 PIR 库相关接口及使用方式。
-
完善 PIR 相关组件的 clone 接口。(当前的 clone 接口没有考虑 region 和 block 的克隆,控制流情况下,调用该接口会导致程序崩溃,需要完善。)
-
完成 PIR 在 python 端以及 c++端的 OpResult 数据结构退场。(当前的 PIR 组网很多地方使用了 OpResult, 但是控制流情况下,算子的输入不一定是 OpResult, 也有可能是 BlockArgument, 因此,你需要将很多地方对 OpResult 的使用替换为对 Value 使用)。
-
我们在控制流专项中遇到的其它接口规范的工作。
-
-
参与控制流前反向与执行器的适配工作,推动控制流相关单测在 PIR 模式下的适配上线。
- 目前已经初步打通了控制流情况下,API 组网+自动微分+执行器的整个流程。你需要和我们一起,逐步将框架的控制流存量单测切换到 PIR 模式下进行执行,并修复在这个过程中可能发现的 API 组网、自动微分、执行器的相关 bug。
- 熟悉 Python
- 熟悉 C++
- 有深度学习框架应用和研发经验
当前 PIR 已经初步完成了 Python API 的适配升级工作,后续需要对 API 体系进一步打磨优化,解决 Python API 升级过程中遇到的长尾问题以及相关机制的补全,并完成 PIR API 的全面推广。 本课题的工作任务包括以下方面。
- API 相关单测适配:适配框架单测,使其能够在 PIR 模式下验证 Python API
- API 执行机制完善:完善 PIR 模式下,Python API 执行过程中出现的机制缺失等问题
- API 推广验证:参与解决框架模型套件推广 PIR API 过程中遇到的问题修复,从而实现全面推广 PIR API 的目标
- 熟悉 Python、C++
- 熟悉深度学习框架的一些基本概念,有相关的研发经验
动转静 SOT 模块是基于 Python 字节码的 JIT 编译模块,旨在在运行时将 PaddlePaddle 动态图组网代码转换为静态图组网代码,具体设计参见:PaddleSOT 项目介绍 由于 SOT 模块需要针对每条字节码进行模拟执行,并在 CodeGen 时生成合法的 Python 字节码,因此对于 Python 版本非常敏感。我们现在对 Python 3.8-3.11 已经有了较为全面的支持,但新发布的 Python 3.12 目前还是不支持的,因此需要专项对 Python 3.12 进行支持。
本任务需要完成以下几部分主要内容:
- 参考 Python 3.11 支持规划 ,调研 Python 3.12 主要改动,确定 Python 3.12 支持路线
- PR-CI-SOT 流水线上线 Python 3.12 监控,确保已有单测不会回归
- 适配 Eval Frame 模块,适配模拟执行、CodeGen 等流程
- 从 SOT 单测、动转静单测、套件模型测试三个角度验证 SOT 模块在 Python 3.12 下的正确性,确保 Python 3.12 的完整支持
在本任务中,你将主要完成 3、4 两部分内容,保障 SOT Python 3.12 的功能完备性。
- 精通 Python,对 Python 虚拟机执行机制有深入了解
- 熟悉 C/C++
- 掌握基本的编译原理知识
随着深度学习应用的扩展,也出现对复数支持的需求,比如图像,语音等领域的傅里叶变换,量子物理领域,其理论体系都是基于复数建立的。虽然并非不能用实数表示复数运算,但稍显繁琐,深度学习框架有原生的复数支持,可以使建模更接近其理论。
从更广义的视角来看,深度学习框架提供更好的复数支持,也是更好地支持复数神经网络研究的基础,而 paddle 支持复数可以分成两个步骤:
- 【已完成】通用机制和基础设施的增强,包括复数 Attribute 的支持,复数自动微分,数值微分和梯度检测功能,这是实现支持复数的算子的基础
- 【进行中】渐进式添加,增强的功能,包括新增支持复数的算子,为已有算子添加复数 kernel, 以及为相关 API 添加复数功能支持等
主要职责为第 2 部分,主要有:
- 批量支持 paddle 仅注册类算子复数(推全扩量)
- 调研并支持 paddle 组网类算子复数运算(推全扩量)
- 增强 paddle 复数反向单测的功能
- 熟悉 Python
- 熟悉 C++
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
为了实现高效的将 PyTorch 代码自动化的转写成 Paddle 代码,从而提升模型迁移的效率,我们建设了代码自动转换工具: PaddlePaddle Code Convert Toolkits。目前虽然已支持 1300+ 个 Pytorch API 的自动转换与较高的代码转换率,但在单测的规范化建设、文档的规范化建设方面仍有很多可继续完善的地方。
本课题的工作任务包括转换工具建设的以下内容:
- 单测规范化的建设
- API 功能增强对应的转换工具升级及校验
- 近期新增 API 转换策略的实现
- 文档规范化的建设
- 复杂 API 转换例如 lazy_guard 机制
- 辅助函数策略开发
- 熟悉 Python
- 熟悉 Pytorch 框架的使用,有论文复现经验者优先
为了降低 代码转换工具 中转换策略 Matcher 的开发难度,需要对框架 API 中功能缺失、功能 Bug 的地方进行增强,补齐框架的短板功能。所有任务已记录在框架 API 易用性提升任务描述,一共 55 个任务,其中 问题描述 这一列阐述了当前 Paddle API 的问题;修改方案 这一列阐述了该 API 的升级修改思路,即你需要开发的内容;预计成本 这一列阐述了该任务的预估难度及成本。
- 熟悉 Python
- 熟悉 C++、CUDA
- 熟悉飞桨 API 算子开发,有 API 开发经验者优先
深度学习框架算子数量多导致 新硬件接入、高阶微分 和 编译器对接 的成本增高和实现难度增大。而短期不可能大幅降低算子数量,所以可行思路是将算子分为基础算子和组合算子两类,并控制基础算子数量,其它算子均使用基础算子实现,使得 新硬件接入、高阶微分 和 编译器对接 只要在基础算子实现,即可实现预期功能。
目前组合机制的功能开发已经完成,并且在部分算子和模型上经过了初步验证。未来组合机制需要进一步拓展对动态 shape 的支持,并且选择一批算子集合进行组合机制的推全,本次护航计划参与的工作主要包括:
- 组合算子拆解成基础算子;
- PIR 中组合机制与其他模块的联调和问题解决;
- 【进阶】动态 shape 的适配。
- 熟悉 python,C++
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
在科学计算场景中,通常需要对含有高阶微分项的方程进行求值,如计算$\dfrac{\partial^2 u }{\partial x \partial y}$,而这一过程涉及到框架的高阶微分功能。目前飞桨框架正在根据实际场景对高阶微分功能的显存、速度、计算策略进行优化和升级。目前我们已经具备了数十个高阶微分场景案例,能有效评估未来的工作带来的收益,因此本项目旨在基于已有的评估手段,对一些显存占用大、速度慢、计算策略不够合理的高阶算子的进行问题定位、排查和修复,最终在这数十个真实使用场景下实现显存、速度上的优化。
- 熟悉 C++
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 有了解过物理信息嵌入的神经网络(加分项)
为了满足大模型时代 AI 技术快速创新和工程落地的要求,飞桨自动并行整体设计上需要大量的执行机制和调度技术协同优化,高效配合,才能有效降低大模型训练成本、提升迭代效率。本课题选手将参与到飞桨静态图半自动并行项目中,承担大模型并行策略和执行调度相关的性能优化、功能补齐、机制完善、问题修复等工作,提升静态图半自动并行训练性能,降低大模型训练和迭代成本,为飞桨自动并行方向的持续建设和精细打磨添砖加瓦。
- 熟悉 Python 和 C++
- 有深度学习框架应用和研发经验
- 了解分布式自动并行相关基础知识
大模型训练/推理的最优配置往往需要根据某些经验(模型组网、参数规模、硬件信息等)设计多组实验,对比实验结果后从中确定最优配置。该过程严重依赖人工经验,并且确定的最优配置可能非全局最优配置。当模型组网、参数规模、硬件等任一条件发生变化时,需要反复重复上述过程,如何自动地确定训练/推理最优性能配置逐渐成为深度学习框架差异化竞争的关键之一。
目前飞桨正在进行全自动并行架构升级工作,我们希望更多优秀人才能够参与全自动并行架构的探索与建设,让更多用户在大模型时代能够享受到全自动并行技术的高效与便捷,降低分布式并行使用门槛。相关工作包括但不限于:
- 建立准确的运行时间预估模型,能够根据模型结构、分布式并行策略和硬件拓扑信息预估端到端运行时间
- 加速搜索时间,包括但不限于压缩搜索空间、高效的搜索算法、搜索过程工程化加速等
- 熟悉 Python 和 C++
- 有深度学习框架应用和研发经验
- 了解分布式自动并行相关基础知识
参与 Paddle 在科学计算领域的拓展和基础功能建设工作,包括以下两个方向:
- 领域拓展:
- 科学计算领域相关 SOTA 论文复现和优化、自定义算子适配其他工具、传统求解器和 Paddle 框架适配与打通、DeepMD-kit Paddle 后端支持;最终目的是提升 Paddle 框架对于科学计算领域覆盖度,同时利用科学计算场景特有的计算过程,给框架提开发需求,提升框架易用能力,吸引科学计算领域用户使用飞桨框架。
- 本项目:DeePMD-kit Paddle 后端支持、光学案例建设
- 基础功能建设:包括套件接口丰富、接口设计、性能优化、科学计算领域数据集建设。最终目的是提升套件的易用能力,减少用户上手难度,吸引用户使用套件和 Paddle 框架进行科学计算项目开发。
- 熟悉 Python
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 对基于深度学习的科学计算求解有一定的兴趣
参与 Paddle 在科学计算领域的拓展和基础功能建设工作,包括以下两个方向:
- 领域拓展:
- 科学计算领域相关 SOTA 论文复现和优化、自定义算子适配其他工具、传统求解器和 Paddle 框架适配与打通、DeepMD-kit Paddle 后端支持;最终目的是提升 Paddle 框架对于科学计算领域覆盖度,同时利用科学计算场景特有的计算过程,给框架提开发需求,提升框架易用能力,吸引科学计算领域用户使用飞桨框架。
- 本项目:超分重构方向,主要参与基于 Diffusion+PDE 的超分重构案例模型构建、数据集调研及预处理、代码编写及调优、文档编写等内容,并在此过程中总结和学习相关领域知识
- 基础功能建设:包括套件接口丰富、接口设计、性能优化、科学计算领域数据集建设。最终目的是提升套件的易用能力,减少用户上手难度,吸引用户使用套件和 Paddle 框架进行科学计算项目开发。
- 熟悉 Python
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 对基于深度学习的科学计算求解有一定的兴趣
参与 Paddle 在科学计算领域的拓展和基础功能建设工作,包括以下两个方向:
- 领域拓展:
- 科学计算领域相关 SOTA 论文复现和优化、自定义算子适配其他工具、传统求解器和 Paddle 框架适配与打通、DeepMD-kit Paddle 后端支持;最终目的是提升 Paddle 框架对于科学计算领域覆盖度,同时利用科学计算场景特有的计算过程,给框架提开发需求,提升框架易用能力,吸引科学计算领域用户使用飞桨框架。
- 本项目:领域流体方向,主要参与基于数据驱动和物理驱动的流体速度压力等物理量预测, 数据集调研及预处理、案例建设等内容,主要包括
- 例如:HFM 等 Nature、Science、顶级期刊的论文复现工作
- 汽车外流场模拟方向的前沿案例数据集建设
- 流体方向的案例建设包括数据集调研与预处理、案例文档撰写与性能优化等;
- 基础功能建设:包括套件接口丰富、接口设计、性能优化、科学计算领域数据集建设。最终目的是提升套件的易用能力,减少用户上手难度,吸引用户使用套件和 Paddle 框架进行科学计算项目开发。
- 熟悉 Python
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 对基于深度学习的科学计算求解有一定的兴趣
参与 Paddle 在科学计算领域的拓展和基础功能建设工作,包括以下两个方向:
- 领域拓展:
- 科学计算领域相关 SOTA 论文复现和优化、自定义算子适配其他工具、传统求解器和 Paddle 框架适配与打通、DeepMD-kit Paddle 后端支持;最终目的是提升 Paddle 框架对于科学计算领域覆盖度,同时利用科学计算场景特有的计算过程,给框架提开发需求,提升框架易用能力,吸引科学计算领域用户使用飞桨框架。
- 本项目:领域气象方向,主要参与基于 CV、NLP 等网络架构的短临降水、中长期预报模型复现、案例建设等内容,主要包括:
- DGMR、EarthFormer 等论文的复现工作;
- 气象方向的案例建设包括数据集调研与预处理、案例文档撰写与性能优化等;
- 基础功能建设:包括套件接口丰富、接口设计、性能优化、科学计算领域数据集建设。最终目的是提升套件的易用能力,减少用户上手难度,吸引用户使用套件和 Paddle 框架进行科学计算项目开发。
- 熟悉 Python
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 对基于深度学习的科学计算求解有一定的兴趣
在深度学习框架中编译器是将用户定义的神经网络计算图转化为底层硬件可执行的二进制机器码的工具,用于提高框架计算效率、降低内存占用、加速推理过程,并在不同硬件平台上实现优化的部署。目前飞桨框架正在对编译器做升级优化,本项目旨在对编译器进行架构升级,在动态 Shape 场景下实现更优的计算性能。
目前我们已经初步完成了整体方案路线的设计和流程搭建,但要支持完备的模型动态 shape 训练和推理,还有大量的机制开发和完善工作。本次护航计划参与的工作主要包括:
- 编译器前端 Pass 支持动态 Shape 升级改造
- 编译器前端 Pass 处理动态 Shape 符号推导与化简
- 编译器动态 Shape 处理流程中关键机制的开发和完善
- 优化编译器关键组件与代码架构,提升系统稳定性和可维护性
- 熟悉 C++
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 有 AI 编译器方向相关经验(加分项)
- 有高性能计算方向相关经验(加分项)
在深度学习框架中编译器是将用户定义的神经网络计算图转化为底层硬件可执行的二进制机器码的工具,用于提高框架计算效率、降低内存占用、加速推理过程,并在不同硬件平台上实现优化的部署。目前飞桨框架正在对编译器做升级优化,本项目旨在对编译器进行架构升级,在动态 Shape 场景下实现更优的计算性能。
目前我们已经初步完成了整体方案路线的设计和流程搭建,但要支持完备的模型动态 shape 训练和推理,还有大量的机制开发和完善工作。本次护航计划参与的工作主要包括:
- 在 PIR 中处理动态 Shape 符号推导与化简
- PIR 中动态 shape 与组合算子、编译器对接及联调
- 【进阶】优化编译器关键组件与代码架构,提升系统稳定性和可维护性
- 熟悉 C++
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 有 AI 编译器方向相关经验(加分项)
- 有高性能计算方向相关经验(加分项)
传统编译器通常是通过一些静态的优化技术来将高级语言代码转化为底层机器码,以提高程序的性能和效率。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 架构下核心功能的鲁棒性迭代增强,包括但不限于 High-Level Compiler、AST Lowering、Low-level Pass、Backend Compiler 等模块优化
- 静态 Shape 架构典型子图的性能分析优化工作,包括但不限于子图测试体系协同构建、Nsys 性能分析、Schedule 流程改造、Pass 增强或新增等
- 部分机制问题修复、调试易用性、代码规范性等灵活事项;
📚 课代表总结:参与机制、易用性、鲁棒性建设,适合想系统入门 AI 编译器同学(对能力门槛仅要求 1 和 2);参与子图性能优化,适合想进阶编译器的 AI 能力架构设计(故能力门槛要求也高,额外要求 2);
💡 重要提示:对于有充分时间可连续参与 2 期护航计划的同学,可以先入门、再进阶,6 个月时间拿下 AI 编译器“山头”
- 熟悉 C++和 Python、有 CUDA 编程或自学经历
- 有高性能计算方向相关的项目或个人 DIY 开源仓库
- 对于疑难问题有探索精神、技术分享有热情(内部有定期 CUDA 技术分享)
在深度学习框架中编译器是将用户定义的神经网络计算图转化为底层硬件可执行的二进制机器码的工具,用于提高框架计算效率、降低内存占用、加速推理过程,并在不同硬件平台上实现优化的部署。目前飞桨框架正在对编译器做升级优化,本项目旨在对编译器进行架构升级,在动态 Shape 场景下实现更优的计算性能。
目前我们已经初步完成了整体方案路线的设计和流程搭建,但要支持完备的模型动态 shape 训练和推理,还有大量的机制开发和完善工作。本次护航计划参与的工作主要分为两个部分:
- CINN 后端 GroupSchedule 规则完善与升级
- CINN 后端 Schedule 原语完善与升级
- 熟悉 C++
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 有 AI 编译器方向相关经验(加分项)
- 有高性能计算方向相关经验(加分项)
在深度学习框架中编译器是将用户定义的神经网络计算图转化为底层硬件可执行的二进制机器码的工具,用于提高框架计算效率、降低内存占用、加速推理过程,并在不同硬件平台上实现优化的部署。目前飞桨框架正在对编译器做升级优化,本项目旨在对编译器进行架构升级,在动态 Shape 场景下实现更优的计算性能。
目前我们已经初步完成了整体方案路线的设计和流程搭建,但要支持完备的模型动态 shape 训练和推理,还有大量的机制开发和完善工作。本次护航计划参与的工作主要分为两个部分:
- 编译器模型应用扩量
- 优化编译器关键组件和代码架构,以提升模型应用的数量和质量(性能)
- 熟悉 C++
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 有 AI 编译器方向相关经验(加分项)
- 有高性能计算方向相关经验(加分项)
随着 Paddle 代码不断迭代开发,全量编译和增量编译耗时长,主要包括以下原因:
- 无效头文件引入,全量编译和增量编译都编译了很多不需要的文件;
- cmake 代码杂乱,无效依赖循环依赖较多,需要治理,许多公共组件需要下沉到 paddle/common,清除冗余代码;
- 编译逻辑不合理,老旧代码没有升级优化;
本次护航计划参与的工作主要分为以下三部分:
- 参与 Paddle 的全量编译优化,具体包括编译方式优化,C++ 头文件清理;
- 参与 Paddle 的增量编译优化,分析增量编译卡点问题并优化;
- 公共组件下沉,Paddle 有许多 C++文件需要从 phi 下沉到 common 目录,需要解决遇到的编译问题;
- 熟悉 C++,CMake;
- 了解编译,链接,装载与库等相关技术,有能力解决日常 Linux 下的常见编译问题;
- 了解 Windows 下编译技术,了解 windows 和 Linux 下的编译差异(加分项)
- 了解 Paddle 框架(加分项)
飞桨开源跨模态大模型套件,聚合图像、文本、视频等多种模态,覆盖视觉语言预训练,文生图,文生视频等丰富的跨模态任务。旨在提供开箱即用的开发体验,同时满足开发者灵活定制需求,探索通用人工智能。
目前我们已经完成了模型的训练、推理、应用等基础能力建设,但跨模态领域发展迅速,从数据流、模型、训练、推理等都要不断地跟进与丰富。本次护航计划参与的工作主要分为三个部分:
- 前沿模型复现,包括 AnimateAnyone、MagicAnimate 等前沿模型
- 参与基础能力建设,包括 PPDiffusers 的 models、pipeline、训练等全流程能力建设与丰富
- 进阶:推理、训练性能优化
- 熟悉 python;
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 有跨模态大模型相关经验(加分项)
飞桨开源跨模态大模型套件,聚合图像、文本、视频等多种模态,覆盖视觉语言预训练,文生图,文生视频等丰富的跨模态任务。旨在提供开箱即用的开发体验,同时满足开发者灵活定制需求,探索通用人工智能。
目前我们已经完成了模型的训练、推理、应用等基础能力建设,但跨模态领域发展迅速,从数据流、模型、训练、推理等都要不断地跟进与丰富。本次护航计划参与的工作主要分为三个部分:
- 前沿模型复现,包括 LLaVA-v1.5、InternlM-XComposer 等前沿模型
- 参与基础能力建设,包括数据流、训练等全流程能力建设与丰富
- 进阶:推理、训练性能优化
- 熟悉 python;
- 对深度学习有一定了解
- 有深度学习框架应用和研发经验
- 有跨模态大模型相关经验(加分项)
在大模型时代,如何稳定且快速的收敛成为一个关键探索问题。飞桨在这方向也持续在研究,目前我们完成了 AdaptiveNormClip 算法的验证,需要进一步把工作做扎实。本次护航计划聚焦于第 1 部分,完成后可以进一步参与 2、3 部分。
- 熟悉接手 AdaptiveNormClip 算法,通过数学推导证明有效性,在开源模型上验证,形成论文投稿
- 从优化器和学习率调整的角度出发,研究基于 Transformer 模型结构的快速收敛方法,成果可以形成论文投稿
- 从高效低价小模型出发,研究低成本微调的方法,包括但不限于网络结构的创新、低显存开销等方面创新
- 熟悉 python
- 对深度学习比较了解
- 有顶会论文者优先
- 有 NLP/视觉大模型相关经验(加分项)
动转静 SOT 项目在 2.6 成功发版之后虽然在套件模型上取得了成功率 100%的成绩,但是在某些场景下存在频繁转写的问题,其中一个主要原因就是动态 Shape 的存在。动态 Shape 在变长输入和 NLP 领域普遍存在,因为 SOT 目前只支持静态 Shape,只会针对静态 Shape 生成合理的 Program,因此在动态 shape 时会无法命中缓存,从而导致多次转写,影响性能。目前已经有了动态 Shape 的初步方案,需要外部开发者协助开发,主要做如下的事情:
- 熟悉并了解 SOT 的原理。
- 理解 SOT 动态 Shape 方案,并规划排期,每周定时对齐进度。
- 按照排期对 SOT 动态 Shape 开发。
- 熟悉 python
- 对深度学习比较了解
- 曾经参与过 SOT,并对 SOT 有贡献的优先
- 对动转静有理解的优先
- 熟悉 Python 虚拟机技术的优先
PaddleInference 负责深度学习模型推理优化和部署,其中 Pass 优化&融合算子开发是推理优化的主要手段。当前框架侧已具有一定数量的优化 Pass & 融合算子,但相较业内主流竞品(TensorRT/AITemplate/Pytorch/OnnxRuntime 等)还具有一定差距,因此,该项目首先会对竞品做一个全面的调研,然后结合当前 Paddle 现状针对性的进行补全工作。目标是在优化 Pass & 融合算子数量持平或优于业内水平,从而提升全量模型的推理性能。主要工作如下所示:
- 协助调研业内各竞品推理 Pass & 融合算子体系
- 基于 PIR 完成相关 Pass 的开发
- 完成相关融合算子 & kernel 的开发
- 完成 Paddle 内 OneDNN 相关 Pass 的 PIR 迁移开发
- 熟悉 C++
- 对深度学习框架实现原理、推理部署有一定了解
- 有过模型推理优化、算子开发经验者优先
PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源套件,囊括语音识别、语音合成、语音唤醒、声纹识别等多种语音常用功能的支持。由于近期 Paddle 新版本的升级存在不兼容部分(如 0-d tensor,view 行为修改等),需要重新对 PaddleSpeech 中的模型进行适配开发与回归测试,保证套件正常运转,模型功能与精度不受损失。外部开发者需要做的事情包括:
- 基于新 Paddle 版本对 PaddleSpeech 进行适配升级,解决已有堵点
- 现有语音模型的回归测试
- 熟悉 Python
- 对深度学习有一定了解
- 对语音相关知识及常用网络结构有一定了解
- 有过语音相关开发或训练经验者优先