已合并
[inductor][docs]update on inductor docs #45550
jimmycao9929创建于 11 天前
[inductor][docs]update on inductor docs #45550
已合并
jimmycao9929创建于 11 天前
8 个文件变更+36-5
@@ -22,6 +22,7 @@ TorchNPU环境变量请参考《[TorchNPU环境变量参考](https://www.hiascen
22| 自动Tiling优化 |INDUCTOR_ASCEND_AGGRESSIVE_AUTOTUNE| 控制是否启用batch profiler,默认值为0 |22| 自动Tiling优化 |INDUCTOR_ASCEND_AGGRESSIVE_AUTOTUNE| 控制是否启用batch profiler,默认值为0 |
23| 自动Tiling优化 |TORCHINDUCTOR_COMPILE_THREADS| 多进程编译进程数量,与社区保持一致,默认值为32 |23| 自动Tiling优化 |TORCHINDUCTOR_COMPILE_THREADS| 多进程编译进程数量,与社区保持一致,默认值为32 |
24| 自动Tiling优化 |TORCHNPU_PRECOMPILE_THREADS| 控制多线程编译线程数量,默认为最大核数的一半(max_precompiled_thread_num = os.cpu_count() // 2),大于1时,使用并发编译 |24| 自动Tiling优化 |TORCHNPU_PRECOMPILE_THREADS| 控制多线程编译线程数量,默认为最大核数的一半(max_precompiled_thread_num = os.cpu_count() // 2),大于1时,使用并发编译 |
25+| 分核 / 限核 |NPU_DEVICE_LIMIT| 控制最多可使用的Cube和Vector的核数,默认值为全部cube和vector核 |
25| CostModel |INDUCTOR_ASCEND_ENABLE_COSTMODEL| 控制是否启用CostModel预筛选,默认值为0 |26| CostModel |INDUCTOR_ASCEND_ENABLE_COSTMODEL| 控制是否启用CostModel预筛选,默认值为0 |
26| CostModel |INDUCTOR_ASCEND_COSTMODEL_RATIO| 控制CostModel预筛选后保留的config比例,默认值为0.25 |27| CostModel |INDUCTOR_ASCEND_COSTMODEL_RATIO| 控制CostModel预筛选后保留的config比例,默认值为0.25 |
27| 其他 |INDUCTOR_ASCEND_CHECK_ACCURACY| 开启triton后端精度对比工具,dump单算子用例。当启用时,会自动启用INDUCTOR_ASCEND_DUMP_FX_GRAPH功能,默认值为空。 |28| 其他 |INDUCTOR_ASCEND_CHECK_ACCURACY| 开启triton后端精度对比工具,dump单算子用例。当启用时,会自动启用INDUCTOR_ASCEND_DUMP_FX_GRAPH功能,默认值为空。 |
@@ -23,6 +23,7 @@
23 - [INDUCTOR_ASCEND_AGGRESSIVE_AUTOTUNE](./tiling/INDUCTOR_ASCEND_AGGRESSIVE_AUTOTUNE.md)23 - [INDUCTOR_ASCEND_AGGRESSIVE_AUTOTUNE](./tiling/INDUCTOR_ASCEND_AGGRESSIVE_AUTOTUNE.md)
24 - [TORCHINDUCTOR_COMPILE_THREADS](./tiling/TORCHINDUCTOR_COMPILE_THREADS.md)24 - [TORCHINDUCTOR_COMPILE_THREADS](./tiling/TORCHINDUCTOR_COMPILE_THREADS.md)
25 - [TORCHNPU_PRECOMPILE_THREADS](./tiling/TORCHNPU_PRECOMPILE_THREADS.md)25 - [TORCHNPU_PRECOMPILE_THREADS](./tiling/TORCHNPU_PRECOMPILE_THREADS.md)
26+- [分核/限核](./limit_core/limit_core.md)
26- [CostModel](./costmodel/costmodel.md)27- [CostModel](./costmodel/costmodel.md)
27 - [快速入门](./costmodel/overview.md)28 - [快速入门](./costmodel/overview.md)
28 - [INDUCTOR_ASCEND_ENABLE_COSTMODEL](./costmodel/INDUCTOR_ASCEND_ENABLE_COSTMODEL.md)29 - [INDUCTOR_ASCEND_ENABLE_COSTMODEL](./costmodel/INDUCTOR_ASCEND_ENABLE_COSTMODEL.md)
@@ -0,0 +1,27 @@
1+# NPU_DEVICE_LIMIT
2+ 
3+## 功能描述
4+ 
5+用于将NPU卡的计算核(Cube Core、Vector Core)进行划分,例如:通过export NPU_DEVICE_LIMIT='14,28',将会划分14个Cube Core和28个Vector Core作为当前可用的计算资源。在这种情况下,一个计算图中所涉及的算子(AclNN算子、triton手写算子、triton自动融合算子、catlass算子),最多可以使用这些受限的计算核。
6+ 
7+适用于小shape模型场景,算子shape较小,打不满cube core和vector core导致浪费。因此,通过分核/限核,支持多个实例同时推理,即多个算子同时运行在同一个NPU卡上。
8+ 
9+| 值 | 说明 |
10+|---|---|
11+| 例'7,14'或者'14,28' | Cube和Vector的核数限制 |
12+ 
13+## 配置示例
14+ 
15+```bash
16+export NPU_DEVICE_LIMIT='14,28'
17+```
18+ 
19+## 使用约束
20+ 
21+- 在A2/A3/A5代际,Cube和Vector的配比是1:2。因此,设置NPU_DEVICE_LIMIT时,建议Cube和Vector的数量比例达成1:2。
22+ 
23+- 如不设置,则默认使用NPU上全部的Cube和Vector核;
24+ 
25+## 支持的型号
26+ 
27+- <term>Atlas A5 系列产品</term>
@@ -28,6 +28,7 @@
28 - [INDUCTOR_ASCEND_AGGRESSIVE_AUTOTUNE](./feature/tiling/INDUCTOR_ASCEND_AGGRESSIVE_AUTOTUNE.md)28 - [INDUCTOR_ASCEND_AGGRESSIVE_AUTOTUNE](./feature/tiling/INDUCTOR_ASCEND_AGGRESSIVE_AUTOTUNE.md)
29 - [TORCHINDUCTOR_COMPILE_THREADS](./feature/tiling/TORCHINDUCTOR_COMPILE_THREADS.md)29 - [TORCHINDUCTOR_COMPILE_THREADS](./feature/tiling/TORCHINDUCTOR_COMPILE_THREADS.md)
30 - [TORCHNPU_PRECOMPILE_THREADS](./feature/tiling/TORCHNPU_PRECOMPILE_THREADS.md)30 - [TORCHNPU_PRECOMPILE_THREADS](./feature/tiling/TORCHNPU_PRECOMPILE_THREADS.md)
31+ - [分核/限核](./feature/limit_core/limit_core.md)
31 - [CostModel](./feature/costmodel/costmodel.md)32 - [CostModel](./feature/costmodel/costmodel.md)
32 - [快速入门](./feature/costmodel/overview.md)33 - [快速入门](./feature/costmodel/overview.md)
33 - [INDUCTOR_ASCEND_ENABLE_COSTMODEL](./feature/costmodel/INDUCTOR_ASCEND_ENABLE_COSTMODEL.md)34 - [INDUCTOR_ASCEND_ENABLE_COSTMODEL](./feature/costmodel/INDUCTOR_ASCEND_ENABLE_COSTMODEL.md)
@@ -2,13 +2,13 @@
2 2 
3## 简介3## 简介
4 4 
5-Inductor-Ascend在继承Pytorch社区Inductor能力的基础上,针对昇腾Ascend硬件,进行了亲和性改进和优化。其目标是:提供昇腾亲和的torch.compile图模式后端;生成昇腾亲和的Triton DSL,支持基于triton的算子自动融合;支持动态shape。5+Inductor-Ascend在继承社区Pytorch Inductor能力的基础上,针对昇腾Ascend硬件,进行了亲和性改进和优化。其目标是:提供昇腾亲和的torch.compile图模式后端;支持基于triton的算子自动融合;支持动态shape。
6 6 
7-如图1(推荐场景-图模式-软件栈)所示,Inductor-Ascend和社区Inductor的执行流程类似,其内嵌于TorchNPU中,当用户开启图模式后端torch.compile(backend="inductor")时,Inductor-Ascend承接Dynamo抓取的FX Graph,进行编译、融合,生成昇腾亲和融合算子Triton DSL;最后由Triton-Ascend、AscendNPU-IR编译优化,生成昇腾指令机器码(二进制)。7+如图1所示,Inductor-Ascend和社区Inductor的执行流程类似,其内嵌于TorchNPU中,当用户开启图模式后端torch.compile(backend="inductor")时,Inductor-Ascend承接Dynamo抓取的FX Graph,进行图优化、融合、编译,生成昇腾亲和融合算子Triton DSL或者catlass DSL;最后由Triton-Ascend、AscendNPU-IR编译优化,生成昇腾指令机器码(二进制)。
8 8 
9-和社区类似,对于无法参与融合的算子(AtenOp),Inductor-Ascend会将其作fallback处理,即fallback到ACLNN算子、手写算子等。9+和社区类似,对于无法参与融合的算子(AtenOp),Inductor-Ascend会将其作fallback处理,即fallback到ACLNN算子、手写AscendC算子等。
10 10 
11-图1 推荐场景-图模式-软件栈11+图1 图模式-自动融合-软件栈
12<div align="left">12<div align="left">
13 <img src="overview_arch.png" width="70%">13 <img src="overview_arch.png" width="70%">
14</div>14</div>
@@ -17,7 +17,7 @@ Inductor-Ascend在继承Pytorch社区Inductor能力的基础上,针对昇腾As
17 17 
18图2 Inductor-Ascend逻辑架构图18图2 Inductor-Ascend逻辑架构图
19<div align="left">19<div align="left">
20- <img src="inductor_arch_v1.png" width="80%">20+ <img src="inductor_arch.png" width="80%">
21</div>21</div>
22 22 
23## 使用约束23## 使用约束
@@ -46,6 +46,7 @@ Inductor-Ascend在继承Pytorch社区Inductor能力的基础上,针对昇腾As
46| CppWrapper | 用于生成 C++ 调用代码替代默认的 Python 包装器,以减少 torch.compile 后模型在推理时的 Python 开销。详细介绍可点击[link](https://docs.pytorch.org/tutorials/unstable/inductor_cpp_wrapper_tutorial.html)46| CppWrapper | 用于生成 C++ 调用代码替代默认的 Python 包装器,以减少 torch.compile 后模型在推理时的 Python 开销。详细介绍可点击[link](https://docs.pytorch.org/tutorials/unstable/inductor_cpp_wrapper_tutorial.html)
47| AOTInductor | 旨在处理导出的PyTorch模型,对其进行优化,并生成动态链接库及其他相关产物。这些编译产物广泛应用于服务端推理部署场景,支持非Python环境下的推理执行。详细介绍可点击[link](https://docs.pytorch.org/docs/2.11/user_guide/torch_compiler/torch.compiler_aot_inductor.html)47| AOTInductor | 旨在处理导出的PyTorch模型,对其进行优化,并生成动态链接库及其他相关产物。这些编译产物广泛应用于服务端推理部署场景,支持非Python环境下的推理执行。详细介绍可点击[link](https://docs.pytorch.org/docs/2.11/user_guide/torch_compiler/torch.compiler_aot_inductor.html)
48| MegaCache | 用于统一保存和恢复模型编译过程中产生的多级缓存,从而减少模型冷启动时重复执行图捕获、动态图分析、代码生成、Kernel编译和Autotune带来的耗时,提供面向`torch.compile`编译场景的端到端缓存复用能力。详细介绍可单击[link](https://docs.pytorch.org/tutorials/recipes/torch_compile_caching_tutorial.html)获取PyTorch官网详情48| MegaCache | 用于统一保存和恢复模型编译过程中产生的多级缓存,从而减少模型冷启动时重复执行图捕获、动态图分析、代码生成、Kernel编译和Autotune带来的耗时,提供面向`torch.compile`编译场景的端到端缓存复用能力。详细介绍可单击[link](https://docs.pytorch.org/tutorials/recipes/torch_compile_caching_tutorial.html)获取PyTorch官网详情
49+| 分核/限核 | 用于将NPU卡的计算核(Cube Core、Vector Core)进行划分,例如:通过export NPU_DEVICE_LIMIT='14,28',将会划分14个Cube Core和28个Vector Core作为当前可用的计算核。在这种情况下,一个计算图中所涉及的算子(AclNN算子、triton手写算子、triton自动融合算子、catlass算子),最多可以使用这些受限的计算核。
49 50 
50## 使用说明51## 使用说明
51 52