[go: up one dir, main page]

Skip to content

Latest commit

 

History

History
337 lines (208 loc) · 17.6 KB

【PaddlePaddle Hackathon 5th】飞桨护航计划集训营项目合集.md

File metadata and controls

337 lines (208 loc) · 17.6 KB

此文档展示 PaddlePaddle Hackathon 第五期活动——飞桨护航计划集训营 项目详细介绍,更多详见 PaddlePaddle Hackathon 说明

项目一:算子规范和 ProgramTranslator 功能优化

项目介绍:

飞桨正在搭建一套新的IR体系,但是未来相当一段长时间,依然要保持对旧IR的兼容性。这意味着对于一个通过旧IR(即当前的Program API)表达的计算图,在新IR全面推广后,依然要可以正确执行。为了达成这一目的,我们开发了Program Translator,它可以将一个旧IR表示的ProgramDesc转换为新IR体系下的Program。

ProgramTranslator目前已经能支持相当一部分模型表示转换,然而,要覆盖所有的场景,我们依然有以下工作需要支持,包括:

  1. 对全量算子的覆盖。目前有相当一部分算子在新IR下是没有定义的,我们需要补充这部分算子的定义。
  2. 长尾场景。新旧IR下有相当一部分算子的定义是不一致的,ProgramTranslator在翻译这部分算子时需要为它们定义单独的转换工作。
  3. 控制流支持。目前ProgramTranslator不支持包含控制流的模型进行转换。

在后续工作中,你会主要负责第1/2部分,在这个过程中,我们会协同社区进行开发,你需要负责整理问题并发布任务到社区,为开发者答疑和review PR。

营员要求:

  • 熟悉 C++
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验

项目二:新 IR Pass 建设和依赖的核心组件完善

项目介绍:

飞桨框架在进行新IR重构的同时,需要在新IR上搭建一套新的Pass体系,我们的目标是将原先IR上实现的Pass全部迁移到新的IR Pass,进而达成新IR对旧IR的替换。

目前我们已经完成了新IR Pass架构的主体设计和核心组件的开发,但要支持全部Pass的替换还需要大量的机制开发和完善工作,这些工作主要可以分为两个方面:

  1. 新IR Pass 模块的机制开发和完善
  2. Pass 模块所依赖的新IR基础组件相关机制的支持和完善

补充:在这些机制都完成支持后,还需要将全部的Pass的逐一迁移到新的Pass中(作为团队内部任务或社区任务),所以在设计时还需要考虑尽可能的使新Pass的API接口更简洁易用,从而降低Pass迁移时的开发成本。

本课题选手将参与到上述新IR Pass的建设项目中,共同搭建一套设计简洁优雅,用户开发成本更低的Pass体系。

营员要求:

  • 熟悉 C++
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验

项目三:新 IR API + 自动微分推全和核心组件完善

项目介绍:

飞桨框架自2.5版本开始重构旧的Program IR体系,孵化编译器友好、高度灵活和易扩展性的新一代 IR 体系,有力支撑基础框架训练、推理、编译器、分布式、科学计算等领域。

新一代 IR 体系的重构升级对于用户是透明无感的,得益于前端Python API、自动微分核心组件的无缝升级切换,故此课题主要内容包括:

  1. 飞桨Python端全量API 静态图分支的切换新 IR 体系并下沉C++
  2. 基于Python API的自动微分机制全量验证
  3. API 和自动微分推全时依赖的核心组件、功能机制的迭代完善

营员要求:

  • 熟悉 Python
  • 熟悉 C++
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验
  • C++基础扎实,有深度学习框架、AI 编译器域研发经验的优先

项目四:组合机制前反向架构统一

项目介绍:

飞桨组合机制前向和反向拆解规则分别在python和C++层注册,正值飞桨新IR体系重构,组合机制正在迁移到新IR,预期目标是实现组合机制前反拆解规则注册的统一,都在c++层进行。架构统一后,将显著降低组合机制的拓展成本,比如基于基础算子实现jvp,vmap等功能。

在我们机制完成支持后(预计9月下旬),需要批量将python层组合算子拆解规则迁移到c++层,涉及到的工作如下:

1.掌握算子语义,在c++重写python层的拆解逻辑;

2.解决拆解规则可能遇到的问题:机制问题、算子精度问题

营员要求:

  • 熟悉 Python
  • 熟悉 C++
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验
  • 熟悉算子语义,会自动微分相关的调试,包括前反向算子的精度调试

项目五:算子支持复数计算专项

项目介绍:

随着深度学习应用的扩展,也出现对复数支持的需求,比如图像,语音等领域的傅里叶变换,量子物理领域,其理论体系都是基于复数建立的。虽然并非不能用实数表示复数运算,但稍显繁琐,深度学习框架有原生的复数支持,可以使建模更接近其理论。

从更广义的视角来看,深度学习框架提供更好的复数支持,也是更好地支持复数神经网络研究的基础,而paddle支持复数可以分成两个步骤:

  1. 【已完成】通用机制和基础设施的增强,包括复数 Attribute 的支持,复数自动微分,数值微分和梯度检测功能,这是实现支持复数的算子的基础
  2. 【进行中】渐进式添加,增强的功能,包括新增支持复数的算子,为已有算子添加复数 kernel, 以及为相关 API 添加复数功能支持等

主要职责为第2部分:负责为已有算子添加复数 kernel,为开发者复数kernel开发提供指导以及对开发者的pr review

营员要求:

  • 熟悉 Python
  • 熟悉 C++
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验

项目六:量化算子集成

项目介绍:

量化推理是推理加速的重要手段,飞桨推理框架(Paddle Inference)正在支持原生量化推理覆盖更多场景,无缝衔接量化训练/离线量化与量化推理,因此需要在框架中支持多类量化推理算子:

  1. 【已完成】matmul与fc算子支持int8精度:量化推理核心算子,目前已经开发完成
  2. 【计划中】matmul与fc算子支持fp8精度:适应Hooper架构的更低精度推理
  3. 【计划中】quantize算子和dequantize算子:承载上述低精度与半精度/单精度算子之间的转换功能

此外,还需要设计并开发 量化训练/离线量化 产物形式,以灵活适配原生量化推理。

营员要求:

  • 熟悉 Python
  • 熟悉 C++
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验

项目七:开源模型加速复现

项目介绍:

飞桨开源大模型套件需要打磨各项能力,提高云上飞桨大模型训压推能力,提升飞桨公司内外部影响力。除了需要打磨重点大模型LLaMA、ChatGLM、Bloom等系列模型的训压推一体能力外,还需要对许多开源大模型同样进行相关的模型加速实现,例如FasterViT、GETR、ChatGLM2、VitDet等,形成工具链。除了其中推理部署复现和性能加速成为重点工作之一,主要包括:

  1. FasterViT 开源模型精度对齐和性能加速实现。
  2. GETR 开源模型精度对齐和性能加速实现。
  3. VitDet 开源模型精度对齐和性能加速实现。
  4. ChatGLM2 开源模型精度对齐和性能加速实现。

通过该项目,可以对大模型结构有深入的了解和理解,同时对大模型推理加速相关的知识,涉及到各种重点算子的融合实现。

营员要求:

  • 熟悉 Python
  • 熟悉 C++
  • 对深度学习有一定了解

项目八:CPU融合算子 / GPU算子融合pass

项目介绍:

飞桨框架正在进行IR重构,实现一套新的IR,在此IR之上我们已经搭建了一套新的Pass体系,我们的目标是将基于旧IR实现的存量图优化Pass全部基于新IR/新Pass体系重写一遍,需要保证新Pass的可用性、易用性、正确性。我们计划分阶段、分方向重写这些图优化Pass,这里的工作仅涉及到CPU、GPU相关图优化Pass,包括但不限于:

  1. 梳理并实现CPU和GPU可共用的基本图优化pass;
  2. 实现CPU相关融合类图优化pass;
  3. 实现GPU相关融合类图优化pass;

注:通过这个项目,你可学习飞桨中各种图优化手段,并且可以充分学习新IR的实现、新Pass体系的实现、涉及到的各类算子的实现等。

营员要求:

  • 熟悉 C++
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验

项目九:动态图半自动并行架构研发

项目介绍:

超大模型已经成为AI最重要的核心竞争力之一,随着近两年来国内外科技公司不断投入,模型规模持续快速增长,各种并行策略和关键技术相继提出,可以看出底层平台技术已呈收敛趋势,超大模型分布式训练逐渐地从『增量』过渡到『存量』竞争。如何更灵活支持各类应用场景对复杂并行策略的需求,如何帮助用户更简单进行分布式训练,如何兼容动态图灵活调试和静态图性能优势等都是超大模型训练亟待解决的挑战。 目前飞桨正在进行动态图半自动并行架构的建设工作,旨在提供一套简洁的半自动并行标记语言,使用户只需简单地标记Tensor或Layer的切分分式,就可以混合使用多种分布式并行策略,从而实现超大规模模型的训练,概念简单,灵活易用。我们非常期待优秀的你能一起参与到新一代大模型训练架构的建设工作中,相关工作包括但不限于:

  1. 为框架运算类API添加切分推导与转换规则,使其能够在动态图半自动并行架构下运行;
  2. 添加动态图半自动并行架构必要的基础Python API;
  3. 共建动态图半自动并行架构的核心功能模块,优化代码结构、调试体验与训练性能;
  4. 一起验证DP、MP、PP、Sharding等分布式并行策略及其组合策略的效果。

营员要求:

  • 熟悉 Python
  • 熟悉 C++
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验

项目十:静态图半自动并行执行架构升级

项目介绍:

随着大模型的进一步发展和应用,对深度学习框架流水并行策略的可定制性和调度执行高效性提出了越来越高的要求。飞桨静态图半自动并行整体设计上需要大量的执行机制和调度技术协同优化、高效配合,才能有效降低大模型训练成本、提升迭代效率。但当前的执行架构对流水并行的支持仍不够完善,无法满足底层快速技术创新和工程落地的要求,在一定程度上影响了大模型业务的进一步优化和提效。

本课题选手将参与到飞桨静态图半自动并行执行架构升级项目中,承担大模型并行策略和执行调度相关的性能优化、功能补齐、机制完善、问题修复等工作,提升静态图半自动并行训练性能,降低大模型训练和迭代成本,为飞桨自动并行方向的持续建设和精细打磨添砖加瓦。

营员要求:

  • 熟悉 Python
  • 熟悉 C++
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验

项目十一:分布式能力矩阵建设

项目介绍:

为了夯实飞桨大模型分布式训练能力,需要建立一个可以客观、正确地对不同分布式训练并行策略、优化策略的性能和收敛情况进行及时监控的系统,从而为大模型训练提供更好的指导和支撑。相关工作包括:

  1. 使用飞桨支持的通用并行策略,对大模型在重点并行策略上的性能与收敛效果进行测试和验证。
  2. 完善和优化自动混合精度训练和并行策略方案,支持大模型高效训练

营员要求:

  • 熟悉 Python
  • 熟悉 C++
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验

项目十二:全自动并行架构升级

项目介绍:

大模型训练/推理的最优配置往往需要根据某些经验(模型组网、参数规模、硬件信息等)设计多组实验,对比实验结果后从中确定最优配置。该过程严重依赖人工经验,并且确定的最优配置可能非全局最优配置。当模型组网、参数规模、硬件等任一条件发生变化时,需要反复重复上述过程,如何自动地确定训练/推理最优性能配置逐渐成为深度学习框架差异化竞争的关键之一。

目前飞桨正在进行全自动并行架构升级工作,我们希望更多优秀人才能够参与全自动并行架构的探索与建设,让更多用户在大模型时代能够享受到全自动并行技术的高效与便捷,降低分布式并行使用门槛。相关工作包括但不限于:

  1. 建立准确的显存模型,能够根据模型结构和分布式并行策略预测占用的显存
  2. 建立准确的运行时间预估模型,能够根据模型结构、分布式并行策略和硬件拓扑信息预估端到端运行时间
  3. 加速搜索时间,包括但不限于压缩搜索空间、高效的搜索算法、搜索过程工程化加速等

营员要求:

  • 熟悉 Python
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验
  • 了解常见的分布式并行技术,包括数据并行、模型并行、流水线并行、序列并行、分组参数并行、梯度累加、重计算、混合精度训练等策略;掌握Transformer-like模型结构,包括GPT-3、LLaMA等

项目十三:科学计算领域拓展专项

项目介绍:

参与 Paddle 在科学计算领域的拓展和基础功能建设工作,包括以下两个方向:

  1. 领域拓展:包括流体力学、结构力学、动力学、水文学等各传统科学领域的深度学习论文复现和优化、自定义算子适配其他工具、传统求解器和Paddle框架适配与打通、分子动力学 DeePMD 的Paddle后端支持;最终目的是提升 Paddle 框架对于科学计算领域覆盖度,同时利用科学计算场景特有的计算需求,给框架提开发需求,提升框架易用能力,吸引科学计算领域用户使用。
  2. 基础功能建设:包括套件接口丰富、层次优化;符号计算支持多种方程、多种使用场景(包括多模型、复杂算符、可学习参数等)、符号计算性能优化;科学计算领域数据集建设。最终目的是提升套件的易用能力,减少用户上手难度,吸引用户使用套件和Paddle框架进行科学计算项目开发。

营员要求:

  • 熟悉 Python
  • 对深度学习有一定了解
  • 有深度学习框架应用和研发经验
  • 对基于深度学习的科学计算求解有一定的兴趣

项目十四:Clas套件全流程建设

项目介绍:

  1. ViT模型其他分辨率支持:
  • 现状:PaddleClas中的ViT类模型不支持非224的分辨率,PaddleX未来重点模型需要支持不同分辨率
  • 要求:PaddleClas中的CLIP、SwinTransformer支持非224分辨率,尽可能少地侵入PaddleClas代码
  1. 视觉大模型能力支持:
  1. 复现识别多模态大模型:

营员要求:

  • 熟悉 Python
  • 对Clas算法方向有一定了解
  • 对PaddleClas仓库有使用经验

项目十五:3D方向模型全流程建设

项目介绍:

3D方向在新增模型复现、新增推理部署链条均有大量需求,但是3D对口的同学较少,因此招募相关同学进行下述内容:

  1. 对FastBEV模型进行论文复现;
  2. 增加3D模型的部署链条;
  3. 增加3D方向的压缩链条。

营员要求:

  • 熟悉 Python
  • 熟悉 C++
  • 对3D算法方向有一定了解
  • 对Paddle3D仓库有使用经验

项目十六:Nougat复现及优化

项目介绍:

Meta最新推出的Visual Transformer模型,实现扫描PDF到MultiMarkdown的转换。无需传统OCR引擎,可以准确提取数学公式。效果实现SOTA。

paper:https://arxiv.org/abs/2308.13418

code:https://github.com/facebookresearch/nougat

复现后可对其进行模型压缩的进一步优化,提升推理效果。

营员要求:

  • 熟悉 Python
  • 对OCR算法方向有一定了解
  • 对PaddleOCR仓库有使用经验

项目十七:NLP大模型复现

项目介绍:

SGPT:58亿参数SGPT-BE在BEIR上的表现优于最佳可用句子嵌入7%,达到了SOTA的水平。该算法已经开源,需要进行前反向对齐后,基于nlp的trainer训练达到指标即可。

详细说明在:PaddlePaddle/PaddleNLP#6618

(上述复现完之后还有其他大模型方向任务)

营员要求:

  • 熟悉 Python
  • 对nlp算法方向有一定了解
  • 对PaddleNLP仓库有使用经验

项目十八:套件压缩能力建设

项目介绍:

模型压缩旨在不伤害精度的基础上增加推理速度,目前已经有模型推全计划对多个模型进行压缩,但该计划的成果依旧有局限性,需要进一步丰富。内容包括:

  1. 拓展除了量化训练之外的其他压缩能力。
  2. 排除压缩能力拓展中存在的paddleslim、预测等报错问题。提升预测/slim框架用户体验。
  3. 统一压缩文件夹格式,并撰写推理过程的自动化验证脚本,用于CI和benchmark。

营员要求:

  • 熟悉 Python
  • 对slim算法方向有一定了解
  • 对PaddleSlim仓库有使用经验
  • 对预测、压缩有了解