diff --git a/hackathon/hackathon_7th/img/image-1.png b/hackathon/hackathon_7th/img/image-1.png new file mode 100644 index 000000000..eb338bd30 Binary files /dev/null and b/hackathon/hackathon_7th/img/image-1.png differ diff --git a/hackathon/hackathon_7th/img/image-2.png b/hackathon/hackathon_7th/img/image-2.png new file mode 100644 index 000000000..a79a0532b Binary files /dev/null and b/hackathon/hackathon_7th/img/image-2.png differ diff --git "a/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221FundableProject\344\273\273\345\212\241\345\220\210\351\233\206.md" "b/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221FundableProject\344\273\273\345\212\241\345\220\210\351\233\206.md" new file mode 100644 index 000000000..60e036533 --- /dev/null +++ "b/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221FundableProject\344\273\273\345\212\241\345\220\210\351\233\206.md" @@ -0,0 +1,124 @@ +此文档展示 **PaddlePaddle Hackathon 第六期活动——Fundable Projects** 任务详细介绍。Fundable Projects 赛道定位硬核任务,要求高水平的开发者独立进行任务拆解和完成。 + +## 产出要求 + +- 任务拆解 tracking issue +- 答辩 PPT +- 书面的技术报告 +- 代码运行无误,通过社区 maintainers 的评审并合入代码仓库。 + +## 任务详情 + +### 一、Paddle Operator 算子库非通信算子退场/迁移 + +**任务背景:** + +飞桨 Paddle 自 2.0 版本以来,进行了多个重大机制改造。包括:高可复用算子库 PHI、全新的动态图体系。随着新机制的发布使用,旧机制和功能代码需要进行退场和移除,保持架构清晰和代码库的条理性,为内外部开发者提供更好的二次开发环境。这就包括了 Operators 算子库的清理。 + +**详细描述:** + +- 梳理 105 个 Operators 算子库算子,明确迁移/删除 +- 105 个算子清单如下:soft_relu,class_center_sample,feed_sparse_coo_tensor,feed_dense_tensor,feed_strings,fetch_v2,crop,crop_grad,data_norm,data_norm_grad,data_norm,data_norm_grad,anchor_generator,anchor_generator,collect_fpn_proposals,collect_fpn_proposals,generate_proposals,generate_proposals,moving_average_abs_max_scale,straight_through_estimator_grad,moving_average_abs_max_scale,straight_through_estimator_grad,resnet_basic_block,resnet_basic_block_grad,resnet_unit,resnet_unit_grad,resnet_unit,resnet_unit_grad,get_tensor_from_selected_rows,bilinear_interp,bilinear_interp_grad,nearest_interp,nearest_interp_grad,trilinear_interp,trilinear_interp_grad,linear_interp,linear_interp_grad,bicubic_interp,bicubic_interp_grad,bilinear_interp,bilinear_interp_grad,nearest_interp,nearest_interp_grad,trilinear_interp,trilinear_interp_grad,linear_interp,linear_interp_grad,bicubic_interp,bicubic_interp_grad,load_combine,load_combine,load_combine,load,load_sr,lod_reset,lod_reset_grad,lod_reset,lod_reset_grad,lookup_table,lookup_table_grad,lookup_table,lookup_table_grad,margin_cross_entropy,margin_cross_entropy_grad,matmul,matmul_grad,matmul_grad_grad,matmul,matmul_grad,memcpy_d2h,memcpy_h2d,nce,nce_grad,nearest_interp,bilinear_interp,matmul,matmul_grad,pull_box_sparse,push_box_sparse,pull_gpups_sparse,push_gpups_sparse,pull_gpups_sparse,push_gpups_sparse,push_dense,reshape,reshape_grad,row_conv,row_conv_grad,row_conv,row_conv_grad,save_combine_tensor,save_combine_vocab,save_combine_tensor,save_combine_vocab,save,save_sr,seed,seed,soft_relu,soft_relu_grad,faster_tokenizer,sync_batch_norm,sync_batch_norm_grad,sync_batch_norm_coo,sync_batch_norm_coo_grad +- 根据梳理结论,迁移/删除算子 + +**验收说明:** + +- 完成 105 个算子的迁移/删除 + +**技术要求:** + +- 熟练掌握 Python 语言 +- PIH 算子库的基本原理 +- 了解 Operator 算子库的基本原理 + +**参考资料:** + +- [飞桨 PHI 算子库介绍](https://www.paddlepaddle.org.cn/support/news?action=detail&id=2994) +- [PHI 算子库 kernel 注册全流程](https://github.com/PaddlePaddle/community/blob/master/pfcc/paddle-code-reading/PHI_kernel_registration/PHI_kernel_registration.md) +- [Kernel 选择分发体系梳理与优化](https://github.com/PaddlePaddle/community/blob/master/pfcc/paddle-code-reading/kernel_selection/20221130_kernel_selection.md) + +### 二、Paddle Operator 算子库通信算子退场/迁移 + +**任务背景:** + +飞桨 Paddle 自 2.0 版本以来,进行了多个重大机制改造。包括:高可复用算子库 PHI、全新的动态图体系。随着新机制的发布使用,旧机制和功能代码需要进行退场和移除,保持架构清晰和代码库的条理性,为内外部开发者提供更好的二次开发环境。这就包括了 Operators 算子库的清理。 + +**详细描述:** + +- 梳理 115 个 Operators 算子库算子,明确迁移/删除 +- 115 个算子清单如下:alltoall,alltoall,barrier,barrier,c_allgather,c_allgather,c_allgather,c_allreduce_avg,c_allreduce_max,c_allreduce_max,c_allreduce_max,c_allreduce_min,c_allreduce_min,c_allreduce_min,c_allreduce_prod,c_allreduce_prod,c_allreduce_prod,c_allreduce_sum,c_allreduce_sum,c_allreduce_sum,c_broadcast,c_broadcast,c_broadcast,c_comm_init_all,c_comm_init_all,c_concat,c_concat,c_concat,c_reduce_avg,c_reduce_max,c_reduce_max,c_reduce_max,c_reduce_min,c_reduce_min,c_reduce_min,c_reduce_prod,c_reduce_prod,c_reduce_prod,c_reduce_sum,c_reduce_sum,c_reduce_sum,c_reducescatter,c_reducescatter,c_scatter,c_scatter,c_softmax_with_cross_entropy,c_softmax_with_cross_entropy,c_softmax_with_cross_entropy_grad,c_softmax_with_cross_entropy,c_softmax_with_cross_entropy_grad,c_sync_calc_stream,c_sync_calc_stream,c_sync_comm_stream,c_sync_comm_stream,global_gather,global_gather,global_scatter,global_scatter,mp_allreduce_sum,mp_allreduce_sum,mp_allreduce_sum,partial_allgather,partial_allgather,partial_recv,partial_recv,partial_send,partial_send,recv_v2,recv_v2,send_v2,send_v2,save_combine,load_combine,c_concat,c_split,c_embedding,c_embedding_grad,c_softmax_with_cross_entropy,c_softmax_with_cross_entropy_grad,c_identity,c_sync_calc_stream,c_allreduce_sum,mp_allreduce_sum,c_allreduce_min,c_allreduce_max,c_allreduce_prod,c_broadcast,barrier,number_count,limit_by_capacity,prune_gate_by_capacity,random_routing,assign_pos,global_scatter,global_gather,fused_attention,fused_attention_grad,fused_feedforward,fused_feedforward_grad,fused_multi_transformer_int8,fused_multi_transformer,ncclAllReduce,ncclBcast,ncclReduce,distributed_fused_lamb,distributed_fused_lamb,distributed_lookup_table,distributed_lookup_table,distributed_push_sparse,distributed_push_sparse,send_and_recv,pull_sparse,push_sparse,pull_sparse_v2,push_sparse_v2 +- 根据梳理结论,迁移/删除算子 + +**验收说明:** + +- 完成 115 个算子的迁移/删除 + +**技术要求:** + +- 熟练掌握 Python 语言 +- PIH 算子库的基本原理 +- 了解 Operator 算子库的基本原理 +- 了解通信算子的基本原理 + +**参考资料:** + +- [飞桨 PHI 算子库介绍](https://www.paddlepaddle.org.cn/support/news?action=detail&id=2994) +- [PHI 算子库 kernel 注册全流程](https://github.com/PaddlePaddle/community/blob/master/pfcc/paddle-code-reading/PHI_kernel_registration/PHI_kernel_registration.md) +- [Kernel 选择分发体系梳理与优化](https://github.com/PaddlePaddle/community/blob/master/pfcc/paddle-code-reading/kernel_selection/20221130_kernel_selection.md) + +### 三、x2paddle 套件能力建设 + +**任务背景**: + +X2Paddle 是飞桨生态下的模型转换工具,致力于帮助其它深度学习框架(Caffe/TensorFlow/ONNX/PyTorch)用户快速迁移至飞桨框架。由于近期 Paddle 新版本的升级存在不兼容部分(如 `paddle.fluid` API 全面退场,0-d tensor,view 行为修改等),需要重新对 X2Paddle 进行适配开发与回归测试,保证模型转换工具的正常运转,转换后模型的功能与精度不受损失。同时,近期大模型领域有新的热门模型发布,需要添加此类模型的转换策略,保证模型转换工具的丰富度和领先性。 + +**详细描述:** + +1. 基于 Paddle 3.0.0-beta 版本对 X2Paddle 进行适配升级,梳理已有堵点并解决。保证 [test_benchmark](https://github.com/PaddlePaddle/X2Paddle/tree/develop/test_benchmark) 目录下已适配的 100+ 模型在 新 Paddle 版本 & 新其他深度学习框架版本下的正常运转。(当时适配版本见[这里](https://github.com/PaddlePaddle/X2Paddle?tab=readme-ov-file#环境依赖)) +2. 基于 Paddle 3.0.0-beta 版本,新增 1-2 个大语言模型的转换策略。 + +**验收说明:** + +1. X2Paddle 基于 Paddle 3.0.0-beta 版本,完成 100+ 原有模型的适配。 +2. X2Paddle 基于 Paddle 3.0.0-beta 版本,新增 1-2 个大语言模型的转换策略。 + +**技术要求:** + +- 熟悉 Python,工程能力强 +- 对深度学习有一定了解,有深度学习框架应用和研发经验(加分项) +- 有大模型相关经验(加分项) + +**参考资料:** https://github.com/PaddlePaddle/X2Paddle + +### 四、前沿扩散模型飞桨复现 + +**任务背景:** + +FLUX.1 是由 Black Forest Labs 推出的 AI 图像生成模型,拥有 12B 参数,是迄今为止最大的开源文生图模型,目前该团队推出了三款模型变体,分别是快速版-FLUX.1[schnell]、开发版-FLUX.1[dev]和专业版 FLUX.1[pro]。PPDiffusers 是 PaddleMIX 下一款支持多种模态(如文本图像跨模态、图像、语音)扩散模型(Diffusion Model)训练和推理的国产化工具箱,依托于 PaddlePaddle 框架和 PaddleNLP 自然语言处理开发库,目前我们已经完成了套件的训练、推理、应用等基础能力建设,但跨模态文图领域发展迅速,需要从模型、训练、推理等方面不断地跟进与丰富。 + +**详细描述:** + +参考 Diffusers 及 flux 原库完成模型复现、推理 pipeline 复现、模型转换等、lora 训练等,具体包括 + +- flux.1 基础模型复现,包含其依赖的相关基础组件 +- fulx.1 推理 pipeline 构建,包含 FluxPipeline 及 FluxControlNetPipeline +- 提供相关的 paddle 模型权重 +- 支持并对齐 flux 的 dreambooth lora 训练 + +**验收说明:** + +- 相关 PR 合入 PaddleMIX/PPDiffusers +- 产出精度对齐数据 +- 提供单侧代码,在本地及 CI 测试通过 + +**技术要求:** + +- 熟练掌握 Python 语言 +- 熟练使用 PyTorch/Paddle 框架 API +- 熟悉扩散模型原理 + +**参考资料:** + +- https://github.com/black-forest-labs/flux + +- https://github.com/huggingface/diffusers/tree/main/src/diffusers/pipelines/flux diff --git "a/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221\344\270\252\344\272\272\346\214\221\346\210\230\350\265\233\342\200\224\345\245\227\344\273\266\345\274\200\345\217\221\344\273\273\345\212\241\345\220\210\351\233\206.md" "b/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221\344\270\252\344\272\272\346\214\221\346\210\230\350\265\233\342\200\224\345\245\227\344\273\266\345\274\200\345\217\221\344\273\273\345\212\241\345\220\210\351\233\206.md" new file mode 100644 index 000000000..517033934 --- /dev/null +++ "b/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221\344\270\252\344\272\272\346\214\221\346\210\230\350\265\233\342\200\224\345\245\227\344\273\266\345\274\200\345\217\221\344\273\273\345\212\241\345\220\210\351\233\206.md" @@ -0,0 +1,281 @@ +此文档展示 **PaddlePaddle Hackathon 第七期活动——开源贡献个人挑战赛套件开发方向任务** 详细介绍 + +## 【开源贡献个人挑战赛-套件开发】任务详情 + +### NO.43 完善 TokenizerFast 功能支持 + +背景:当前 PaddleNLP 已经支持 TokenizerFast 基础实现,但当前大部分模型不包含 tokenizer_fast 实现,因此无法享受到 TokenizerFast 带来的性能提升。 + +**详细任务说明:** + +- 实现 bert、bloom、chatglm、ernie、gemma、gpt、qwen、qwen2 对应的 toekizer_fast.py 文件,并验证 tokenzier 正确性 +- 验证 tokenzier 和 toekizer_fast 区别并给出详细报告说明,数据集需包含大规模多语数据集。 +- 为 tokenizer_fast 和 tokenzier 对齐编写不少于 15 个 cases 的单测样例。提交内容:设计文档:提至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/PaddleNLP 目录提交到 PaddleNLP 对应模型文件夹下,此处以 llama 举例,https://github.com/PaddlePaddle/PaddleNLP/tree/develop/paddlenlp/transformers/llama + +**提交内容:** + +- 设计文档:提至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/PaddleNLP 目录 +- 提交到 PaddleNLP 对应模型文件夹下,如 llama 示例 https://github.com/PaddlePaddle/PaddleNLP/tree/develop/paddlenlp/transformers/llama + +--- + +### NO.44 大模型 4D 并行框架全自动构建 + +背景:当前大模型并行结构不断创新,随着模型结构增多,改造历史模型结构成本不断加重,因此亟需自动化框架构建工具辅助分布式组网结构修改。 + +**详细任务说明:** + +- 统计分析当前模型库中不同模型结构所属类别,构造异同结构数据表单。例如: + + (1)llama 使用的 attention 支持普通 Attention 和 GQA,同时 Qwen2 也支持普通 Attention 和 GQA,但是 Qwen 仅支持普通 Attention。 + + (2)模型结构支持能力不同,如 llama 支持模型并行及序列并行,但 chatglm 未支持模型并行。 + + (3)如增加模型并行,需在 MLP 和 Attention 等位置添加权重并行代码,需统计支持并行能力和代码修改位置。(完成并提交文档即得到 ⭐️) + +- 参考 Qwen2 模型结构,设计分布式结构接入流程文档,文档需支持模型并行(含序列并行)和流水线并行新增方案。(建议在方案中详细设计 XX 并行方式的修改范围) + +- 基于上述统计信息和接入文档,可通过 gradio 方式实现 Qwen2 模型结构快速构建,功能点支持: + + - 模型并行支持 + - 序列并行支持 + - 流水线并行支持 + - GQA、MHA 支持 + - flashattention 支持 + - RMSNorm 支持 + - ROPE 支持 + +- 输出后模型可在 PaddleNLP 中运行(from_pretrain 加载并运行)通过即完成。(提交 PR 得到 ⭐️,输出代码可直接运行或仅存在少量问题得到 ⭐️⭐️。 ) + +**提交内容:** + +- 设计文档:提至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/PaddleNLP 目录 +- 统计分析内容提交至https://github.com/PaddlePaddle/PaddleNLP/tree/develop/docs/llm 。 +- 大模型 4D 并行框架构建工具提交至https://github.com/PaddlePaddle/PaddleNLP/tree/develop/legacy/examples 。 + +--- + +### NO.45 添加 FunctionCall 功能 + +背景:FunctionCall 指大模型能够判断应该调用哪个 Function(API、Method)以及对应的参数。因此极大程度上提升了大模型在特定领域上的知识能力,弥补大模型能力上的不足。 + +**详细任务说明:** + +- 参考 qwen function_call finetune:[function_call_finetune_examples.py](qwen 有 function_call 的 finetune 训练:https://github.com/QwenLM/Qwen/blob/main/examples/function_call_finetune_examples.py) 和 chatglm3 function_call finetune:[finetune_chatmodel_demo](https://github.com/THUDM/ChatGLM3/tree/main/finetune_chatmodel_demo) 实现 FunctionCall 功能,兼容 PaddleNLP 3.0 框架。 +- 对齐 chatglm 和 qwen +- 支持模型训练和动/静推理能力。 +- 参考 PR: https://github.com/PaddlePaddle/PaddleNLP/pull/7908 + +**提交内容:** + +- 设计文档:提至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/PaddleNLP 目录 +- 新增 PR 并合入 PaddleNLP https://github.com/PaddlePaddle/PaddleNLP + +--- + +### NO.46 Paddle2ONNX 添加对返回常量的 IfElse 算子的支持 + +**任务说明:** + +Paddle2ONNX 目前已经支持了多图情况下的 IfElse 算子,但是对于简单返回常量的 IfElse 算子没有做支持。参赛者需要针对返回常量情况下的 IfElse 算子进行支持。动态图模型可以参考以下代码: + +```python +class BaseNet3(paddle.nn.Layer): + def __init__(self): + super(BaseNet3, self).__init__() + + def forward(self, inputs): + if inputs == 1: + return 1 + else: + return 2 +``` + +其动态图可视化后如下图所示: + +![img](img/image-1.png) + +**参考链接:** + +- [conditional_block 实现手段](https://github.com/PaddlePaddle/Paddle2ONNX/blob/develop/paddle2onnx/mapper/exporter.cc#L331) +- [select_input 实现手段](https://github.com/PaddlePaddle/Paddle2ONNX/blob/develop/paddle2onnx/mapper/exporter.cc#L340) + +--- + +### NO.47 Paddle2ONNX 添加对 While 算子的支持 + +**任务说明:** + +为了移植 IfElse,Paddle2ONNX 暂时删除掉了对 while 的支持。开发者需要基于现有的架构移植 while 算子,并保证正确地转换 PaddleOCRV3 模型。 + +**参考链接:** + +- [conditional_block 实现手段](https://github.com/PaddlePaddle/Paddle2ONNX/blob/develop/paddle2onnx/mapper/exporter.cc#L331) +- [select_input 实现手段](https://github.com/PaddlePaddle/Paddle2ONNX/blob/develop/paddle2onnx/mapper/exporter.cc#L340) +- [旧 while 算子实现手段](https://github.com/PaddlePaddle/Paddle2ONNX/blob/develop/paddle2onnx/mapper/loop.cc) + +--- + +### NO.48 Paddle2ONNX 添加对 Windows 平台自动发包机制的支持 + +**任务说明:** + +Paddle2ONNX 已经添加了 Linux 的发包支持,但是 Windows 平台仍然没有添加支持。这导致一部分用户没有办法体验到最新的 Paddle2ONNX,我们希望开发者能够添加对 Windows 平台自动发包机制的支持。 + +**参考链接:** + +- [Paddle2ONNX 编译办法讨论](https://github.com/PaddlePaddle/Paddle2ONNX/issues/1204) +- [添加对 Linux Aarch64 自动发包机制的支持](https://github.com/PaddlePaddle/Paddle2ONNX/pull/1283) + +--- + +### NO.49 PaddleX 重要模型的量化能力验证和优化 + +背景:量化训练是模型压缩的重要手段,也是各套件的重要功能。但是量化参数对模型精度影响很大,因此需要对每个模型进行实验调优,补齐各套件的在线量化功能,并支持重点模型的量化训练配置。 + +**详细任务说明:** + +- 参考以下的 PR 内容,补齐各套件的在线量化功能,并支持所列模型的 Int8 量化功能,量化精度损失需在可控范围内 +- 参考 PR: + - https://github.com/PaddlePaddle/PaddleClas/pull/2972 + - https://github.com/PaddlePaddle/PaddleDetection/pull/8627 + - https://github.com/PaddlePaddle/PaddleOCR/pull/11345 + - https://github.com/PaddlePaddle/PaddleSeg/pull/3457 +- 模型列表: + +提交内容: + +- 设计文档:提至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/PaddleX 目录 +- 向对应套件提交 PR: + - https://github.com/PaddlePaddle/PaddleClas + - https://github.com/PaddlePaddle/PaddleDetection + - https://github.com/PaddlePaddle/PaddleOCR + - [https://github.com/PaddlePaddle/PaddleSeg](https://github.com/PaddlePaddle/PaddleSeg/) + +本题筛选机制:请先提交简历到 ext_paddle_oss@baidu.com,并参加一轮面试,确保开发者能力与任务难度匹配。 + +--- + +### NO.50 PaddleX 重要模型 Android Demo 支持 + +背景:PaddleX 提供依托 Paddle-Lite 的模型端侧部署能力。然而,PaddleX 当前提供的 shell 推理示例无法直观地展示模型效果,也不便于开发者学习如何在 Android 应用中集成和使用 PaddleX 模型。因此,为 PaddleX 的重要模型开发 Android demo,对于 PaddleX 端侧部署功能建设至关重要。 + +**详细任务说明:** + +- 开发 Android 应用(原生应用、Web 应用或混合应用均可),在一个应用中支持如下所有任务: + - 图像分类。可参考:https://github.com/PaddlePaddle/Paddle-Lite-Demo/tree/feature/paddle-x/image_classification。参考项目中,`android/shell`对应命令行调用示例,`android/app`对应示例Android应用,后同。 + - 目标检测。可参考:https://github.com/PaddlePaddle/Paddle-Lite-Demo/tree/feature/paddle-x/object_detection。 + - OCR。可参考:https://github.com/PaddlePaddle/Paddle-Lite-Demo/tree/feature/paddle-x/ocr。 + - 图像分割。可参考:https://github.com/PaddlePaddle/Paddle-Lite-Demo/tree/feature/paddle-x/semantic_segmentation。 +- Android 应用需支持用户通过图形界面灵活地选择模型、输入数据和推理参数。 +- 对于每个任务,需保证应用至少能够针对各参考项目的命令行调用示例支持的所有示例模型取得预期的效果。 + +提交内容: + +- 设计文档:提至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/PaddleX 目录 +- 完整的项目代码。 +- 用户使用文档以及开发指南。其中:用户使用文档介绍应用界面布局与各功能使用方式;开发指南介绍项目代码结构、设计思路、以及如何进行二次开发。 + +本题筛选机制:请先提交简历到 ext_paddle_oss@baidu.com,并参加一轮面试,确保开发者能力与任务难度匹配。 + +--- + +### NO.51 在 PaddleOCR 中复现 MixTeX 模型 + +**详细描述:** + +MixTeX 是一款创新的多模态 LaTeX 识别模型,能够在本地离线环境中进行高效的 CPU 推理。本任务的目标是在 PaddleOCR 中复现 MixTex。 + +1. **论文地址**:https://arxiv.org/abs/2406.17148 +2. **源代码地址**:https://github.com/RQLuo/MixTeX-Latex-OCR +3. **数据集地址**:https://huggingface.co/datasets/MixTex/Pseudo-Latex-ZhEn-1 + +**提交内容:** + +1. **设计文档**:提至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/PaddleOCR 目录 +2. **Python 实现代码**:复现代码需要提交并合入 PaddleOCR 仓库,复现格式可参考 [https://github.com/PaddlePaddle/PaddleOCR/pull/13401/](https://github.com/PaddlePaddle/PaddleOCR/pull/13401/。) +3. **中英文文档**:中英文文档应包含在 https://github.com/PaddlePaddle/PaddleOCR/tree/main/docs/algorithm/formula_recognition 目录中,提交至 PaddleOCR 仓库。 +4. **性能指标**:复现的性能指标需要与原始仓库效果相当,并在提交的文档中给出 Edit distance(Edit Dis.)、BLEU score、Precision、Recall 具体值。 + +**技术要求:** + +- 了解 MixText 模型 +- 熟练掌握 Python 语言 +- 熟悉 PaddleOCR 框架及其数据处理流程 + +--- + +### NO.52 论文复现:OmniParser + +**详细描述:** + +- 论文:[OmniParser: A Unified Framework for Text Spotting, Key Information Extraction and Table Recognition](https://openaccess.thecvf.com/content/CVPR2024/papers/Wan_OmniParser_A_Unified_Framework_for_Text_Spotting_Key_Information_Extraction_CVPR_2024_paper.pdf) +- 参考 repo:https://github.com/AlibabaResearch/AdvancedLiterateMachinery/tree/main/OCR/OmniParser + +**验收标准**: + +- 基于论文中开源的数据集训练,达到论文中 Table 2 中的各项指标。 + +**提交内容**: + +- 设计文档:提至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/PaddleOCR 目录 +- 代码、模型、训练日志 +- 提交代码和中英文文档 PR 到 PaddleOCR,参考 https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/doc/doc_ch/algorithm_overview.md + +**技术要求**: + +- 熟悉 OCR 领域相关算法,最好有 PaddleOCR 使用经验。 +- 有基本的模型训练和 debug 能力。 + +--- + +### NO.53 在 PaddleOCR 中复现 TrOCR-Formula-Rec 模型 + +**详细描述** + +[TrOCR-Formula-Rec](https://github.com/SWHL/TrOCR-Formula-Rec) 是一个基于 TrOCR 算法、整合[UniMER-1M](https://huggingface.co/datasets/wanderkid/UniMER_Dataset) & [fusion-image-to-latex-datasets](https://huggingface.co/datasets/hoang-quoc-trung/fusion-image-to-latex-datasets) 等公式识别数据集的公式识别项目,该模型可以在本地离线环境中进行高效的 CPU 推理。本任务的目标是在 PaddleOCR 中复现 TrOCR-Formula-Rec 模型。 + +相关资料: + +- 基于 transformers 库版本项目地址:[TrOCR-Formula-Rec](https://github.com/SWHL/TrOCR-Formula-Rec) +- 数据集地址:[UniMER-1M](https://huggingface.co/datasets/wanderkid/UniMER_Dataset)、[fusion-image-to-latex-datasets](https://huggingface.co/datasets/hoang-quoc-trung/fusion-image-to-latex-datasets) +- UniMERNet 论文地址:[PDF](https://arxiv.org/abs/2404.15254) + +**提交内容** + +- 设计文档:提至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/PaddleOCR 目录 +- Python 实现内容:复现代码需要提交并合入 PaddleOCR 仓库,复现格式可参考:[PR #13401 LaTeX OCR Paddle](https://github.com/PaddlePaddle/PaddleOCR/pull/13401/) +- 中英文文档:文档应包含在 [Formula Recognition Docs](https://github.com/PaddlePaddle/PaddleOCR/tree/main/docs/algorithm/formula_recognition) 目录中,提交至 PaddleOCR 仓库 +- 性能指标:复现的性能指标需要与原始仓库效果相当,并在提交的文档中给出 [UniMERNet](https://github.com/opendatalab/UniMERNet) 论文中给出的 SPE-BLEU、SPE-EditDis、CPE-BLEU、CPE-EditDis、SCE-BLEU、SCE-EditDis、HWE-BLEU 和 HWE-EditDis 指标值。模型存储大小<300M,CPU 推理平均耗时 1s 左右。 + +![img](img/image-2.png) + +**技术要求** + +- 了解 TrOCR 模型 +- 熟练掌握 Python、paddlepaddle 框架、PyTorch 框架 +- 熟悉 transformers 相关结构 + +--- + +### NO.54 在 PaddleSpeech 中实现 Whisper 的 Finetune + +**详细描述:** + +- 相关论文:https://arxiv.org/pdf/2212.04356 +- 参考:https://huggingface.co/blog/fine-tune-whisper +- 数据:https://huggingface.co/datasets/mozilla-foundation/common_voice_11_0 +- 尽量复用已有推理代码:paddlespeech/s2t/models/whisper/whipser.py + +**验收标准**: + +- 复现的性能指标需要与原始仓库效果相当 +- 需上传完整的训练代码和训练脚本 +- 训练后的模型支持 command line 方式推理 +- 支持原生 whisper large v3 通过 command line 方式推理 + +**技术要求:** + +- 了解 Whisper 模型 +- 熟练掌握 Python 语言 +- 熟悉 PaddleSpeech 框架及其数据处理流程 diff --git "a/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221\344\270\252\344\272\272\346\214\221\346\210\230\350\265\233\342\200\224\346\241\206\346\236\266\345\274\200\345\217\221\344\273\273\345\212\241\345\220\210\351\233\206.md" "b/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221\344\270\252\344\272\272\346\214\221\346\210\230\350\265\233\342\200\224\346\241\206\346\236\266\345\274\200\345\217\221\344\273\273\345\212\241\345\220\210\351\233\206.md" new file mode 100644 index 000000000..c2dd4a657 --- /dev/null +++ "b/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221\344\270\252\344\272\272\346\214\221\346\210\230\350\265\233\342\200\224\346\241\206\346\236\266\345\274\200\345\217\221\344\273\273\345\212\241\345\220\210\351\233\206.md" @@ -0,0 +1,563 @@ +此文档展示 **PaddlePaddle Hackathon 第七期活动——开源贡献个人挑战赛框架开发方向任务** 详细介绍 + +## 【开源贡献个人挑战赛-API 开发】任务详情 + +注:为飞桨框架新增一系列 API,提交流程请参考 [新增 API 开发&提交流程](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/api_contributing_guides/api_contributing_guides_cn.html),开发请参考 [贡献指南](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/index_cn.html),任务列表如下,其他说明事项: + +- 合入标准 + - 按 [API 设计规范](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/api_contributing_guides/api_design_guidelines_standard_cn.html) 完成 API 设计文档;需要在设计文档中说明支持哪些数据类型(默认都要支持 fp16/bf16/complex64/complex128),对不支持的要给出理由 + - 按 [API 验收标准](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/api_contributing_guides/api_accpetance_criteria_cn.html) 完成 API 功能实现、单测、API 文档; + - 按 [API 映射关系-格式规范](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/pytorch_api_mapping_format_cn.md) 完成 **_API 映射关系文档_** 的编写,文件统一提交到 [convert_from_pytorch/api_difference](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/) 中相应目录,需详细描述与竞品(Pytorch)的差异之处,对差异之处需要在 **_API 设计文档_** 中阐述理由; +- 参考内容 + - [新增 API 开发&提交流程](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/api_contributing_guides/api_contributing_guides_cn.html) + - [新增 API 设计模板](https://github.com/PaddlePaddle/community/blob/master/rfcs/APIs/api_design_template.md) + - [飞桨 API Python 端开发指南](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/api_contributing_guides/new_python_api_cn.html) + - [C++ 算子开发指南](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/api_contributing_guides/new_cpp_op_cn.html) + - [飞桨 API 文档书写规范](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/api_contributing_guides/api_docs_guidelines_cn.html) + - [API 映射关系-格式规范](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/pytorch_api_mapping_format_cn.md) + - [API 单测开发及验收规范](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/api_contributing_guides/api_accpetance_criteria_cn.html) + - 复数数据类型相关资料: + - [On the Computation of Complex-valued Gradients with Application to Statistically Optimum Beamforming](https://arxiv.org/abs/1701.00392) + - [复数梯度推导计算](https://github.com/PaddlePaddle/community/tree/master/pfcc/paddle-code-reading/complex_autograd) + - [paddlepaddle 支持复数任务](https://github.com/PaddlePaddle/Paddle/issues/61975) + +--- + +### NO.18 为稀疏计算添加复数支持 + +**详细描述:** + +为提高框架对复数的支持能力,对以下的稀疏计算添加复数支持:add_coo_coo/add_coo_dense/add_csr_csr/subtract_coo_coo/subtract_csr_csr /multiply_coo_coo/multiply_csr_csr/divide_coo_coo/divide_csr_csr + +**提交内容:** + +- 在 op 对应的前向以及反向 kernel 增加复数运算逻辑,且注册相应的 complex64, complex128 数据类型。 +- 在对应 op 的单测中增加复数类型 +- 在对应 api 的类型校验中增加复数 + +**技术要求:** + +- 熟悉 Python、C++,CUDA; +- 了解 Paddle 算子开发流程; +- 了解稀疏矩阵的表示方式; + +**参考资料:** + +- https://github.com/PaddlePaddle/Paddle/issues/61975 + +### NO.19 为 Paddle 新增 load_state_dict_from_url API + +**详细描述:** + +从给定 URL 加载 Paddle 序列化对象。如果下载的文件是 zip 文件,它将自动解压缩。如果对象已存在于 model_dir 中,则将其反序列化并返回。此任务的目标是在 Paddle 框架中,新增 load_state_dict_from_url API,调用路径为:paddle.hub.load_state_dict_from_url 。 + +**提交内容:** + +- API 的设计文档,并提 PR 至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/APIs 目录 +- Python 实现代码 & 英文 API 文档,在 Paddle repo 的 [python/paddle/hapi/hub.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/hapi/hub.py) 文件 +- 中文 API 文档,在 docs repo 的 [docs/api/paddle/hub](https://github.com/PaddlePaddle/docs/tree/develop/docs/api/paddle/hub) 目录 +- API 映射文档:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的映射关系文件,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 了解 Paddle 算子开发流程 +- 熟练掌握 Python + +### NO.20 为 Paddle 新增 Tensor.set\_ / Tensor.resize\_ API + +**详细描述:** + +设置 Tensor shape 和 stride。source 设置的张量将与源张量共享相同的存储空间,并可以设置为相同或不同的 shape 和 stride。张量的共享可以参考 paddle 已有 api *share_buffer_to。paddle.Tensor.resize*可以通过 Tensor.set*view/reshape*/set*来组合实现。此任务的目标是在 Paddle 框架中,新增 set* 和 resize* API,调用路径为:paddle.Tensor.set* / paddle.Tensor.resize\_ 。 + +**提交内容:** + +- API 的设计文档,并提 PR 至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/APIs 目录 +- Python 实现代码 & 英文 API 文档,在 Paddle repo 的 python/paddle/tensor/creation.py 文件 +- 中文 API 文档,在 docs repo 的 docs/api/paddle/Tensor 目录 +- API 映射文档:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系文件,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 了解 Paddle 算子开发流程 +- 熟练掌握 Python、C++ + +### NO.21 为 Paddle 新增 reset_peak_memory_stats/reset_max_memory_allocated/memory_stats API + +**详细描述:** + +- 在 paddle.device.cuda 包中,增加对 CUDA 张量类型的以下三个支持:重置 CUDA 内存分配器跟踪的“峰值”统计信息,在 paddle 框架中新增 reset_peak_memory_stats API,调用路径为 paddle.device.cuda.reset_peak_memory_stats; +- 重置跟踪给定设备上张量占用的最大 GPU 内存的起点,在 paddle 框架中新增 reset_max_memory_allocated API,调用路径为 paddle.device.cuda.reset_max_memory_allocated; +- 返回给定设备的 CUDA 内存分配器统计信息字典,在 paddle 框架中新增 memory_stats API,调用路径为 paddle.device.cuda.memory_stats。 + +**提交内容:** + +- API 的设计文档,并提 PR 至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/APIs 目录 +- Python 实现代码 & 英文 API 文档,在 Paddle repo 的 [python/paddle/device/cuda/\_\_init\_\_.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/device/cuda/__init__.py) 文件 +- C++ /CUDA 实现代码,在 Paddle repo 的 [paddle/phi/core/memory](https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/phi/core/memory) 目录 +- 单测代码,在 Paddle repo 的 [test/cpp/fluid/memory](https://github.com/PaddlePaddle/Paddle/tree/develop/test/cpp/fluid/memory) 目录 +- 中文 API 文档,在 docs repo 的 [docs/api/paddle/device/cuda](https://github.com/PaddlePaddle/docs/tree/develop/docs/api/paddle/device/cuda) 目录 +- API 映射文档:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的映射关系文件,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟悉 CUDA 内存分配 +- 熟练掌握 C++, CUDA, Python + +### NO.22 在 paddle.audio.functional.get_window 中支持 bartlett 、 kaiser 和 nuttall 窗函数 + +**详细描述:** + +当前 paddle.audio.functional.get_window 中已支持 hamming,hann,blackman 等窗函数,需扩充支持 bartlett 、 kaiser 和 nuttall 窗函数 + +**提交内容:** + +- API 的设计文档,并提 PR 至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/APIs 目录 +- Python 实现代码 & 英文 API 文档,在 Paddle repo 的 [python/paddle/audio/functional/window.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/audio/functional/window.py) 文件 +- 单测代码,在 Paddle repo 的 [test/legacy_test/test_audio_functions.py](https://github.com/PaddlePaddle/Paddle/blob/develop/test/legacy_test/test_audio_functions.py) 文件中添加 +- 中文 API 文档,在 docs repo 的 [docs/api/paddle/audio/functional/get_window_cn.rst](https://github.com/PaddlePaddle/docs/tree/develop/docs/api/paddle/audio/functional/get_window_cn.rst) 中补充新的窗函数用法,并扩充示例代码 +- API 映射文档:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的映射关系文件,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟悉窗函数的作用和原理 +- 熟练掌握 Python + +### NO.23 为 Paddle 新增 ParameterDict API + +**详细描述:** + +paddle.nn.ParameterDict 提供参数字典容器。此容器的行为类似于 Python 字典,但它包含的参数将被正确地注册和添加。使用方式为: + +```python +import paddle +import paddle.nn as nn + +class MyLayer(nn.Layer): + def __init__(self): + super().__init__() + self.params = nn.ParameterDict({ + 'p1': nn.Parameter(paddle.create_parameter(shape=[2, 2], dtype='float32')), + 'p2': nn.Parameter + +(paddle.create_parameter(shape=[2, 2], dtype='float32')) + }) + + def forward(self, x, px): # px can use 'p1' or 'p2' + x = self.params[px].add(x) + return x +``` + +**提交内容:** + +- API 的设计文档,并提 PR 至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/APIs 目录 +- Python 实现代码 & 英文 API 文档,在 Paddle repo 的 [python/paddle/nn/layer/container.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/nn/layer/container.py)文件 +- 单测代码,在 Paddle repo 的 [test/legacy_test/](https://github.com/PaddlePaddle/Paddle/blob/develop/test/legacy_test/) 目录 +- 中文 API 文档,在 docs repo 的 [docs/api/paddle/nn](https://github.com/PaddlePaddle/docs/tree/develop/docs/api/paddle/nn) 目录 +- API 映射文档:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的映射关系文件,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟悉 Python +- 了解 paddle.nn.Layer 中参数的组织方式 + +**参考资料:** + +- [ParameterList](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/ParameterList_cn.html#parameterlist) + +### NO.24 为 Paddle 新增 EmbeddingBag API + +**详细描述:** + +EmbeddingBag 是 [Embedding](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/Embedding_cn.html#embedding) 的拓展,在功能上相当于 Embedding + 求和/求均值/求最大值的操作,相比直接组合,EmbeddingBag 会有更高的计算效率和更小的内存消耗。此任务的目标是在 Paddle 框架中,新增 EmbeddingBag 和 embedding_bag API,调用路径为:paddle.nn.EmbeddingBag 和 paddle.nn.functional.embedding_bag。可以在之前开发者[未开发完的 PR](https://github.com/PaddlePaddle/Paddle/pull/49000)基础上进行开发。 + +**提交内容:** + +- API 的设计文档,并提 PR 至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/APIs 目录 +- Python 实现代码 & 英文 API 文档,在 Paddle repo 的 [python/paddle/nn/layer/common.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/nn/layer/common.py) 文件 和 [python/paddle/nn/functional/input.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/nn/functional/input.py) 文件 +- C++ /CUDA 实现代码,在 Paddle repo 的 [paddle/phi/kernels](https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/phi/kernels) 目录 +- 单测代码,在 Paddle repo 的[ python/paddle/test/legacy_test](https://github.com/PaddlePaddle/Paddle/tree/develop/test/legacy_test) 目录 +- 中文 API 文档,在 docs repo 的 [docs/api/paddle/nn](https://github.com/PaddlePaddle/docs/tree/develop/docs/api/paddle/nn) 目录和 [docs/api/paddle/nn/functional/](https://github.com/PaddlePaddle/docs/tree/develop/docs/api/paddle/nn/functional) +- API 映射文档:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系文件,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟悉 EmbeddingBag 算法原理和适用场景 +- 熟悉 Paddle 动静态图下数学计算过程 +- 熟练掌握 C++, CUDA, Python + +### NO.25 为 Paddle 新增 is_coalesced/sparse_dim/dense_dim API + +**详细描述:** + +Paddle Tensor 可以存储在连续内存中,以便快速访问,实现高效算法。但一些用户可能使用张量来表示数据,例如图邻接矩阵、修剪权重或点云,这些张量的元素大多数为零值,即稀疏张量。Paddle Tensor 也需支持稀疏存储格式,如 COO、CSR、CSC 等。is_coalesced/sparse_dim/dense_dim 即用于稀疏 Tensor 的一组方法。 + +- Tensor.is_coalesced:如果 Tensor 是一个已合并的稀疏张量,则返回 True,否则返回 False +- Tensor.sparse_dim:返回稀疏张量中稀疏维度的数量 +- Tensor.dense_dim:返回稀疏张量中密集维度的数量 + +**提交内容:** + +- API 的设计文档,并提 PR 至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/APIs 目录 +- Python 实现代码 & 英文 API 文档,在 Paddle repo 的 python/paddle/tensor/sparse.py 文件 +- 并在 python/paddle/tensor/\_\_init\_\_.py 中,添加 is_coalesced/sparse_dim/dense_dim API,以支持 Tensor.is_coalesced/sparse_dim/dense_dim 的调用方式 +- 单测代码,在 Paddle repo 的 [test/](https://github.com/PaddlePaddle/Paddle/tree/develop/test)目录 +- 中文 API 文档,在 docs repo 的[docs/api/paddle](https://github.com/PaddlePaddle/docs/tree/develop/docs/api/paddle)目录 +- API 映射文档:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系 文件,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟悉稠密 Tensor/稀疏 Tensor/非连续内存等 +- 熟练掌握 Python + +### NO.26 为 Paddle 新增 lu_solve API + +**详细描述:** + +使用 LU 分解 来求解线性方程组 AX=B,A 为 1 个或多个矩阵,A.shape=[m, n] or [batch, m, n],B.shape=[m, k] or [batch, m, k],A 和 B 已知,通过 LU 分解方阵 A 来加速求解 X。需要满足 LU, pivots, info = paddle.linalg.lu(A); X = paddle.linalg.lu_solve(B, LU, pivots) 与 使用 X = paddle.linalg.solve(A, B) 直接求解线性方程组的结果一样。 + +此任务的目标是在 Paddle 框架中,新增 lu_solve API,调用路径为:paddle.linalg.lu_solve 和 Tensor.lu_solve + +**提交内容:** + +- API 的设计文档,并提 PR 至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/APIs 目录 +- Python 实现代码 & 英文 API 文档,在 Paddle repo 的[python/paddle/tensor/linalg.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/tensor/math.py)文件 +- 并在[python/paddle/tensor/\_\_init\_\_.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/tensor/__init__.py#L274)中,添加 lu_solve API,以支持 Tensor.lu_solve 的调用方式 +- C++ 实现代码,在 Paddle repo 放置。头文件在 Paddle repo 的[paddle/phi/kernels](https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/phi/kernels)目录,cc 文件在[paddle/phi/kernels/cpu](https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/phi/kernels/cpu)目录 和 cu 文件在[paddle/phi/kernels/gpu](https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/phi/kernels/gpu)目录 +- 单测代码,在 Paddle repo 的 [test/](https://github.com/PaddlePaddle/Paddle/tree/develop/test)目录 +- 中文 API 文档,在 docs repo 的[docs/api/paddle](https://github.com/PaddlePaddle/docs/tree/develop/docs/api/paddle)目录 +- API 映射文档:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系 文件,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟悉矩阵 LU 分解原理,了解当前 paddle.linalg.lu 的逻辑 +- 熟悉 lapack/cublas 库 +- 熟练掌握 Python + +### NO.27 为 Paddle 新增 register_parametrization/remove_parametrizations/cached/ParametrizationList/is_parametrized API + +**详细描述:** + +为 Paddle 新增自定义参数化模块功能,该模块对于改变和控制模型参数的行为非常有用,特别是在需要对参数施加特定的约束或转换时。此任务的目标是在 Paddle 框架中,新增 5 个 API。调用路径为:paddle.nn.utils.register_parametrization、paddle.nn.utils.remove_parametrizations、paddle.nn.utils.cached、paddle.nn.utils.ParametrizationList、paddle.nn.utils.is_parametrized。 + +- register_parametrization:注册 nn.Layer 的自定义参数化方法。 +- remove_parametrizations:移除 nn.Layer 的自定义参数化方法。 +- cached:上下文管理器,用于启用通过 register_parametrization() 注册的参数化对象的缓存系统。 +- ParametrizationList:顺序容器,用于保存和管理参数化的 nn.Layer 的原始参数或缓冲区。 +- is_parametrized:用于检查一个 nn.Layer 是否有活跃的参数化,或指定的张量名称是否已经被参数化。 + +**提交内容:** + +- API 的设计文档,并提 PR 至 [PaddlePaddle/community](https://github.com/PaddlePaddle/community) 的 rfcs/APIs 目录 +- Python 实现代码 & 英文 API 文档,在 Paddle repo 的 [python/paddle/nn/utils](https://github.com/PaddlePaddle/Paddle/tree/develop/python/paddle/nn/utils) 目录下新建文件 +- 并在[python/paddle/nn/utils/\_\_init\_\_.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/nn/utils/__init__.py)中添加相应 API +- C++ /CUDA 实现代码,在 Paddle repo 的 [paddle/phi/kernels](https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/phi/kernels) 目录 +- 单测代码,在 Paddle repo 的[ python/paddle/test/legacy_test](https://github.com/PaddlePaddle/Paddle/tree/develop/test/legacy_test) 目录 +- 中文 API 文档,在 docs repo 的 [docs/api/paddle/nn/utils](https://github.com/PaddlePaddle/docs/tree/develop/docs/api/paddle/nn/utils) 目录 +- API 映射文档:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系 文件,请务必遵守[《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟悉 Paddle 的参数初始化方式 +- 熟练掌握 C++, CUDA, Python + +### NO.28 为 `paddle.clip` 进行功能增强 + +**详细描述:** + +为 paddle.clip 进行功能增强,支持 min 和 max 传入 Tensor,从而按照 elementwise 的方式进行上下界裁剪。 + +**提交内容:** + +- **API/OP 修改代码** 和 **API 英文文档**,代码提交到[Paddle Repo](https://github.com/PaddlePaddle/Paddle)中 +- **API 单测代码**,需自行寻找相应的 API/OP 单测,如无现成测试,则需新增对应的测试 case +- **API 中文文档**,如果有 API 签名的改动,需修改 API 文档,提交到[Docs Repo](https://github.com/PaddlePaddle/docs)中 +- **API 映射文档**,描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中修改对应的 API 映射文档,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟练掌握 C++,Python + +**参考内容:** + +- Pytorch 对应 API 参考: `torch.clip` + +### NO.29 为 `paddle.grad` 进行功能增强 + +**详细描述:** + +为 `paddle.grad` 进行功能增强,支持 is_grads_batched 参数,按 batch 计算 vjp;支持 only_inputs 参数。 + +**提交内容:** + +- **API/OP 修改代码** 和 **API 英文文档**,代码提交到[Paddle Repo](https://github.com/PaddlePaddle/Paddle)中 +- **API 单测代码**,需自行寻找相应的 API/OP 单测,如无现成测试,则需新增对应的测试 case +- **API 中文文档**,如果有 API 签名的改动,需修改 API 文档,提交到[Docs Repo](https://github.com/PaddlePaddle/docs)中 +- **API 映射文档**,描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中修改对应的 API 映射文档,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟练掌握 C++,Python + +**参考内容:** + +- Pytorch 对应 API 参考: `torch.autograd.grad` + +### NO.30 为 `paddle.divide` 进行功能增强 + +**详细描述:** + +为 `paddle.divide` 支持 rounding_mode 参数:支持 None、'trunc' 、 'floor' 三种类型的设置,其中 'trunc' 为向 0 取整,'floor'为向负无穷取整;None 时相当于 true_divide,此时还涉及到输入 int 时类型提升,否则无法表达出正确结果。目前 `paddle.divide` 的逻辑相当于 rounding_mode=None,但还缺少 int 时的类型提升,导致计算结果不准确。 + +**提交内容:** + +- **API/OP 修改代码** 和 **API 英文文档**,代码提交到[Paddle Repo](https://github.com/PaddlePaddle/Paddle)中 +- **API 单测代码**,需自行寻找相应的 API/OP 单测,如无现成测试,则需新增对应的测试 case +- **API 中文文档**,如果有 API 签名的改动,需修改 API 文档,提交到[Docs Repo](https://github.com/PaddlePaddle/docs)中 +- **API 映射文档**,描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中修改对应的 API 映射文档,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟练掌握 C++,Python + +**参考内容:** + +- Pytorch 对应 API 参考: `torch.divide` + +### NO.31 为 `paddle.sparse.sparse_csr_tensor`进行功能增强 + +**详细描述:** + +为 `paddle.sparse.sparse_csr_tensor` 支持 shape 的自动推导,可不输入 shape,此时会自动推导 shape。 + +**提交内容:** + +- **API/OP 修改代码** 和 **API 英文文档**,代码提交到[Paddle Repo](https://github.com/PaddlePaddle/Paddle)中 +- **API 单测代码**,需自行寻找相应的 API/OP 单测,如无现成测试,则需新增对应的测试 case +- **API 中文文档**,如果有 API 签名的改动,需修改 API 文档,提交到[Docs Repo](https://github.com/PaddlePaddle/docs)中 +- **API 映射文档**,描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中修改对应的 API 映射文档,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟练掌握 C++,Python + +**参考内容:** + +- Pytorch 对应 API 参考: `torch.sparse_csr_tensor` + +### NO.32 为 `paddle.nn.functional.scaled_dot_product_attention` 进行功能增强 + +**详细描述:** + +为 `paddle.nn.functional.scaled_dot_product_attention` 完成以下几个方面的功能增强: + +- 支持 float32 数据类型输入 +- 当前要求卡的计算能力不低于 8,需调研分析是否可以进一步降低对硬件 GPU 的需求。(torch 对硬件要求更低,可参考) +- 支持 math 后端,在不使用 flash_attn 加速时,也可正常计算 + +**提交内容:** + +- **API/OP 修改代码** 和 **API 英文文档**,代码提交到 [Paddle Repo](https://github.com/PaddlePaddle/Paddle) 中 +- **API 单测代码**,需自行寻找相应的 API/OP 单测,如无现成测试,则需新增对应的测试 case +- **API 中文文档**,如果有 API 签名的改动,需修改 API 文档,提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) 中 +- **API 映射文档**,描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中修改对应的 API 映射文档,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟练掌握 C++,Python + +**参考内容:** + +- Pytorch 对应 API 参考: `torch.nn.functional.scaled_dot_product_attention` + +### NO.33 为 `paddle.nn.MaxPool1D/MaxPool2D/MaxPool3D` 及其对应 functional API 增加 dilation 参数 + +**详细描述:** + +为 `paddle.nn.MaxPool1D/MaxPool2D/MaxPool3D` 及其对应的 `paddle.nn.functional.max_pool1d/max_pool2d/max_pool3d` 增加 dilation 参数。 + +**提交内容:** + +- **API/OP 修改代码** 和 **API 英文文档**,代码提交到 [Paddle Repo](https://github.com/PaddlePaddle/Paddle) 中 +- **API 单测代码**,需自行寻找相应的 API/OP 单测,如无现成测试,则需新增对应的测试 case +- **API 中文文档**,如果有 API 签名的改动,需修改 API 文档,提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) 中 +- **API 映射文档**,描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中修改对应的 API 映射文档,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md),提交到 [Docs Repo](https://github.com/PaddlePaddle/docs) + +**技术要求:** + +- 熟练掌握 C++,Python + +**参考内容:** + +- Pytorch 对应 API 参考: `torch.nn.MaxPool1D/MaxPool2D/MaxPool3D` + +### NO.34 为 Paddle 代码转换工具新增 API 转换规则(第 1 组) + +**详细描述:** + +为了能自动化将其它深度学习代码转写成 Paddle 代码,从而提升模型代码迁移的效率,我们建设了 [**代码自动转换工具**](https://github.com/PaddlePaddle/PaConvert): **Pa**ddlePaddle Code **Convert** Toolkits。 + +此次需要你完成 [**第七期黑客松 API 转换名单**](https://doc.weixin.qq.com/sheet/e3_AakAbwboADEk5j1q1ABTf0V9nYWD1?scode=AHAA0Qc9AFooltcxprAakAbwboADE&tab=BB08J2) **中第 1 组** 的 API 转换规则开发。 + +**提交内容:** + +- **API 映射文档**:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的映射关系 文件,文件名为 PyTorch API 名,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md) ,代码提交到 [Docs Repo](https://github.com/PaddlePaddle/docs)下 +- **API 转换规则**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#如何贡献代码),代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 +- **API 转换单测**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#步骤5编写单元测试)中步骤 5,注意单测规范与要求。代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 + +**技术要求:** + +- 熟练掌握 Python +- 熟悉 Pytorch、Paddle 两者 API 的使用,善于捕捉并分析细节差异 + +### NO.35 为 Paddle 代码转换工具新增 API 转换规则(第 2 组) + +**详细描述:** + +为了能自动化将其它深度学习代码转写成 Paddle 代码,从而提升模型代码迁移的效率,我们建设了 [**代码自动转换工具**](https://github.com/PaddlePaddle/PaConvert): **Pa**ddlePaddle Code **Convert** Toolkits。 + +此次需要你完成 [**第七期黑客松 API 转换名单**](https://doc.weixin.qq.com/sheet/e3_AakAbwboADEk5j1q1ABTf0V9nYWD1?scode=AHAA0Qc9AFooltcxprAakAbwboADE&tab=BB08J2) **中第 2 组** 的 API 转换规则开发。 + +**提交内容:** + +- **API 映射文档**:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系文件,文件名为 PyTorch API 名,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md) ,代码提交到 [Docs Repo](https://github.com/PaddlePaddle/docs)下 +- **API 转换规则**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#如何贡献代码),代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 +- **API 转换单测**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#步骤5编写单元测试)中步骤 5,注意单测规范与要求。代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 + +**技术要求:** + +- 熟练掌握 Python +- 熟悉 Pytorch、Paddle 两者 API 的使用,善于捕捉并分析细节差异 + +### NO.36 为 Paddle 代码转换工具新增 API 转换规则(第 3 组) + +**详细描述:** + +为了能自动化将其它深度学习代码转写成 Paddle 代码,从而提升模型代码迁移的效率,我们建设了 [**代码自动转换工具**](https://github.com/PaddlePaddle/PaConvert): **Pa**ddlePaddle Code **Convert** Toolkits。 + +此次需要你完成 [**第七期黑客松 API 转换名单**](https://doc.weixin.qq.com/sheet/e3_AakAbwboADEk5j1q1ABTf0V9nYWD1?scode=AHAA0Qc9AFooltcxprAakAbwboADE&tab=BB08J2) **中第 3 组** 的 API 转换规则开发。 + +**提交内容:** + +- **API 映射文档**:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系文件,文件名为 PyTorch API 名,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md) ,代码提交到 [Docs Repo](https://github.com/PaddlePaddle/docs)下 + +- **API 转换规则**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#如何贡献代码),代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 +- **API 转换单测**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#步骤5编写单元测试)中步骤 5,注意单测规范与要求。代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 + +**技术要求:** + +- 熟练掌握 Python +- 熟悉 Pytorch、Paddle 两者 API 的使用,善于捕捉并分析细节差异 + +### NO.37 为 Paddle 代码转换工具新增 API 转换规则(第 4 组) + +**详细描述:** + +为了能自动化将其它深度学习代码转写成 Paddle 代码,从而提升模型代码迁移的效率,我们建设了 [**代码自动转换工具**](https://github.com/PaddlePaddle/PaConvert): **Pa**ddlePaddle Code **Convert** Toolkits。 + +此次需要你完成 [**第七期黑客松 API 转换名单**](https://doc.weixin.qq.com/sheet/e3_AakAbwboADEk5j1q1ABTf0V9nYWD1?scode=AHAA0Qc9AFooltcxprAakAbwboADE&tab=BB08J2) **中第 4 组** 的 API 转换规则开发。 + +**提交内容:** + +- **API 映射文档**:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系文件,文件名为 PyTorch API 名,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md) ,代码提交到 [Docs Repo](https://github.com/PaddlePaddle/docs)下 +- **API 转换规则**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#如何贡献代码),代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 +- **API 转换单测**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#步骤5编写单元测试)中步骤 5,注意单测规范与要求。代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 + +**技术要求:** + +- 熟练掌握 Python +- 熟悉 Pytorch、Paddle 两者 API 的使用,善于捕捉并分析细节差异 + +### NO.38 为 Paddle 代码转换工具新增 API 转换规则(第 5 组) + +**详细描述:** + +为了能自动化将其它深度学习代码转写成 Paddle 代码,从而提升模型代码迁移的效率,我们建设了 [**代码自动转换工具**](https://github.com/PaddlePaddle/PaConvert): **Pa**ddlePaddle Code **Convert** Toolkits。 + +此次需要你完成 [**第七期黑客松 API 转换名单**](https://doc.weixin.qq.com/sheet/e3_AakAbwboADEk5j1q1ABTf0V9nYWD1?scode=AHAA0Qc9AFooltcxprAakAbwboADE&tab=BB08J2) **中第 5 组** 的 API 转换规则开发。 + +**提交内容:** + +- **API 映射文档**:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系文件,文件名为 PyTorch API 名,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md) ,代码提交到 [Docs Repo](https://github.com/PaddlePaddle/docs)下 +- **API 转换规则**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#如何贡献代码),代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 +- **API 转换单测**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#步骤5编写单元测试)中步骤 5,注意单测规范与要求。代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 + +**技术要求:** + +- 熟练掌握 Python +- 熟悉 Pytorch、Paddle 两者 API 的使用,善于捕捉并分析细节差异 + +### NO.39 为 Paddle 代码转换工具新增 API 转换规则(第 6 组) + +**详细描述:** + +为了能自动化将其它深度学习代码转写成 Paddle 代码,从而提升模型代码迁移的效率,我们建设了 [**代码自动转换工具**](https://github.com/PaddlePaddle/PaConvert): **Pa**ddlePaddle Code **Convert** Toolkits。 + +此次需要你完成 [**第七期黑客松 API 转换名单**](https://doc.weixin.qq.com/sheet/e3_AakAbwboADEk5j1q1ABTf0V9nYWD1?scode=AHAA0Qc9AFooltcxprAakAbwboADE&tab=BB08J2) **中第 6 组** 的 API 转换规则开发。 + +**提交内容:** + +- **API 映射文档**:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系文件,文件名为 PyTorch API 名,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md) ,代码提交到 [Docs Repo](https://github.com/PaddlePaddle/docs)下 +- **API 转换规则**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#如何贡献代码),代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 +- **API 转换单测**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#步骤5编写单元测试)中步骤 5,注意单测规范与要求。代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 + +**技术要求:** + +- 熟练掌握 Python +- 熟悉 Pytorch、Paddle 两者 API 的使用,善于捕捉并分析细节差异 + +### NO.40 为 Paddle 代码转换工具新增 API 转换规则(第 7 组) + +**详细描述:** + +为了能自动化将其它深度学习代码转写成 Paddle 代码,从而提升模型代码迁移的效率,我们建设了 [**代码自动转换工具**](https://github.com/PaddlePaddle/PaConvert): **Pa**ddlePaddle Code **Convert** Toolkits。 + +此次需要你完成 [**第七期黑客松 API 转换名单**](https://doc.weixin.qq.com/sheet/e3_AakAbwboADEk5j1q1ABTf0V9nYWD1?scode=AHAA0Qc9AFooltcxprAakAbwboADE&tab=BB08J2) **中第 7 组** 的 API 转换规则开发。 + +**提交内容:** + +- **API 映射文档**:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系文件,文件名为 PyTorch API 名,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md) ,代码提交到 [Docs Repo](https://github.com/PaddlePaddle/docs)下 +- **API 转换规则**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#如何贡献代码),代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 +- **API 转换单测**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#步骤5编写单元测试)中步骤 5,注意单测规范与要求。代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 + +**技术要求:** + +- 熟练掌握 Python +- 熟悉 Pytorch、Paddle 两者 API 的使用,善于捕捉并分析细节差异 + +### NO.41 为 Paddle 代码转换工具新增 API 转换规则(第 8 组) + +**详细描述:** + +为了能自动化将其它深度学习代码转写成 Paddle 代码,从而提升模型代码迁移的效率,我们建设了 [**代码自动转换工具**](https://github.com/PaddlePaddle/PaConvert): **Pa**ddlePaddle Code **Convert** Toolkits。 + +此次需要你完成 [**第七期黑客松 API 转换名单**](https://doc.weixin.qq.com/sheet/e3_AakAbwboADEk5j1q1ABTf0V9nYWD1?scode=AHAA0Qc9AFooltcxprAakAbwboADE&tab=BB08J2) **中第 8 组** 的 API 转换规则开发。 + +**提交内容:** + +- **API 映射文档**:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系文件,文件名为 PyTorch API 名,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md) ,代码提交到 [Docs Repo](https://github.com/PaddlePaddle/docs)下 +- **API 转换规则**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#如何贡献代码),代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 +- **API 转换单测**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#步骤5编写单元测试)中步骤 5,注意单测规范与要求。代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 + +**技术要求:** + +- 熟练掌握 Python +- 熟悉 Pytorch、Paddle 两者 API 的使用,善于捕捉并分析细节差异 + +### NO.42 为 Paddle 代码转换工具新增 API 转换规则(第 9 组) + +**详细描述:** + +为了能自动化将其它深度学习代码转写成 Paddle 代码,从而提升模型代码迁移的效率,我们建设了 [**代码自动转换工具**](https://github.com/PaddlePaddle/PaConvert): **Pa**ddlePaddle Code **Convert** Toolkits。 + +此次需要你完成 [**第七期黑客松 API 转换名单**](https://doc.weixin.qq.com/sheet/e3_AakAbwboADEk5j1q1ABTf0V9nYWD1?scode=AHAA0Qc9AFooltcxprAakAbwboADE&tab=BB08J2) **中第 9 组** 的 API 转换规则开发。 + +**提交内容:** + +- **API 映射文档**:描述 Paddle API 与 Pytorch API 之间的映射关系,请在 [API 映射文档目录](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference) 中为每个 API 新增对应的 映射关系文件,文件名为 PyTorch API 名,请务必遵守 [《API 映射关系-格式规范》](https://github.com/PaddlePaddle/docs/blob/develop/docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_format_cn.md) ,代码提交到 [Docs Repo](https://github.com/PaddlePaddle/docs)下 +- **API 转换规则**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#如何贡献代码),代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 +- **API 转换单测**:具体开发步骤,请参考 [《PaConvert:如何贡献代码》](https://github.com/PaddlePaddle/PaConvert/blob/master/docs/CONTRIBUTING.md#步骤5编写单元测试)中步骤 5,注意单测规范与要求。代码提交到 [PaConvert Repo](https://github.com/PaddlePaddle/PaConvert) 下 + +**技术要求:** + +- 熟练掌握 Python +- 熟悉 Pytorch、Paddle 两者 API 的使用,善于捕捉并分析细节差异 diff --git "a/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221\345\274\200\346\272\220\350\264\241\347\214\256\344\270\252\344\272\272\346\214\221\346\210\230\350\265\233rfc\351\234\200\346\261\202\345\210\227\350\241\250.md" "b/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221\345\274\200\346\272\220\350\264\241\347\214\256\344\270\252\344\272\272\346\214\221\346\210\230\350\265\233rfc\351\234\200\346\261\202\345\210\227\350\241\250.md" index 0b4e5bbbf..8c0d0186e 100644 --- "a/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221\345\274\200\346\272\220\350\264\241\347\214\256\344\270\252\344\272\272\346\214\221\346\210\230\350\265\233rfc\351\234\200\346\261\202\345\210\227\350\241\250.md" +++ "b/hackathon/hackathon_7th/\343\200\220Hackathon 7th\343\200\221\345\274\200\346\272\220\350\264\241\347\214\256\344\270\252\344\272\272\346\214\221\346\210\230\350\265\233rfc\351\234\200\346\261\202\345\210\227\350\241\250.md" @@ -1,6 +1,6 @@ ## 科学计算模型复现 -| 序号 | 难度 | 任务标题 | 是否需要提交 rfc | +| 序号 | 难度 | 任务标题 | 是否需要提交 RFC | | :--: | :-------: | ----------------------------------------------------------------------------------------------- | :--------------: | | 1 | ⭐ | 为开源符号回归库进行 paddle 适配 | 是 | | 2 | ⭐️⭐️ | Transolver 论文复现 | 是 | @@ -19,3 +19,50 @@ | 15 | ⭐️⭐️ | SchNet 论文复现 | 是 | | 16 | ⭐️⭐️⭐️ | MACE 论文复现 | 是 | | 17 | ⭐️⭐️ | PIKAN 论文复现 | 是 | + +## 框架开发任务 + +| 序号 | 难度 | 任务标题 | 是否需要提交 RFC | +| :--: | :----: | -------------------------------------------------------------------------------------------------------------- | :--------------: | +| 18 | ⭐️⭐️ | 为稀疏计算添加复数支持 | 否 | +| 19 | ⭐ | 为 Paddle 新增 load_state_dict_from_url API | 是 | +| 20 | ⭐ | 为 Paddle 新增 Tensor.set* / Tensor.resize* API | 是 | +| 21 | ⭐⭐ | 为 Paddle 新增 reset_peak_memory_stats/reset_max_memory_allocated/memory_stats API | 是 | +| 22 | ⭐ | 在 paddle.audio.functional.get_window 中支持 bartlett 、 kaiser 和 nuttall 窗函数 | 是 | +| 23 | ⭐ | 为 Paddle 新增 ParameterDict API | 是 | +| 24 | ⭐⭐ | 为 Paddle 新增 EmbeddingBag API | 是 | +| 25 | ⭐ | 为 Paddle 新增 is_coalesced/sparse_dim/dense_dim API | 是 | +| 26 | ⭐⭐ | 为 Paddle 新增 lu_solve API | 是 | +| 27 | ⭐⭐⭐ | 为 Paddle 新增 register_parametrization/remove_parametrizations/cached/ParametrizationList/is_parametrized API | 是 | +| 28 | ⭐ | 为 `paddle.clip` 进行功能增强 | 否 | +| 29 | ⭐ | 为 `paddle.grad` 进行功能增强 | 否 | +| 30 | ⭐ | 为 `paddle.divide` 进行功能增强 | 否 | +| 31 | ⭐ | 为 `paddle.sparse.sparse_csr_tensor`进行功能增强 | 否 | +| 32 | ⭐ | 为 `paddle.nn.functional.scaled_dot_product_attention` 进行功能增强 | 否 | +| 33 | ⭐ | 为 `paddle.nn.MaxPool1D/MaxPool2D/MaxPool3D` 及其对应 functional API 增加 dilation 参数 | 否 | +| 34 | ⭐ | 为 Paddle 代码转换工具新增 API 转换规则(第 1 组) | 否 | +| 35 | ⭐ | 为 Paddle 代码转换工具新增 API 转换规则(第 2 组) | 否 | +| 36 | ⭐ | 为 Paddle 代码转换工具新增 API 转换规则(第 3 组) | 否 | +| 37 | ⭐ | 为 Paddle 代码转换工具新增 API 转换规则(第 4 组) | 否 | +| 38 | ⭐ | 为 Paddle 代码转换工具新增 API 转换规则(第 5 组) | 否 | +| 39 | ⭐ | 为 Paddle 代码转换工具新增 API 转换规则(第 6 组) | 否 | +| 40 | ⭐ | 为 Paddle 代码转换工具新增 API 转换规则(第 7 组) | 否 | +| 41 | ⭐ | 为 Paddle 代码转换工具新增 API 转换规则(第 8 组) | 否 | +| 42 | ⭐ | 为 Paddle 代码转换工具新增 API 转换规则(第 9 组) | 否 | + +## 套件开发任务、 + +| 序号 | 难度 | 任务标题 | 是否需要提交 RFC | +| :--: | :-------: | ------------------------------------------------- | :--------------: | +| 43 | ⭐⭐️⭐️ | 完善 TokenizerFast 功能支持 | 是 | +| 44 | ⭐️⭐️⭐️ | 大模型 4D 并行框架全自动构建 | 是 | +| 45 | ⭐️⭐️⭐️ | 添加 FunctionCall 功能 | 是 | +| 46 | ⭐ | Paddle2ONNX 添加对返回常量的 IfElse 算子的支持 | 否 | +| 47 | ⭐️⭐️ | Paddle2ONNX 添加对 While 算子的支持 | 否 | +| 48 | ⭐⭐️ | Paddle2ONNX 添加对 Windows 平台自动发包机制的支持 | 否 | +| 49 | ⭐️⭐️ | PaddleX 重要模型的量化能力验证和优化 | 是 | +| 50 | ⭐️⭐️ | PaddleX 重要模型 Android Demo 支持 | 是 | +| 51 | ⭐️⭐️⭐️ | 在 PaddleOCR 中复现 MixTeX 模型 | 是 | +| 52 | ⭐️⭐️⭐️ | 论文复现:OmniParser | 是 | +| 53 | ⭐️⭐️ | 在 PaddleOCR 中复现 TrOCR-Formula-Rec 模型 | 是 | +| 54 | ⭐️⭐️⭐️ | 在 PaddleSpeech 中实现 Whisper 的 Finetune | 否 |