Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions rfcs/APIs/api_design_for_reverse_diagram_visualization.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ pytorch框架下,有一个第三方库[pytorchviz](https://github.com/szagoruyko
为飞桨动态图框架添加反向节点在 Python 端的访问机制。并在该机制基础上,为飞桨框架扩展反向图可视化能力。方便进行调试。

# 二、飞桨现状
飞浆的前向图的可视化可以通过飞桨的可视化工具[VisualDL](https://www.paddlepaddle.org.cn/documentation/docs/zh/2.2/guides/03_VisualDL/visualdl_cn.html)实现.
但是飞浆框架目前还不支持对于反向图的可视化,也没有提供反向图的访问机制.
飞桨的前向图的可视化可以通过飞桨的可视化工具[VisualDL](https://www.paddlepaddle.org.cn/documentation/docs/zh/2.2/guides/03_VisualDL/visualdl_cn.html)实现.
但是飞桨框架目前还不支持对于反向图的可视化,也没有提供反向图的访问机制.

飞浆构建的模型前向计算的时候会同时将[反向图的节点构建好](https://github.com/PaddlePaddle/community/blob/master/pfcc/paddle-code-reading/Dygraph/20221201_dygraph_backward.md#%E5%89%8D%E5%90%91%E6%89%A7%E8%A1%8C%E5%90%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%9B%BE), 将这些节点信息暴露给pythonAPI 基于这些节点信息可以构建反向图.最后进行可视化
飞桨构建的模型前向计算的时候会同时将[反向图的节点构建好](https://github.com/PaddlePaddle/community/blob/master/pfcc/paddle-code-reading/Dygraph/20221201_dygraph_backward.md#%E5%89%8D%E5%90%91%E6%89%A7%E8%A1%8C%E5%90%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%9B%BE), 将这些节点信息暴露给pythonAPI 基于这些节点信息可以构建反向图.最后进行可视化



Expand Down
6 changes: 3 additions & 3 deletions rfcs/APIs/api_design_for_reverse_diagram_visualization_2.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@
为飞桨动态图框架添加反向节点在 Python 端的访问机制。并在该机制基础上,为飞桨框架扩展反向图可视化能力。方便进行调试。

# 二、飞桨现状
飞浆的前向图的可视化可以通过飞桨的可视化工具[VisualDL](https://www.paddlepaddle.org.cn/documentation/docs/zh/2.2/guides/03_VisualDL/visualdl_cn.html)实现.
但是飞浆框架目前还不支持对于反向图的可视化,也没有提供反向图的访问机制.
飞桨的前向图的可视化可以通过飞桨的可视化工具[VisualDL](https://www.paddlepaddle.org.cn/documentation/docs/zh/2.2/guides/03_VisualDL/visualdl_cn.html)实现.
但是飞桨框架目前还不支持对于反向图的可视化,也没有提供反向图的访问机制.

飞浆构建的模型前向计算的时候会同时将[反向图的节点构建好](https://github.com/PaddlePaddle/community/blob/master/pfcc/paddle-code-reading/Dygraph/20221201_dygraph_backward.md#%E5%89%8D%E5%90%91%E6%89%A7%E8%A1%8C%E5%90%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%9B%BE), 将这些节点信息暴露给pythonAPI 基于这些节点信息可以构建反向图.最后进行可视化
飞桨构建的模型前向计算的时候会同时将[反向图的节点构建好](https://github.com/PaddlePaddle/community/blob/master/pfcc/paddle-code-reading/Dygraph/20221201_dygraph_backward.md#%E5%89%8D%E5%90%91%E6%89%A7%E8%A1%8C%E5%90%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%9B%BE), 将这些节点信息暴露给pythonAPI 基于这些节点信息可以构建反向图.最后进行可视化

目前已经开发了一个[paddleviz工具](https://github.com/PFCCLab/paddleviz) 可以实现反向图的可视化, 但是图中显示的信息还不够多

Expand Down
6 changes: 3 additions & 3 deletions rfcs/Docs/【Hackathon No.112】RFC修改
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# 一、概述
## 1、相关背景

飞桨框架于 2.0 正式版全面支持了动态图训练,并在2.1、2.2 两个大版本中不断完善分布式能力,同时大幅增强了训练功能。需要进行飞浆动态图分布式训练的评估
飞桨框架于 2.0 正式版全面支持了动态图训练,并在2.1、2.2 两个大版本中不断完善分布式能力,同时大幅增强了训练功能。需要进行飞桨动态图分布式训练的评估

## 2、功能目标

Expand Down Expand Up @@ -41,7 +41,7 @@ paddle 使用的分布式框架的Fleet API 该 API支持动态图编译以及

# 四、设计思路与实现方案

对比pytorch框架以及飞浆分布式并行框架的运行速度,识别准确的度,分析两个框架使用的难易程度,使用方式。(具体查看第五点实现方案)
对比pytorch框架以及飞桨分布式并行框架的运行速度,识别准确的度,分析两个框架使用的难易程度,使用方式。(具体查看第五点实现方案)

环境配置
(1)在曙光超算昆山计算服务器部署pytorch分布式环境,给出部署步骤(已经完成)
Expand Down Expand Up @@ -70,7 +70,7 @@ Fleet API的使用

# 五、可行性分析和排期规划

对各Pytorch分布式训练框架ddp已经有一定了解,之后需要对比ddp和飞浆分布式框架之间的不同,进一步做细致的体验测试及分析。形成详细的报告文档。
对各Pytorch分布式训练框架ddp已经有一定了解,之后需要对比ddp和飞桨分布式框架之间的不同,进一步做细致的体验测试及分析。形成详细的报告文档。
已经完成一份评估文档,以及完成了pytorch和paddlepaddle的分布式训练。


2 changes: 1 addition & 1 deletion rfcs/FastDeploy/20230301_deploy_PaddleDetection_by_Go.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

## 1、相关背景

随着飞浆项目使用者越来越多,需要开发Golang部署示例来满足Golang开发者的模型部署需求。
随着飞桨项目使用者越来越多,需要开发Golang部署示例来满足Golang开发者的模型部署需求。

## 2、功能目标
* 在`FastDeploy`中使用`Golang`完成`PaddleDetection`中`PP-YOLOE`, `PaddleYOLOv8`, `PaddleYOLOv5`等模型的部署。
Expand Down
84 changes: 84 additions & 0 deletions rfcs/FastDeploy/20250909_speed_up_compilation_for_fastdeploy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# FastDeploy编译加速设计文档

| 任务名称 | FastDeploy 编译加速 |
|------|------|
| 提交作者 | ccsuzzh |
| 提交时间 | 2025-09-09 |
| 版本号 | V1.0 |
| 文件名 | 20250909_speed_up_compilation_for_fastdeploy.md |

# 一、概述

## 1、相关背景
随着大语言模型推理部署需求的增加,FastDeploy 功能与自定义算子库快速扩张,带来显著的编译压力与 CI 用时上升。

## 2、功能目标
* 提升源码整体编译速度与增量编译效率

## 3、意义
提高开发效率,加快CI流水线的速度。

# 二、现状分析
- 当前自定义算子库 `fastdeploy_ops.so` 主要通过 setuptools 直接编译。少量目标时尚可,但随着算子与依赖的膨胀,整体编译速度显著下降。
- 采用 `nvcc --time` 统计各 `.cu` 文件编译耗时,定位编译瓶颈。

## 测试环境
| 项目 | 配置 |
|------|------|
| CPU | Intel® Core™ i5-10600KF @ 4.10GHz × 12 |
| OS | Ubuntu 20.04.6 LTS |
| RAM | 64 GB |
| GPU | GeForce RTX 4060 Ti 16 GB |

## 编译命令
```bash
bash build.sh 1 python false [80]
```

## 头部编译耗时单元统计
`build_and_install_ops` 总耗时:02:54:16s,而耗时最多的15个文件如下:

| 文件名 | 耗时占比 |
|--------|---------:|
| append_attention_c8_float16_fp8_kerne.cu | 2.88% |
| decode_attention_kernel.cu | 2.60% |
| append_attention_c8_bfloat16_fp8_kernel.cu | 2.58% |
| append_attention_c8_float16_int8_kerne.cu | 2.27% |
| append_attention_c8_bfloat16_int8_kernel.cu | 2.07% |
| append_attention_c8_float16_float16_kernel.cu | 2.02% |
| append_attention_c8_bfloat16_bfloat16_kernel.cu | 1.86% |
| append_attention_c4_bfloat16_fp8_kernel.cu | 0.87% |
| append_attention_c4_float16_fp8_kernel.cu | 0.86% |
| fast_hardamard_kernel.cu | 0.83% |
| append_attention_c4_bfloat16_int8_kernel.cu | 0.74% |
| append_attention_c4_float16_int8_kernel.cu | 0.68% |
| append_attention_c4_bfloat16_bfloat16_kernel.cu | 0.67% |
| append_attention_c4_float16_float16_kernel.cu | 0.65% |
| append_attention_c16_float16_fp8_kernel.cu | 0.47% |

上诉述头部耗时单元数量仅为总编译文件总数的 3.5%,而编译却占总耗时的 22.23%,这正是需要编译加速的重点文件。

# 三、业内方案调研
主流如 vLLM 采用 setuptools.extension 配合 CMake(实际由 CMake + Ninja 构建),具备更好的增量编译、依赖管理与并行能力;同时结合 `ccache/sccache` 复用编译产物,并通过 `NVCC_THREADS` 提升 nvcc 内部并行度,降低大型 CUDA 文件单次编译耗时。

# 四、设计思路与实现方案

## 总体思路
## 1) 构建系统与并行
- 从 setuptools 直接编译切换为 CMake + Ninja 驱动编译
- 开启 `NVCC_THREADS` 提升 nvcc 内部并行度(结合机器核心数做上限)

## 2) 编译缓存
- 如果不能继续复用Paddle主框架的setup,则还需要额外对`ccache/sccache`进行支持

## 3) 源码层面优化
- 降低头文件依赖与模板实例数量,控制编译单元体积
- 拆分超大 `.cu` 文件,按功能/数据类型切分为更细粒度目标
- 优化内核复杂度或编译选项

# 五、可行性分析和排期规划
* 学习业界主流框架的编译流程和优化方法,可靠性已经得到验证。
* 预计一周内完成编译流程的优化,在9月底完成任务收尾工作。

# 六、影响面
在保证正确性的前提下进行源码与构建组织优化,不改变功能;对开发者与 CI 的主要影响为构建速度与流程优化。
6 changes: 3 additions & 3 deletions rfcs/PaddleOCR/MixTex.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,17 @@

2. Swin Transformer

基于飞浆框架的实现 [PaddleMIX/paddlemix/models/groundingdino/backbone/swin_transformer.py at develop · PaddlePaddle/PaddleMIX (github.com)](https://github.com/PaddlePaddle/PaddleMIX/blob/develop/paddlemix/models/groundingdino/backbone/swin_transformer.py)
基于飞桨框架的实现 [PaddleMIX/paddlemix/models/groundingdino/backbone/swin_transformer.py at develop · PaddlePaddle/PaddleMIX (github.com)](https://github.com/PaddlePaddle/PaddleMIX/blob/develop/paddlemix/models/groundingdino/backbone/swin_transformer.py)

作者论文中引用的模型 [microsoft/swin-tiny-patch4-window7-224 · Hugging Face](https://huggingface.co/microsoft/swin-tiny-patch4-window7-224)

4. RoBERTa

基于飞浆框架的实现  [PaddleNLP/slm/model_zoo/roberta at develop · PaddlePaddle/PaddleNLP (github.com)](https://github.com/PaddlePaddle/PaddleNLP/tree/develop/slm/model_zoo/roberta)  
基于飞桨框架的实现  [PaddleNLP/slm/model_zoo/roberta at develop · PaddlePaddle/PaddleNLP (github.com)](https://github.com/PaddlePaddle/PaddleNLP/tree/develop/slm/model_zoo/roberta)  

# 四、对比分析

使用作者开源的模型和代码进行实现为目前最佳的论文复现实践方式,但基于控制影响面考量,将作者开源的模型转换成基于飞浆的模型,并为PaddleOCR增加研究中提出的数据生成和增强方式为目前的最佳实践方式
使用作者开源的模型和代码进行实现为目前最佳的论文复现实践方式,但基于控制影响面考量,将作者开源的模型转换成基于飞桨的模型,并为PaddleOCR增加研究中提出的数据生成和增强方式为目前的最佳实践方式

# 五、设计思路与实现方案

Expand Down
2 changes: 1 addition & 1 deletion rfcs/PaddleOCR/Trocr_Formula_Rec.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

# 四、对比分析

使用作者开源的模型和代码进行实现为目前最佳的论文复现实践方式,但基于控制影响面考量,将作者开源的模型转换成基于飞浆的模型,并为PaddleOCR增加研究中提出的数据生成和增强方式为目前的最佳实践方式
使用作者开源的模型和代码进行实现为目前最佳的论文复现实践方式,但基于控制影响面考量,将作者开源的模型转换成基于飞桨的模型,并为PaddleOCR增加研究中提出的数据生成和增强方式为目前的最佳实践方式

# 五、设计思路与实现方案

Expand Down
2 changes: 1 addition & 1 deletion rfcs/Science/20220907_science_65.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

# 二、飞桨现状

飞浆框架目前支持PINN模块化建模,针对2D非定常圆柱绕流算例,可实现200-300个监督测点的半监督学习。
飞桨框架目前支持PINN模块化建模,针对2D非定常圆柱绕流算例,可实现200-300个监督测点的半监督学习。
![参考 PaddleScience](https://github.com/PaddlePaddle/PaddleScience/tree/develop/examples/cylinder/2d_unsteady_continuous)

# 三、业内方案调研
Expand Down
2 changes: 1 addition & 1 deletion rfcs/Science/20220912_sicience_61.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

# 二、飞桨现状

飞浆框架目前支持PINN模块化建模,针对2D非定常圆柱绕流算例,可实现200-300个监督测点的半监督学习。
飞桨框架目前支持PINN模块化建模,针对2D非定常圆柱绕流算例,可实现200-300个监督测点的半监督学习。
![参考 PaddleScience](https://github.com/PaddlePaddle/PaddleScience/tree/develop/examples/cylinder/2d_unsteady_continuous)

# 三、业内方案调研
Expand Down