From 51a457b059d6d873c2cc8174855caf990fc0d124 Mon Sep 17 00:00:00 2001 From: fangfangssj <99968055+fangfangssj@users.noreply.github.com> Date: Thu, 18 Sep 2025 17:27:05 +0800 Subject: [PATCH 1/3] Create 20250916_FastDeploy_add_sageattention.md --- .../20250916_FastDeploy_add_sageattention.md | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md diff --git a/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md b/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md new file mode 100644 index 000000000..e33d6c5af --- /dev/null +++ b/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md @@ -0,0 +1,77 @@ +# 为FastDeploy集成 SageAttn v2/2++ + +| 方案名称 | 为FastDeploy集成 SageAttn v2/2++ | +|----------------------------------------------------------|-------------------------------------------| +| 提交作者 | fangfangssj | +| 提交时间 | 2025-09-16 | +| 版本号 | V1.0 | +| 依赖飞桨版本 | paddlepaddle-gpu==3.2.0 | +| 文件名 | 20250916_FastDeploy_add_sageattention.md
| + +# 一、概述 +## 1、相关背景 +随着深度学习模型规模的不断扩大,特别是在大语言模型(LLM)领域,模型的计算和存储需求呈指数级增长。这对实际部署带来了严峻挑战,包括显存瓶颈、计算延迟和能耗问题。为了应对这些挑战,模型量化技术成为关键解决方案之一,通过降低模型权重和激活值的数值精度来减少资源消耗。 +## 2、功能目标 +为FastDeploy集成 SageAttn v2++,测试SageAttn在EB,Qwen上的表现。 +## 3、意义 +SageAttn(Sparse Attention with Group-wise Quantization)是一种结合稀疏注意力和分组量化技术的创新方法,专门针对Transformer架构中的注意力机制进行优化。该方法在保持模型精度的同时,显著降低计算复杂度和内存使用量,特别适合处理长序列输入场景。 + +# 二、FastDeploy现状 +目前FastDeploy中未集成SageAttn v2++ + +# 三、业内方案调研 +vllm与sglang中尚未集成SageAttn系列 + +# 四、对比分析 +参考之前FastDeploy的后端接入SageAttn v2++ + +# 五、设计思路与实现方案 +```text +fastdeploy/ +├── model_executor/ +│ ├── layers/ +│ │ ├── attention/ +│ │ │ ├── __init__.py +│ │ │ ├── attention.py # 基础Attention类 +│ │ │ ├── sage_attn_backend.py # 新增:SageAttention后端实现 +│ │ │ └── ... # 其他attention后端 +│ │ └── ... +│ ├── ops/ +│ │ ├── triton_ops/ +│ │ │ ├── __init__.py +│ │ │ ├── sage_attention.py # 新增:SageAttention系列Triton算子 +│ │ │ └── ... # 其他Triton算子 +│ │ └── ... +└── platforms/ + ├── cuda.py # 需要修改:添加SageAttentionBackend注册 + └── ... +``` + +在fastdeploy/model_executor/layers/attention/下,新增sage_attn_backend.py文件,继承AttentionBackend,AttentionMetadata两个基类,实现SageAttentionMetadata,SageAttentionBackend两个类。 + +添加对应的自定义triton算子,将SageAttention中sageattention/triton下的算子转化后放在fastdeploy/model_executor/ops/triton_ops/目录下,同时增加对应的测试 + +在fastdeploy/model_executor/layers/attention/__init__.py中添加对应的SageAttention注册 + +在fastdeploy/platforms/cuda.py中,添加对应SageAttentionBackend。 + +# 六、测试和验收的考量 +tests/layers/下增加SageAttention的测试 + +tests/operators/下增加新增triton算子测试 + +SageAttention在EB,Qwen上测试性能 + +# 七、影响面 +为FastDeploy集成 SageAttn v2++,不影响其他部分 + +# 八、排期规划 +* 2025-9-18 ~ 2025-10-7:完成集成代码开发 +* 2025-9-28 ~ 2025-10-7:完成代码测试 +* 2025-10-1 ~ 2025-10-7: 完成部署示例及文档 + +# 九、参考资料 + +[SageAttention](https://github.com/thu-ml/SageAttention) + +[FD接入MobaAttn的PR](https://github.com/PaddlePaddle/FastDeploy/pull/3209) From 54b56453ecb0e914e00d2c93fda969979f82f150 Mon Sep 17 00:00:00 2001 From: fangfangssj <99968055+fangfangssj@users.noreply.github.com> Date: Fri, 26 Sep 2025 16:12:27 +0800 Subject: [PATCH 2/3] Update 20250916_FastDeploy_add_sageattention.md --- .../20250916_FastDeploy_add_sageattention.md | 74 ++++++++++++++----- 1 file changed, 56 insertions(+), 18 deletions(-) diff --git a/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md b/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md index e33d6c5af..c46abe923 100644 --- a/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md +++ b/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md @@ -14,7 +14,7 @@ ## 2、功能目标 为FastDeploy集成 SageAttn v2++,测试SageAttn在EB,Qwen上的表现。 ## 3、意义 -SageAttn(Sparse Attention with Group-wise Quantization)是一种结合稀疏注意力和分组量化技术的创新方法,专门针对Transformer架构中的注意力机制进行优化。该方法在保持模型精度的同时,显著降低计算复杂度和内存使用量,特别适合处理长序列输入场景。 +SageAttn是一种分组量化技术的创新方法,专门针对Transformer架构中的注意力机制进行优化。该方法在保持模型精度的同时,显著降低计算复杂度和内存使用量,特别适合处理长序列输入场景。 # 二、FastDeploy现状 目前FastDeploy中未集成SageAttn v2++ @@ -26,49 +26,87 @@ vllm与sglang中尚未集成SageAttn系列 参考之前FastDeploy的后端接入SageAttn v2++ # 五、设计思路与实现方案 +## 总体设计 ```text +custom_ops/ # 自定义算子目录 +└── gpu_ops/ # GPU相关自定义算子 + ├── __init__.py + ├── sage_attention/ # SageAttention CUDA算子实现 + │ ├── __init__.py + │ ├── sage_attention_cuda.cu # CUDA Kernel实现 + │ └── sage_attention_cuda.h # CUDA Kernel头文件 + └── ... # 其他自定义CUDA算子 + fastdeploy/ ├── model_executor/ │ ├── layers/ │ │ ├── attention/ │ │ │ ├── __init__.py │ │ │ ├── attention.py # 基础Attention类 -│ │ │ ├── sage_attn_backend.py # 新增:SageAttention后端实现 +│ │ │ ├── sage_attn_backend.py # SageAttention后端实现 │ │ │ └── ... # 其他attention后端 │ │ └── ... │ ├── ops/ │ │ ├── triton_ops/ │ │ │ ├── __init__.py -│ │ │ ├── sage_attention.py # 新增:SageAttention系列Triton算子 +│ │ │ ├── sage_attention.py # SageAttention系列Triton算子 │ │ │ └── ... # 其他Triton算子 │ │ └── ... └── platforms/ ├── cuda.py # 需要修改:添加SageAttentionBackend注册 └── ... ``` +- 在fastdeploy/model_executor/layers/attention/下,新增sage_attn_backend.py文件,继承AttentionBackend,AttentionMetadata两个基类,实现SageAttentionMetadata,SageAttentionBackend两个类。 +- 在fastdeploy/model_executor/layers/attention/__init__.py中添加对应的SageAttention注册。 +- 在fastdeploy/platforms/cuda.py中,添加对应SageAttentionBackend。 +- 添加对应的自定义cuda算子,将SageAttention中csrc下的算子转化后放在custom_ops/gpu_ops/ops/sage_attention/目录下,同时增加对应的测试 +- 添加对应的自定义triton算子,将SageAttention中sageattention/triton下的算子转化后放在fastdeploy/model_executor/ops/triton_ops/目录下,同时增加对应的测试 + +## 算子梳理 +SageAttn为五种不同的GPU架构提供了支持,sm80,sm86,sm89,sm90,sm120五个架构,paddle尚未支持sm120,本次支持前四种GPU架构。 +### cuda算子 +cuda算子主要分为四个部分,分别是sm80,sm89,sm90,辅助算子 +#### sm80 +- qk_int8_sv_f16_accum_f32_attn # FP16 SV + FP32累积 +- qk_int8_sv_f16_accum_f16_attn # FP16 SV + FP16累积 +- qk_int8_sv_f16_accum_f16_attn_inst_buf # FP16 SV + FP16累积+立即缓冲 +- qk_int8_sv_f16_accum_f16_fuse_v_mean_attn # 融合V均值优化 +#### sm89 +- qk_int8_sv_f8_accum_f32_fuse_v_scale_attn # FP8 SV + FP32累积 +- qk_int8_sv_f8_accum_f32_fuse_v_scale_attn_inst_buf # 带立即缓冲 +- qk_int8_sv_f8_accum_f16_fuse_v_scale_attn_inst_buf # FP16累积版本 +- qk_int8_sv_f8_accum_f32_fuse_v_scale_fuse_v_mean_attn # 融合V均值 +#### sm90 +- qk_int8_sv_f8_accum_f32_fuse_v_scale_attn +- qk_int8_sv_f8_accum_f32_fuse_v_scale_attn_inst_buf +#### 辅助算子 +- quant_per_block_int8_fuse_sub_mean_cuda +- quant_per_block_int8_cuda +- quant_per_warp_int8_cuda +- sub_mean_cuda +- mean_scale_fuse_quant_cuda +- scale_fuse_quant_cuda + +### triton算子 +triton算子实现sm86架构 +#### sm86 +- attn_qk_int8_block_varlen +- attn_qk_int8_per_block_causal_varlen -在fastdeploy/model_executor/layers/attention/下,新增sage_attn_backend.py文件,继承AttentionBackend,AttentionMetadata两个基类,实现SageAttentionMetadata,SageAttentionBackend两个类。 - -添加对应的自定义triton算子,将SageAttention中sageattention/triton下的算子转化后放在fastdeploy/model_executor/ops/triton_ops/目录下,同时增加对应的测试 - -在fastdeploy/model_executor/layers/attention/__init__.py中添加对应的SageAttention注册 - -在fastdeploy/platforms/cuda.py中,添加对应SageAttentionBackend。 # 六、测试和验收的考量 -tests/layers/下增加SageAttention的测试 - -tests/operators/下增加新增triton算子测试 - -SageAttention在EB,Qwen上测试性能 +- tests/layers/下增加SageAttention的测试= +- tests/operators/下增加新增cuda算子测试 +- tests/operators/下增加新增triton算子测试 +- SageAttention在EB,Qwen上测试性能 # 七、影响面 为FastDeploy集成 SageAttn v2++,不影响其他部分 # 八、排期规划 -* 2025-9-18 ~ 2025-10-7:完成集成代码开发 -* 2025-9-28 ~ 2025-10-7:完成代码测试 -* 2025-10-1 ~ 2025-10-7: 完成部署示例及文档 +* 2025-9-26 ~ 2025-10-15:完成集成代码开发 +* 2025-10-5 ~ 2025-10-15:完成代码测试 +* 2025-10-7 ~ 2025-10-15: 完成部署示例及文档 # 九、参考资料 From 25136d2a19d09d48624411a5425307cbe8a220e0 Mon Sep 17 00:00:00 2001 From: fangfangssj <99968055+fangfangssj@users.noreply.github.com> Date: Tue, 14 Oct 2025 11:56:59 +0800 Subject: [PATCH 3/3] Update 20250916_FastDeploy_add_sageattention.md --- .../20250916_FastDeploy_add_sageattention.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md b/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md index c46abe923..03fccba5e 100644 --- a/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md +++ b/rfcs/FastDeploy/20250916_FastDeploy_add_sageattention.md @@ -4,7 +4,7 @@ |----------------------------------------------------------|-------------------------------------------| | 提交作者 | fangfangssj | | 提交时间 | 2025-09-16 | -| 版本号 | V1.0 | +| 版本号 | V1.1 | | 依赖飞桨版本 | paddlepaddle-gpu==3.2.0 | | 文件名 | 20250916_FastDeploy_add_sageattention.md
| @@ -95,21 +95,25 @@ triton算子实现sm86架构 # 六、测试和验收的考量 -- tests/layers/下增加SageAttention的测试= +- tests/layers/下增加SageAttention的测试 - tests/operators/下增加新增cuda算子测试 - tests/operators/下增加新增triton算子测试 -- SageAttention在EB,Qwen上测试性能 +- SageAttention在EB,Qwen上测试8-128K数据下 E2E 精度&性能 # 七、影响面 为FastDeploy集成 SageAttn v2++,不影响其他部分 # 八、排期规划 -* 2025-9-26 ~ 2025-10-15:完成集成代码开发 -* 2025-10-5 ~ 2025-10-15:完成代码测试 -* 2025-10-7 ~ 2025-10-15: 完成部署示例及文档 +* 2025-10-15 ~ 2025-11-10:完成集成代码开发 +* 2025-10-15 ~ 2025-11-10:完成代码测试 +* 2025-10-15 ~ 2025-11-15: 完成部署示例及文档 # 九、参考资料 [SageAttention](https://github.com/thu-ml/SageAttention) [FD接入MobaAttn的PR](https://github.com/PaddlePaddle/FastDeploy/pull/3209) + +[PaddleNLP接入SageAttention的PR](https://github.com/PaddlePaddle/PaddleNLP/pull/9848) + +[PaddleNLP接入SageAttention的PR](https://github.com/PaddlePaddle/PaddleNLP/pull/10032)