Closed
【docs】update inductor docs #45521
AACAESAdd on Aug 29Closed at Sep 10
【docs】update inductor docs #45521
Closed
Total: 37 files changed+1031-107
| @@ -94,8 +94,34 @@ | |||
| 94 | 94 | ||
| 95 | |环境变量名称|简介| | 95 | |环境变量名称|简介| |
| 96 | |--|--| | 96 | |--|--| |
| 97 | -|[TORCHINDUCTOR_NPU_BACKEND](inductor/TORCHINDUCTOR_NPU_BACKEND.md)|通过该环境变量可配置图模式下的优化模式,支持Triton、MLIR、DVM、Ascend C等优化模式。| | 97 | +|[TORCH_COMPILE_DEBUG](inductor/TORCH_COMPILE_DEBUG.md)|通过此环境变量可开启torch.compile的调试模式,导出FX图、codegen输出等调试信息。| |
| 98 | -|[(beta)INDUCTOR_ASCEND_CHECK_ACCURACY](inductor/INDUCTOR_ASCEND_CHECK_ACCURACY.md)|INDUCTOR_ASCEND_CHECK_ACCURACY是TorchNPU提供的精度校验工具,仅在torch.compile图编译后端为"Inductor"且模式为"Triton"时自动检测融合算子的数值精度。| | 98 | +|[TORCH_LOGS](inductor/TORCH_LOGS.md)|通过此环境变量可控制PyTorch各模块的日志输出级别,与社区行为一致。| |
H | |||
| 99 | +|[TORCH_CACHING_PRECOMPILE](inductor/TORCH_CACHING_PRECOMPILE.md)|通过此环境变量可开启自动缓存预编译实验性功能,自动保存和加载Dynamo编译缓存,加速后续编译过程,与社区行为一致。| | ||
| 100 | +|[TORCHINDUCTOR_NPU_BACKEND](inductor/TORCHINDUCTOR_NPU_BACKEND.md)|通过该环境变量可配置图模式下的优化模式,支持Triton、DVM、Ascend C等优化模式。| | ||
| 101 | +|[TORCHINDUCTOR_CACHE_DIR](inductor/TORCHINDUCTOR_CACHE_DIR.md)|通过此环境变量可配置Inductor编译缓存的目录路径,与社区行为一致。| | ||
| 102 | +|[INDUCTOR_DVM_ENABLE_MATMUL_FUSION](inductor/INDUCTOR_DVM_ENABLE_MATMUL_FUSION.md)|通过此环境变量可开启DVM MatMul template融合,将矩阵乘算子融合为DVM template kernel。| | ||
| 103 | +|[(beta)INDUCTOR_ASCEND_CHECK_ACCURACY](inductor/INDUCTOR_ASCEND_CHECK_ACCURACY.md)|INDUCTOR_ASCEND_CHECK_ACCURACY是TorchNPU提供的精度校验工具,在torch.compile图编译模式(Inductor)的Triton模式与DVM模式下自动检测融合算子的数值精度。| | ||
| 104 | +|[INDUCTOR_ASCEND_DEBUG](inductor/INDUCTOR_ASCEND_DEBUG.md)|通过此环境变量可控制Triton编译时是否启用调试模式。| | ||
| 105 | +|[INDUCTOR_ASCEND_DUMP_FX_GRAPH](inductor/INDUCTOR_ASCEND_DUMP_FX_GRAPH.md)|通过此环境变量可控制在Inductor降层时是否导出FX图。| | ||
| 106 | +|[INDUCTOR_ASCEND_FX_GRAPH_CACHE](inductor/INDUCTOR_ASCEND_FX_GRAPH_CACHE.md)|通过此环境变量可配置Inductor降层时FX图缓存的目录路径。| | ||
| 107 | +|[INDUCTOR_ASCEND_LOG_LEVEL](inductor/INDUCTOR_ASCEND_LOG_LEVEL.md)|通过此环境变量可配置Inductor模块的日志级别。| | ||
| 99 | |[NPU_INDUCTOR_FALLBACK_LIST](inductor/NPU_INDUCTOR_FALLBACK_LIST.md)|通过此环境变量可指定需要回退到PyTorch原生的算子列表。| | 108 | |[NPU_INDUCTOR_FALLBACK_LIST](inductor/NPU_INDUCTOR_FALLBACK_LIST.md)|通过此环境变量可指定需要回退到PyTorch原生的算子列表。| |
| 100 | -|[(beta)TORCHINDUCTOR_ENABLE_MFUSION](inductor/TORCHINDUCTOR_ENABLE_MFUSION.md)|通过此环境变量可控制是否启用MFusion融合优化功能,仅在torch.compile图编译后端为"Inductor"生效。| | 109 | +|[TORCHINDUCTOR_MAX_AUTOTUNE](inductor/TORCHINDUCTOR_MAX_AUTOTUNE.md)|通过此环境变量可控制是否开启max autotune功能,与社区行为一致。| |
| 101 | -|[TORCHINDUCTOR_USE_AKG](inductor/TORCHINDUCTOR_USE_AKG.md)|通过此环境变量可配置torch.compile图模式(Inductor)下MLIR(Multi-Level Intermediate Representation)模式启用AKG(Auto Kernel Generator)后端优化。| | 110 | +|[TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDS](inductor/TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDS.md)|通过此环境变量可配置max autotune过程中矩阵乘算子参与调优的候选实现列表。| |
| 111 | +|[TORCHINDUCTOR_COMPILE_THREADS](inductor/TORCHINDUCTOR_COMPILE_THREADS.md)|通过此环境变量可配置并发编译的进程数量,与社区行为一致。| | ||
| 112 | +|[TORCHNPU_PRECOMPILE_THREADS](inductor/TORCHNPU_PRECOMPILE_THREADS.md)|通过此环境变量可配置torch_npu Inductor的预编译线程数。| | ||
| 113 | +|[TORCHINDUCTOR_NPU_CATLASS_DIR](inductor/TORCHINDUCTOR_NPU_CATLASS_DIR.md)|通过此环境变量可配置Catlass模板库的路径,与社区TORCHINDUCTOR_CUTLASS_DIR对应。| | ||
| 114 | +|[TORCHINDUCTOR_CATLASS_ENABLED_OPS](inductor/TORCHINDUCTOR_CATLASS_ENABLED_OPS.md)|通过此环境变量可配置Catlass模板库支持的矩阵乘类型算子列表,与社区TORCHINDUCTOR_CUTLASS_ENABLED_OPS对应。| | ||
| 115 | +|[CATLASS_EPILOGUE_FUSION](inductor/CATLASS_EPILOGUE_FUSION.md)|通过此环境变量可控制是否开启Catlass epilogue融合功能,与社区CUTLASS_EPILOGUE_FUSION对应。| | ||
| 116 | +|[TORCHINDUCTOR_PROFILE_WITH_DO_BENCH_USING_PROFILING](inductor/TORCHINDUCTOR_PROFILE_WITH_DO_BENCH_USING_PROFILING.md)|通过此环境变量可控制autotune过程中是否使用profiling进行性能测量,与社区行为一致。| | ||
| 117 | +|[ENABLE_INPLACE_BUFFERS](inductor/ENABLE_INPLACE_BUFFERS.md)|通过此环境变量可控制是否启用原地缓冲区优化。| | ||
| 118 | +|[TORCHINDUCTOR_ENABLE_WELFORD](inductor/TORCHINDUCTOR_ENABLE_WELFORD.md)|通过此环境变量可控制是否启用Welford算法计算方差与均值类归约。| | ||
| 119 | +|[TORCHINDUCTOR_ENABLE_LAYERNORM_V4](inductor/TORCHINDUCTOR_ENABLE_LAYERNORM_V4.md)|通过此环境变量可控制是否启用LayerNormV4专属实现(需A5系列且Welford同时开启)。| | ||
| 120 | +|[TORCHINDUCTOR_ENABLE_FAST_GELU](inductor/TORCHINDUCTOR_ENABLE_FAST_GELU.md)|通过此环境变量可控制GELU激活函数是否使用tanh近似decomposition。| | ||
| 121 | +|[ENABLE_PARALLEL_SCHEDULER](inductor/ENABLE_PARALLEL_SCHEDULER.md)|通过此环境变量可控制是否启用并行调度器FX pass。| | ||
| 122 | +|[PARALLEL_SCHEDULER_NODES_MIN](inductor/PARALLEL_SCHEDULER_NODES_MIN.md)|通过此环境变量可配置并行调度器分组的最小调度节点数。| | ||
| 123 | +|[SHUT_DOWN_FX_PASS_LIST](inductor/SHUT_DOWN_FX_PASS_LIST.md)|通过此环境变量可指定需要关闭的torch_npu图优化FX pass列表。| | ||
| 124 | +|[NPU_INDUCTOR_DYNAMIC_FX_PASS](inductor/NPU_INDUCTOR_DYNAMIC_FX_PASS.md)|通过此环境变量可控制图优化FX pass是否使用动态shape模式。| | ||
| 125 | +|[FX_SUBGRAPH_DUMP_PATH](inductor/FX_SUBGRAPH_DUMP_PATH.md)|通过此环境变量可配置DVM模式下FX子图的dump路径。| | ||
| 126 | +|[TORCHINDUCTOR_WORKER_LOGPATH](inductor/TORCHINDUCTOR_WORKER_LOGPATH.md)|通过此环境变量可指定Inductor worker子进程的日志路径,与社区行为一致。| | ||
| 127 | +|[TORCHINDUCTOR_WORKER_SUPPRESS_LOGGING](inductor/TORCHINDUCTOR_WORKER_SUPPRESS_LOGGING.md)|通过此环境变量可控制是否抑制Inductor worker子进程的日志输出,与社区行为一致。| | ||
| @@ -0,0 +1,32 @@ | |||
| 1 | +# CATLASS\_EPILOGUE\_FUSION | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制是否开启Catlass epilogue融合功能。开启后,Catlass模板库会将epilogue操作(如bias add、activation等)融合到matmul kernel中,减少额外的kernel launch和内存搬运。 | ||
| 6 | + | ||
| 7 | +- 默认值为`0`,关闭Catlass epilogue融合。 | ||
| 8 | +- 配置为`1`:开启Catlass epilogue融合。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> **PyTorch社区:** 社区对应环境变量`CUTLASS_EPILOGUE_FUSION`,行为一致,默认值为`0`。 | ||
| 14 | + | ||
| 15 | +## 配置示例 | ||
| 16 | + | ||
| 17 | +开启Catlass epilogue融合: | ||
| 18 | + | ||
| 19 | +```bash | ||
| 20 | +export CATLASS_EPILOGUE_FUSION=1 | ||
| 21 | +``` | ||
| 22 | + | ||
| 23 | +## 使用约束 | ||
| 24 | + | ||
| 25 | +- 需在导入`torch_npu`之前设置。 | ||
| 26 | +- 需同时配置`TORCHINDUCTOR_NPU_CATLASS_DIR`(指定Catlass模板库路径)和`TORCHINDUCTOR_MAX_AUTOTUNE=1`时生效。 | ||
| 27 | + | ||
| 28 | +## 支持的型号 | ||
| 29 | + | ||
| 30 | +- <term>Atlas A2 训练系列产品</term> | ||
| 31 | +- <term>Atlas A3 训练系列产品</term> | ||
| 32 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,32 @@ | |||
| 1 | +# ENABLE\_INPLACE\_BUFFERS | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制是否启用原地缓冲区(inplace buffers)优化。启用后,Inductor允许内核将输入缓冲区复用为输出缓冲区,减少内存分配。 | ||
| 6 | + | ||
| 7 | +- 默认值为`1`(`true`、`yes`等效),启用原地缓冲区。 | ||
| 8 | +- 配置为`0`:禁用原地缓冲区。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 禁用此选项后,Inductor的`inplace_buffers`配置将被设为`False`,同时会禁用NPU-IR的多缓冲区优化。 | ||
| 14 | +> - **PyTorch社区:** 社区通过`torch._inductor.config.inplace_buffers`配置项控制原地缓冲区,无同名环境变量。 | ||
| 15 | + | ||
| 16 | +## 配置示例 | ||
| 17 | + | ||
| 18 | +禁用原地缓冲区: | ||
| 19 | + | ||
| 20 | +```bash | ||
| 21 | +export ENABLE_INPLACE_BUFFERS=0 | ||
| 22 | +``` | ||
| 23 | + | ||
| 24 | +## 使用约束 | ||
| 25 | + | ||
| 26 | +需在导入`torch_npu`之前设置。 | ||
| 27 | + | ||
| 28 | +## 支持的型号 | ||
| 29 | + | ||
| 30 | +- <term>Atlas 训练系列产品</term> | ||
| 31 | +- <term>Atlas A2 训练系列产品</term> | ||
| 32 | +- <term>Atlas A3 训练系列产品</term> | ||
| @@ -0,0 +1,32 @@ | |||
| 1 | +# ENABLE\_PARALLEL\_SCHEDULER | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制是否启用并行调度器FX pass。启用后,`torch_npu`在图优化阶段按算子类型(Cube/Vector)对调度节点分组重排,使矩阵乘类(Cube)与向量类(Vector)算子切分到不同流水分组,提升计算与通信、大算子与小算子间的并行度。 | ||
| 6 | + | ||
| 7 | +- 默认值为`false`,不启用并行调度器。 | ||
| 8 | +- 配置为`true`:启用并行调度器。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 仅对NPU wrapper代码生成(NPUPythonWrapperCodeGen)生效。 | ||
| 14 | +> - 分组最小节点数由`PARALLEL_SCHEDULER_NODES_MIN`控制。 | ||
| 15 | +> - 此功能为`torch_npu`特有。**PyTorch社区:** 社区无此环境变量。 | ||
| 16 | + | ||
| 17 | +## 配置示例 | ||
| 18 | + | ||
| 19 | +```bash | ||
| 20 | +export ENABLE_PARALLEL_SCHEDULER=true | ||
| 21 | +``` | ||
| 22 | + | ||
| 23 | +## 使用约束 | ||
| 24 | + | ||
| 25 | +需在导入`torch_npu`之前设置。 | ||
| 26 | + | ||
| 27 | +## 支持的型号 | ||
| 28 | + | ||
| 29 | +- <term>Atlas 训练系列产品</term> | ||
| 30 | +- <term>Atlas A2 训练系列产品</term> | ||
| 31 | +- <term>Atlas A3 训练系列产品</term> | ||
| 32 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,30 @@ | |||
| 1 | +# FX\_SUBGRAPH\_DUMP\_PATH | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可配置FX子图的dump路径。设置后,在DVM模式(`TORCHINDUCTOR_NPU_BACKEND="dvm"`)下编译时会把FX子图导出到该路径(按`<路径>/<device索引>/<kernel名>`组织),用于子图划分与DVM编译问题的定位分析。 | ||
| 6 | + | ||
| 7 | +- 默认值未配置,不dump FX子图。 | ||
| 8 | +- 设置有效路径:将FX子图导出到指定目录。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> 此功能为`torch_npu`特有。**PyTorch社区:** 社区通过`torch._inductor.config`的debug输出控制,无此环境变量。 | ||
| 14 | + | ||
| 15 | +## 配置示例 | ||
| 16 | + | ||
| 17 | +```bash | ||
| 18 | +export FX_SUBGRAPH_DUMP_PATH=/tmp/fx_subgraph_dump | ||
| 19 | +``` | ||
| 20 | + | ||
| 21 | +## 使用约束 | ||
| 22 | + | ||
| 23 | +- 需在导入`torch_npu`之前设置,并确保目标路径有写权限。 | ||
| 24 | +- 仅在DVM模式(`TORCHINDUCTOR_NPU_BACKEND="dvm"`)下生效。 | ||
| 25 | + | ||
| 26 | +## 支持的型号 | ||
| 27 | + | ||
| 28 | +- <term>Atlas 训练系列产品</term> | ||
| 29 | +- <term>Atlas A2 训练系列产品</term> | ||
| 30 | +- <term>Atlas A3 训练系列产品</term> | ||
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | ## 功能描述 | 3 | ## 功能描述 |
| 4 | 4 | ||
| 5 | -INDUCTOR_ASCEND_CHECK_ACCURACY是TorchNPU提供的精度校验工具,在torch.compile图编译后端为“inductor”时自动检测融合算子的数值精度。 | 5 | +INDUCTOR_ASCEND_CHECK_ACCURACY是TorchNPU提供的精度校验工具,在torch.compile图编译模式(Inductor)下自动检测融合算子的数值精度。 |
| 6 | 6 | ||
| 7 | 该工具可捕获融合算子对应的FX子图,生成独立可执行的单算子测试用例,并在相同输入条件下比对eager与融合算子的输出差异。当差异超出预设阈值时,自动输出精度校验失败日志及诊断信息,辅助开发者快速定位精度问题。 | 7 | 该工具可捕获融合算子对应的FX子图,生成独立可执行的单算子测试用例,并在相同输入条件下比对eager与融合算子的输出差异。当差异超出预设阈值时,自动输出精度校验失败日志及诊断信息,辅助开发者快速定位精度问题。 |
| 8 | 8 | ||
| @@ -33,10 +33,10 @@ export INDUCTOR_ASCEND_CHECK_ACCURACY_RTOL_ATOL="rtol=1e-6,atol=1e-7" | |||
| 33 | 33 | ||
| 34 | > [!CAUTION] | 34 | > [!CAUTION] |
| 35 | > | 35 | > |
| 36 | -> 如需根据不同数据类型(如float32、float16、bfloat16等)配置不同的精度阈值,请手动修改不同后端源码中的acc_comp_tol字典。各后端配置文件路径如下: | 36 | +> 如需根据不同数据类型(如float32、float16、bfloat16等)配置不同的精度阈值,请手动修改不同模式源码中的acc_comp_tol字典。各模式配置文件路径如下: |
| 37 | > | 37 | > |
| 38 | > - Triton:[config](../../../../../torch_npu/_inductor/config.py) | 38 | > - Triton:[config](../../../../../torch_npu/_inductor/config.py) |
| 39 | -> - MLIR和DVM:[config](../../../../../torch_npu/_inductor/ascend_npu_ir/ascend_npu_ir/config.py) | 39 | +> - DVM:[config](../../../../../torch_npu/_inductor/ascend_npu_ir/ascend_npu_ir/config.py) |
| 40 | 40 | ||
| 41 | 精度比对无异常时不打印额外信息。比对有异常时打印如下格式的告警: | 41 | 精度比对无异常时不打印额外信息。比对有异常时打印如下格式的告警: |
| 42 | 42 | ||
| @@ -44,18 +44,22 @@ export INDUCTOR_ASCEND_CHECK_ACCURACY_RTOL_ATOL="rtol=1e-6,atol=1e-7" | |||
| 44 | CHECK ACCURACY FAILED! Kernel: <kernel_name>, Output idx: <idx>, Mismatched: <m>/<n> (<pct>%), Greatest Rel Diff: <rel>, Greatest Abs Diff: <abs>, rtol: <rtol>, atol: <atol>, dump_path: <path> | 44 | CHECK ACCURACY FAILED! Kernel: <kernel_name>, Output idx: <idx>, Mismatched: <m>/<n> (<pct>%), Greatest Rel Diff: <rel>, Greatest Abs Diff: <abs>, rtol: <rtol>, atol: <atol>, dump_path: <path> |
| 45 | ``` | 45 | ``` |
| 46 | 46 | ||
| 47 | -当设置为Triton后端时会将数据及fx graph文件保存至打印信息的dump_path目录下。 | 47 | +当设置为Triton模式(`TORCHINDUCTOR_NPU_BACKEND="default"`)时会将数据及fx graph文件保存至打印信息的dump_path目录下。 |
| 48 | + | ||
| 49 | +> [!NOTE] | ||
| 50 | +> | ||
| 51 | +> - 此功能为`torch_npu`特有,PyTorch社区无直接对应变量。 | ||
| 48 | 52 | ||
| 49 | ## 使用约束 | 53 | ## 使用约束 |
| 50 | 54 | ||
| 51 | - 此环境变量仅可在PyTorch2.7.1和PyTorch2.9.0版本使用。 | 55 | - 此环境变量仅可在PyTorch2.7.1和PyTorch2.9.0版本使用。 |
| 52 | 56 | ||
| 53 | -- 在torch.compile图编译后端为“inductor”时可使用此环境变量。 | 57 | +- 在torch.compile图编译模式(Inductor)下可使用此环境变量。 |
| 54 | 58 | ||
| 55 | -- 此环境变量开启时,Triton后端会自动将`torch._inductor.config.split_reductions`设置为`False`。 | 59 | +- 此环境变量开启时,Triton模式(`TORCHINDUCTOR_NPU_BACKEND="default"`)会自动将`torch._inductor.config.split_reductions`设置为`False`。 |
| 56 | 60 | ||
| 57 | ## 支持的型号 | 61 | ## 支持的型号 |
| 58 | 62 | ||
| 59 | - <term>Atlas A2 训练系列产品</term> | 63 | - <term>Atlas A2 训练系列产品</term> |
| 60 | - <term>Atlas A3 训练系列产品</term> | 64 | - <term>Atlas A3 训练系列产品</term> |
| 61 | -- <term>Ascend 950DT</term>(仅支持Inductor后端编译器中的Triton模式、DVM模式和Ascend C模式,不支持MLIR模式) | 65 | +- <term>Ascend 950DT</term>(仅支持Inductor后端编译器中的Triton模式、DVM模式和Ascend C模式) |
| @@ -0,0 +1,32 @@ | |||
| 1 | +# INDUCTOR\_ASCEND\_DEBUG | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制Triton编译时是否启用调试模式。启用后,Triton编译器会生成包含调试信息的编译元数据,辅助定位编译阶段的问题。 | ||
| 6 | + | ||
| 7 | +- 默认值为`0`,不启用调试模式。 | ||
| 8 | +- 配置为`1`:启用调试模式。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 此环境变量仅在Triton模式(`TORCHINDUCTOR_NPU_BACKEND="default"`)下生效。 | ||
| 14 | +> - 实际生效还需满足`assert_indirect_indexing`为True且非HIP(Heterogeneous-compute Interface for Portability,AMD异构计算接口)设备。 | ||
| 15 | +> - 仅影响Triton编译过程的调试信息输出,不影响算子功能。 | ||
| 16 | +> - **PyTorch社区:** 社区通过`torch._inductor.config.debug`配置调试模式,无此环境变量。 | ||
| 17 | + | ||
| 18 | +## 配置示例 | ||
| 19 | + | ||
| 20 | +```bash | ||
| 21 | +export INDUCTOR_ASCEND_DEBUG=1 | ||
| 22 | +``` | ||
| 23 | + | ||
| 24 | +## 使用约束 | ||
| 25 | + | ||
| 26 | +需在导入`torch_npu`之前设置。 | ||
| 27 | + | ||
| 28 | +## 支持的型号 | ||
| 29 | + | ||
| 30 | +- <term>Atlas 训练系列产品</term> | ||
| 31 | +- <term>Atlas A2 训练系列产品</term> | ||
| 32 | +- <term>Atlas A3 训练系列产品</term> | ||
| @@ -0,0 +1,31 @@ | |||
| 1 | +# INDUCTOR\_ASCEND\_DUMP\_FX\_GRAPH | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制在Inductor降层时是否导出FX图。启用后,系统会在降层过程中将FX图导出为文件,便于开发者分析图优化和降层过程。 | ||
| 6 | + | ||
| 7 | +- 默认值为`False`,不导出FX图。 | ||
| 8 | +- 配置为`True`:导出FX图。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 当`INDUCTOR_ASCEND_CHECK_ACCURACY`启用时,会自动启用FX图dump。 | ||
| 14 | +> - dump文件路径由`TORCHINDUCTOR_CACHE_DIR`或`INDUCTOR_ASCEND_FX_GRAPH_CACHE`控制。 | ||
| 15 | +> - **PyTorch社区:** 社区通过`torch._inductor.config.trace.enabled`和`torch._inductor.config.trace.log_url`控制FX图导出,无此环境变量。 | ||
| 16 | + | ||
| 17 | +## 配置示例 | ||
| 18 | + | ||
| 19 | +```bash | ||
| 20 | +export INDUCTOR_ASCEND_DUMP_FX_GRAPH=True | ||
| 21 | +``` | ||
| 22 | + | ||
| 23 | +## 使用约束 | ||
| 24 | + | ||
| 25 | +需在导入`torch_npu`之前设置。 | ||
| 26 | + | ||
| 27 | +## 支持的型号 | ||
| 28 | + | ||
| 29 | +- <term>Atlas 训练系列产品</term> | ||
| 30 | +- <term>Atlas A2 训练系列产品</term> | ||
| 31 | +- <term>Atlas A3 训练系列产品</term> | ||
| @@ -0,0 +1,30 @@ | |||
| 1 | +# INDUCTOR\_ASCEND\_FX\_GRAPH\_CACHE | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可配置Inductor降层时FX图缓存的目录路径。设置后,系统会将追踪的FX图缓存到指定目录,便于后续复用和分析。 | ||
| 6 | + | ||
| 7 | +- 默认值未设置,不缓存FX图。 | ||
| 8 | +- 设置路径:缓存FX图到指定目录。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_FX_GRAPH_CACHE`,用于控制FX图缓存,`torch_npu`在此基础上扩展了独立的缓存路径配置。 | ||
| 14 | + | ||
| 15 | +## 配置示例 | ||
| 16 | + | ||
| 17 | +```bash | ||
| 18 | +export INDUCTOR_ASCEND_FX_GRAPH_CACHE=/data/fx_graph_cache | ||
| 19 | +``` | ||
| 20 | + | ||
| 21 | +## 使用约束 | ||
| 22 | + | ||
| 23 | +- 需在导入`torch_npu`之前设置。 | ||
| 24 | +- 需确保目标目录可写。 | ||
| 25 | + | ||
| 26 | +## 支持的型号 | ||
| 27 | + | ||
| 28 | +- <term>Atlas 训练系列产品</term> | ||
| 29 | +- <term>Atlas A2 训练系列产品</term> | ||
| 30 | +- <term>Atlas A3 训练系列产品</term> | ||
| @@ -0,0 +1,33 @@ | |||
| 1 | +# INDUCTOR\_ASCEND\_LOG\_LEVEL | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可配置Inductor模块的日志级别,控制日志输出的详细程度。 | ||
| 6 | + | ||
| 7 | +- 默认值为`WARNING`,输出警告信息。 | ||
| 8 | +- 配置为`DEBUG`:最详细的调试信息。 | ||
| 9 | +- 配置为`INFO`:一般信息。 | ||
| 10 | +- 配置为`ERROR`:错误信息。 | ||
| 11 | +- 配置为`CRITICAL`:严重错误信息。 | ||
| 12 | + | ||
| 13 | + | ||
| 14 | +> [!NOTE] | ||
| 15 | +> | ||
| 16 | +> - 此环境变量在`torch_npu._inductor`模块初始化时读取并缓存,运行中修改不会生效。 | ||
| 17 | +> - **PyTorch社区:** 社区通过`torch._inductor.config.log_level`配置日志级别,无此环境变量。 | ||
| 18 | + | ||
| 19 | +## 配置示例 | ||
| 20 | + | ||
| 21 | +```bash | ||
| 22 | +export INDUCTOR_ASCEND_LOG_LEVEL=DEBUG | ||
| 23 | +``` | ||
| 24 | + | ||
| 25 | +## 使用约束 | ||
| 26 | + | ||
| 27 | +需在导入`torch_npu`之前设置。 | ||
| 28 | + | ||
| 29 | +## 支持的型号 | ||
| 30 | + | ||
| 31 | +- <term>Atlas 训练系列产品</term> | ||
| 32 | +- <term>Atlas A2 训练系列产品</term> | ||
| 33 | +- <term>Atlas A3 训练系列产品</term> | ||
| @@ -0,0 +1,33 @@ | |||
| 1 | +# INDUCTOR\_DVM\_ENABLE\_MATMUL\_FUSION | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可开启DVM MatMul template融合功能。开启后,Inductor在DVM模式(`TORCHINDUCTOR_NPU_BACKEND="dvm"`)下会将矩阵乘算子(`mm`、`bmm`、`addmm`、`baddbmm`)通过DVM template进行融合,生成高效的融合kernel,提升矩阵乘性能。 | ||
| 6 | + | ||
| 7 | +- 默认值为`0`,关闭DVM MatMul template融合。 | ||
| 8 | +- 配置为`1`:开启DVM MatMul template融合。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 此环境变量为`torch_npu`特有。 | ||
| 14 | +> - 开启后会注册DVM mm template lowering,将矩阵乘算子融合为DVM template kernel。 | ||
| 15 | +> - **PyTorch社区:** 社区无此环境变量。 | ||
| 16 | + | ||
| 17 | +## 配置示例 | ||
| 18 | + | ||
| 19 | +开启DVM MatMul template融合: | ||
| 20 | + | ||
| 21 | +```bash | ||
| 22 | +export INDUCTOR_DVM_ENABLE_MATMUL_FUSION=1 | ||
| 23 | +``` | ||
| 24 | + | ||
| 25 | +## 使用约束 | ||
| 26 | + | ||
| 27 | +- 需在导入`torch_npu`之前设置。 | ||
| 28 | +- 仅在DVM模式(`TORCHINDUCTOR_NPU_BACKEND="dvm"`)下生效。 | ||
| 29 | + | ||
| 30 | +## 支持的型号 | ||
| 31 | + | ||
| 32 | +- <term>Atlas A2 训练系列产品</term> | ||
| 33 | +- <term>Atlas A3 训练系列产品</term> | ||
| @@ -0,0 +1,33 @@ | |||
| 1 | +# NPU\_INDUCTOR\_DYNAMIC\_FX\_PASS | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制图优化FX pass是否使用动态shape(symbolic shape)模式。启用后,针对动态shape的图优化pass按符号shape语义执行;关闭后,这些pass回退到legacy的静态shape行为。 | ||
| 6 | + | ||
| 7 | +- 默认值为`1`,使用动态shape模式的FX pass。 | ||
| 8 | +- 配置为`0`、`false`或`off`:回退到静态shape行为。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 主要用于动态shape场景下FX pass行为异常时的回退开关。 | ||
| 14 | +> - 此功能为`torch_npu`特有。**PyTorch社区:** 社区无此环境变量。 | ||
| 15 | + | ||
| 16 | +## 配置示例 | ||
| 17 | + | ||
| 18 | +回退静态行为: | ||
| 19 | + | ||
| 20 | +```bash | ||
| 21 | +export NPU_INDUCTOR_DYNAMIC_FX_PASS=0 | ||
| 22 | +``` | ||
| 23 | + | ||
| 24 | +## 使用约束 | ||
| 25 | + | ||
| 26 | +需在导入`torch_npu`之前设置。 | ||
| 27 | + | ||
| 28 | +## 支持的型号 | ||
| 29 | + | ||
| 30 | +- <term>Atlas 训练系列产品</term> | ||
| 31 | +- <term>Atlas A2 训练系列产品</term> | ||
| 32 | +- <term>Atlas A3 训练系列产品</term> | ||
| 33 | +- <term>Ascend 950DT</term> | ||
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | ## 功能描述 | 3 | ## 功能描述 |
| 4 | 4 | ||
| 5 | -通过此环境变量可指定需要回退到PyTorch原生的算子列表。当某些算子在NPU后端执行出现问题或需要使用算子原生实现时,可通过此环境变量进行配置。 | 5 | +通过此环境变量可指定需要回退到PyTorch原生的算子列表。当某些算子在NPU上执行出现问题或需要使用算子原生实现时,可通过此环境变量进行配置。 |
| 6 | 6 | ||
| 7 | - 默认值为`None`,不进行算子回退。 | 7 | - 默认值为`None`,不进行算子回退。 |
| 8 | - 配置指定算子:以逗号分隔的算子名称列表(如`aten.div,aten.add.Tensor`),对应的算子将回退到PyTorch原生实现。 | 8 | - 配置指定算子:以逗号分隔的算子名称列表(如`aten.div,aten.add.Tensor`),对应的算子将回退到PyTorch原生实现。 |
| @@ -24,9 +24,13 @@ import os | |||
| 24 | os.environ["NPU_INDUCTOR_FALLBACK_LIST"] = "allfallback" | 24 | os.environ["NPU_INDUCTOR_FALLBACK_LIST"] = "allfallback" |
| 25 | ``` | 25 | ``` |
| 26 | 26 | ||
| 27 | +> [!NOTE] | ||
| 28 | +> | ||
| 29 | +> - **PyTorch社区:** 社区通过`torch._inductor.config.fallback_kernel_list`控制回退算子列表,`torch_npu`通过环境变量方式提供类似功能。 | ||
| 30 | + | ||
| 27 | ## 使用约束 | 31 | ## 使用约束 |
| 28 | 32 | ||
| 29 | -- 该环境变量仅在Inductor后端场景下生效。 | 33 | +- 该环境变量仅在图模式(Inductor)场景下生效。 |
| 30 | - 算子名称需使用完整的aten算子命名格式(如`aten.div.Tensor`、`aten.add.Tensor`)。 | 34 | - 算子名称需使用完整的aten算子命名格式(如`aten.div.Tensor`、`aten.add.Tensor`)。 |
| 31 | - 多算子使用逗号进行分隔,不支持空格。 | 35 | - 多算子使用逗号进行分隔,不支持空格。 |
| 32 | - 回退操作会导致相应算子失去NPU硬件加速能力,请谨慎使用。 | 36 | - 回退操作会导致相应算子失去NPU硬件加速能力,请谨慎使用。 |
| @@ -37,5 +41,4 @@ os.environ["NPU_INDUCTOR_FALLBACK_LIST"] = "allfallback" | |||
| 37 | - <term>Atlas 训练系列产品</term> | 41 | - <term>Atlas 训练系列产品</term> |
| 38 | - <term>Atlas A2 训练系列产品</term> | 42 | - <term>Atlas A2 训练系列产品</term> |
| 39 | - <term>Atlas A3 训练系列产品</term> | 43 | - <term>Atlas A3 训练系列产品</term> |
| 40 | -- <term>Atlas 800I A2 推理产品</term> | 44 | +- <term>Ascend 950DT</term>(仅支持Inductor后端编译器中的Triton模式和DVM模式) |
| 41 | -- <term>Ascend 950DT</term>(仅支持Inductor后端编译器中的Triton模式和DVM模式,不支持MLIR模式) | ||
| @@ -0,0 +1,30 @@ | |||
| 1 | +# PARALLEL\_SCHEDULER\_NODES\_MIN | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可配置并行调度器分组的 Minimum Scheduler Node Count(最小调度节点数)。当Cube组或Vector组的节点数小于内部阈值(该环境变量的1/5)时,并行调度器放弃本次分组重排,保持原有调度顺序,避免为很小的算子组引入额外调度开销。 | ||
| 6 | + | ||
| 7 | +- 默认值为`20`,组内节点数少于4时不分组。 | ||
| 8 | +- 设置正整数:按所配置值的1/5作为分组下限。 | ||
| 9 | + | ||
| 10 | +> [!NOTE] | ||
| 11 | +> | ||
| 12 | +> 此功能为`torch_npu`特有。**PyTorch社区:** 社区无此环境变量。 | ||
| 13 | + | ||
| 14 | +## 配置示例 | ||
| 15 | + | ||
| 16 | +```bash | ||
| 17 | +export ENABLE_PARALLEL_SCHEDULER=true | ||
| 18 | +export PARALLEL_SCHEDULER_NODES_MIN=40 | ||
| 19 | +``` | ||
| 20 | + | ||
| 21 | +## 使用约束 | ||
| 22 | + | ||
| 23 | +需在导入`torch_npu`之前设置,且仅在`ENABLE_PARALLEL_SCHEDULER=true`时生效。 | ||
| 24 | + | ||
| 25 | +## 支持的型号 | ||
| 26 | + | ||
| 27 | +- <term>Atlas 训练系列产品</term> | ||
| 28 | +- <term>Atlas A2 训练系列产品</term> | ||
| 29 | +- <term>Atlas A3 训练系列产品</term> | ||
| 30 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,41 @@ | |||
| 1 | +# SHUT\_DOWN\_FX\_PASS\_LIST | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可指定需要关闭的`torch_npu`图优化FX pass列表。列表中的pass在注册阶段即被跳过(不参与推理与训练的图优化),用于规避特定pass引入的问题或对照验证pass效果。 | ||
| 6 | + | ||
| 7 | +- 默认值未配置,仅内置默认关闭的pass保持关闭(如`fused_matmul_relu_pass`等,由对应config开关决定)。 | ||
| 8 | +- 逗号分隔的pass名称列表:列表中的pass不注册。 | ||
| 9 | +- 配置为`all`:关闭全部自定义FX pass。 | ||
| 10 | + | ||
| 11 | + | ||
| 12 | +> [!NOTE] | ||
| 13 | +> | ||
| 14 | +> - pass名称为注册时的函数名(如`fused_matmul_relu_pass`、`multi_slice_concat_pass`),可通过`torch_npu`日志或源码`torch_npu/_inductor/fx_passes/ascend_custom_passes/`确认。 | ||
| 15 | +> - 该变量在默认关闭列表的基础上追加,不会打开已默认关闭的pass。 | ||
| 16 | +> - 此功能为`torch_npu`特有。**PyTorch社区:** 社区无此环境变量。 | ||
| 17 | + | ||
| 18 | +## 配置示例 | ||
| 19 | + | ||
| 20 | +关闭指定pass: | ||
| 21 | + | ||
| 22 | +```bash | ||
| 23 | +export SHUT_DOWN_FX_PASS_LIST="fused_matmul_relu_pass,multi_slice_concat_pass" | ||
| 24 | +``` | ||
| 25 | + | ||
| 26 | +关闭全部自定义pass: | ||
| 27 | + | ||
| 28 | +```bash | ||
| 29 | +export SHUT_DOWN_FX_PASS_LIST="all" | ||
| 30 | +``` | ||
| 31 | + | ||
| 32 | +## 使用约束 | ||
| 33 | + | ||
| 34 | +需在导入`torch_npu`之前设置。 | ||
| 35 | + | ||
| 36 | +## 支持的型号 | ||
| 37 | + | ||
| 38 | +- <term>Atlas 训练系列产品</term> | ||
| 39 | +- <term>Atlas A2 训练系列产品</term> | ||
| 40 | +- <term>Atlas A3 训练系列产品</term> | ||
| 41 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,32 @@ | |||
| 1 | +# TORCHINDUCTOR\_CACHE\_DIR | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可配置Inductor编译缓存的目录路径。设置后,Inductor会将编译生成的kernel缓存到指定目录,便于后续复用,加速后续编译过程。 | ||
| 6 | + | ||
| 7 | +- 默认值未配置,使用默认缓存目录(通常为系统临时目录下的`torchinductor_<username>`)。 | ||
| 8 | +- 设置路径:缓存编译产物到指定目录。 | ||
| 9 | + | ||
| 10 | +> [!NOTE] | ||
| 11 | +> | ||
| 12 | +> - 此环境变量在全部模式(`TORCHINDUCTOR_NPU_BACKEND="default"`/`"dvm"`/`"ascendc"`等)下均生效。 | ||
| 13 | +> - 设置独立的缓存目录便于多用户共享缓存或持久化缓存。 | ||
| 14 | +> - **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_CACHE_DIR`,行为一致,用于指定Inductor编译缓存目录。 | ||
| 15 | + | ||
| 16 | +## 配置示例 | ||
| 17 | + | ||
| 18 | +```bash | ||
| 19 | +export TORCHINDUCTOR_CACHE_DIR=/tmp/torchinductor_cache | ||
| 20 | +``` | ||
| 21 | + | ||
| 22 | +## 使用约束 | ||
| 23 | + | ||
| 24 | +- 需在导入`torch_npu`之前设置。 | ||
| 25 | +- 需确保目标目录可写且有足够的磁盘空间。 | ||
| 26 | + | ||
| 27 | +## 支持的型号 | ||
| 28 | + | ||
| 29 | +- <term>Atlas 训练系列产品</term> | ||
| 30 | +- <term>Atlas A2 训练系列产品</term> | ||
| 31 | +- <term>Atlas A3 训练系列产品</term> | ||
| 32 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,32 @@ | |||
| 1 | +# TORCHINDUCTOR\_CATLASS\_ENABLED\_OPS | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可配置Catlass模板库支持的矩阵乘类型算子列表。设置后,Inductor将对指定类型的matmul算子尝试使用Catlass模板库进行模板调优。 | ||
| 6 | + | ||
| 7 | +- 默认值为`"mm,addmm,bmm"`,即对`mm`、`addmm`、`bmm`算子启用Catlass。 | ||
| 8 | +- 可添加`grouped_mm`扩展支持范围。 | ||
| 9 | + | ||
| 10 | +> [!NOTE] | ||
| 11 | +> | ||
| 12 | +> - 此环境变量以逗号分隔算子名称,不支持空格。 | ||
| 13 | +> - **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_CUTLASS_ENABLED_OPS`,行为一致,默认值为`"mm,addmm,bmm"`。 | ||
| 14 | + | ||
| 15 | +## 配置示例 | ||
| 16 | + | ||
| 17 | +扩展支持grouped_mm: | ||
| 18 | + | ||
| 19 | +```bash | ||
| 20 | +export TORCHINDUCTOR_CATLASS_ENABLED_OPS="mm,addmm,bmm,grouped_mm" | ||
| 21 | +``` | ||
| 22 | + | ||
| 23 | +## 使用约束 | ||
| 24 | + | ||
| 25 | +- 需在导入`torch_npu`之前设置。 | ||
| 26 | +- 需同时配置`TORCHINDUCTOR_NPU_CATLASS_DIR`(指定Catlass模板库路径)和`TORCHINDUCTOR_MAX_AUTOTUNE=1`时生效。 | ||
| 27 | + | ||
| 28 | +## 支持的型号 | ||
| 29 | + | ||
| 30 | +- <term>Atlas A2 训练系列产品</term> | ||
| 31 | +- <term>Atlas A3 训练系列产品</term> | ||
| 32 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,31 @@ | |||
| 1 | +# TORCHINDUCTOR\_COMPILE\_THREADS | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可配置并发编译的进程数量。Inductor在编译时会使用多个进程并行编译kernel,以加速编译过程。 | ||
| 6 | + | ||
| 7 | +- 默认值为`32`,使用32个进程进行并发编译。 | ||
| 8 | +- 配置为正整数:使用指定的进程数进行并发编译。 | ||
| 9 | + | ||
| 10 | +> [!NOTE] | ||
| 11 | +> | ||
| 12 | +> - 增大线程数可加速编译,但会增加内存占用。 | ||
| 13 | +> - 建议不超过机器CPU核心数。 | ||
| 14 | +> - **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_COMPILE_THREADS`,行为一致,默认值为`32`。 | ||
| 15 | + | ||
| 16 | +## 配置示例 | ||
| 17 | + | ||
| 18 | +```bash | ||
| 19 | +export TORCHINDUCTOR_COMPILE_THREADS=16 | ||
| 20 | +``` | ||
| 21 | + | ||
| 22 | +## 使用约束 | ||
| 23 | + | ||
| 24 | +需在导入`torch_npu`之前设置。 | ||
| 25 | + | ||
| 26 | +## 支持的型号 | ||
| 27 | + | ||
| 28 | +- <term>Atlas 训练系列产品</term> | ||
| 29 | +- <term>Atlas A2 训练系列产品</term> | ||
| 30 | +- <term>Atlas A3 训练系列产品</term> | ||
| 31 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,31 @@ | |||
| 1 | +# TORCHINDUCTOR\_ENABLE\_FAST\_GELU | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制GELU激活函数的decomposition实现。启用后,`aten.gelu`在图模式下降解为tanh近似公式(`0.5*x*(1+tanh(√(2/π)*(x+0.044715*x³)))`的sigmoid等价形式),用乘加与sigmoid替代`erf`算子,提升kernel执行性能。 | ||
| 6 | + | ||
| 7 | +- 默认值为`0`,使用默认decomposition(含`erf`)。 | ||
| 8 | +- 配置为`1`:GELU降解为tanh近似(fast gelu)实现。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - tanh近似与`erf`精确实现存在数值差异,对精度敏感的训练任务建议先验证。 | ||
| 14 | +> - 此功能为`torch_npu`特有。**PyTorch社区:** 社区通过`torch._inductor.config`的激活函数decomposition控制,无此环境变量。 | ||
| 15 | + | ||
| 16 | +## 配置示例 | ||
| 17 | + | ||
| 18 | +```bash | ||
| 19 | +export TORCHINDUCTOR_ENABLE_FAST_GELU=1 | ||
| 20 | +``` | ||
| 21 | + | ||
| 22 | +## 使用约束 | ||
| 23 | + | ||
| 24 | +需在导入`torch_npu`之前设置。 | ||
| 25 | + | ||
| 26 | +## 支持的型号 | ||
| 27 | + | ||
| 28 | +- <term>Atlas 训练系列产品</term> | ||
| 29 | +- <term>Atlas A2 训练系列产品</term> | ||
| 30 | +- <term>Atlas A3 训练系列产品</term> | ||
| 31 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,29 @@ | |||
| 1 | +# TORCHINDUCTOR\_ENABLE\_LAYERNORM\_V4 | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制是否启用LayerNormV4专属实现。启用后,宽度为512的LayerNorm在Welford路径下使用专属的LayerNormV4实现:归约epilogue融合进Welford kernel后,LayerNormV4更快且避免了SIMD归约与SIMT后处理的切分。 | ||
| 6 | + | ||
| 7 | +- 默认值为`0`,不启用LayerNormV4实现。 | ||
| 8 | +- 配置为`1`:启用LayerNormV4实现。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> 此功能为`torch_npu`特有。**PyTorch社区:** 社区无此环境变量。 | ||
| 14 | + | ||
| 15 | +## 配置示例 | ||
| 16 | + | ||
| 17 | +```bash | ||
| 18 | +export TORCHINDUCTOR_ENABLE_WELFORD=1 | ||
| 19 | +export TORCHINDUCTOR_ENABLE_LAYERNORM_V4=1 | ||
| 20 | +``` | ||
| 21 | + | ||
| 22 | +## 使用约束 | ||
| 23 | + | ||
| 24 | +需在导入`torch_npu`之前设置。生效需同时满足:A5系列芯片、`TORCHINDUCTOR_ENABLE_WELFORD=1`、输入dtype为`float16`或`bfloat16`,且归一化维度为512。 | ||
| 25 | + | ||
| 26 | +## 支持的型号 | ||
| 27 | + | ||
| 28 | +- <term>Atlas A3 训练系列产品</term> | ||
| 29 | +- <term>Ascend 950DT</term> | ||
| @@ -1,35 +0,0 @@ | |||
| 1 | -# (beta)TORCHINDUCTOR\_ENABLE\_MFUSION | ||
| 2 | - | ||
| 3 | -## 功能描述 | ||
| 4 | - | ||
| 5 | -通过此环境变量可控制是否启用MFusion融合优化功能。MFusion是一种针对NPU平台的图融合优化技术,能够自动融合多个算子为单一kernel,从而减少数据传输开销,提升整体计算性能。 | ||
| 6 | - | ||
| 7 | -- 配置为“0”或未配置时:禁用MFusion融合优化。 | ||
| 8 | -- 配置为“1”时:启用MFusion融合优化。 | ||
| 9 | - | ||
| 10 | -此环境变量默认配置为“0”。 | ||
| 11 | - | ||
| 12 | -## 配置示例 | ||
| 13 | - | ||
| 14 | -禁用MFusion(默认行为): | ||
| 15 | - | ||
| 16 | -```bash | ||
| 17 | -export TORCHINDUCTOR_ENABLE_MFUSION="0" | ||
| 18 | -``` | ||
| 19 | - | ||
| 20 | -启用MFusion: | ||
| 21 | - | ||
| 22 | -```bash | ||
| 23 | -export TORCHINDUCTOR_ENABLE_MFUSION="1" | ||
| 24 | -``` | ||
| 25 | - | ||
| 26 | -## 使用约束 | ||
| 27 | - | ||
| 28 | -- 该功能仅在torch.compile图编译后端为“Inductor”生效。 | ||
| 29 | -- 该功能仅在PyTorch2.7.1和2.9.0版本生效。 | ||
| 30 | - | ||
| 31 | -## 支持的型号 | ||
| 32 | - | ||
| 33 | -- <term>Atlas 训练系列产品</term> | ||
| 34 | -- <term>Atlas A2 训练系列产品</term> | ||
| 35 | -- <term>Atlas A3 训练系列产品</term> | ||
| @@ -0,0 +1,32 @@ | |||
| 1 | +# TORCHINDUCTOR\_ENABLE\_WELFORD | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制是否启用Welford算法计算方差与均值类归约。启用后,`torch.var_mean`、`torch.var`、`torch.std`等算子在Triton模式(`TORCHINDUCTOR_NPU_BACKEND="default"`)下使用Welford单遍算法lowering(SIMT Welford),将归约epilogue融合进Welford kernel,减少中间结果落盘,提升数值稳定性与性能。 | ||
| 6 | + | ||
| 7 | +- 默认值为`0`,使用默认的两步方差(two-step variance)或逐项展开路径。 | ||
| 8 | +- 配置为`1`:启用Welford lowering。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 归约元素较少(小于`unroll_reductions_threshold`)时仍会走两步方差展开路径,不受此变量影响。 | ||
| 14 | +> - 此功能为`torch_npu`特有。**PyTorch社区:** 社区无此环境变量,社区Inductor默认展开方差计算。 | ||
| 15 | + | ||
| 16 | +## 配置示例 | ||
| 17 | + | ||
| 18 | +```bash | ||
| 19 | +export TORCHINDUCTOR_ENABLE_WELFORD=1 | ||
| 20 | +``` | ||
| 21 | + | ||
| 22 | +## 使用约束 | ||
| 23 | + | ||
| 24 | +- 需在导入`torch_npu`之前设置。 | ||
| 25 | +- 仅在Triton模式(`TORCHINDUCTOR_NPU_BACKEND="default"`)下生效。 | ||
| 26 | + | ||
| 27 | +## 支持的型号 | ||
| 28 | + | ||
| 29 | +- <term>Atlas 训练系列产品</term> | ||
| 30 | +- <term>Atlas A2 训练系列产品</term> | ||
| 31 | +- <term>Atlas A3 训练系列产品</term> | ||
| 32 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,34 @@ | |||
| 1 | +# TORCHINDUCTOR\_MAX\_AUTOTUNE | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制是否开启max autotune功能。开启后,Inductor会对候选config进行更全面的自动调优,以获取最优的kernel配置。 | ||
| 6 | + | ||
| 7 | +- 默认值为`0`,关闭max autotune。 | ||
| 8 | +- 配置为`1`:开启max autotune。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 开启max autotune会增加编译时间,但可能获得更优的kernel性能。 | ||
| 14 | +> - 矩阵乘算子可调优的候选实现由`TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDS`控制。 | ||
| 15 | +> - **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_MAX_AUTOTUNE`,行为一致,默认值为`0`。 | ||
| 16 | + | ||
| 17 | +## 配置示例 | ||
| 18 | + | ||
| 19 | +开启max autotune: | ||
| 20 | + | ||
| 21 | +```bash | ||
| 22 | +export TORCHINDUCTOR_MAX_AUTOTUNE=1 | ||
| 23 | +``` | ||
| 24 | + | ||
| 25 | +## 使用约束 | ||
| 26 | + | ||
| 27 | +需在导入`torch_npu`之前设置。 | ||
| 28 | + | ||
| 29 | +## 支持的型号 | ||
| 30 | + | ||
| 31 | +- <term>Atlas 训练系列产品</term> | ||
| 32 | +- <term>Atlas A2 训练系列产品</term> | ||
| 33 | +- <term>Atlas A3 训练系列产品</term> | ||
| 34 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,34 @@ | |||
| 1 | +# TORCHINDUCTOR\_MAX\_AUTOTUNE\_GEMM\_BACKENDS | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可配置max autotune过程中矩阵乘(matmul)类算子参与调优的候选实现列表。此处的"实现"指matmul kernel的生成来源(如ATen算子库、Triton模板、Catlass模板),不同于`TORCHINDUCTOR_NPU_BACKEND`配置的编译模式(Triton、DVM等)。仅在`TORCHINDUCTOR_MAX_AUTOTUNE=1`时生效。 | ||
| 6 | + | ||
| 7 | +- 默认值为`"ATEN,TRITON,CPP"`,即尝试ATen算子库、Triton模板和CPP模板三类候选实现。 | ||
| 8 | +- 若需尝试Catlass模板,请在配置中添加`"CATLASS"`。 | ||
| 9 | + | ||
| 10 | +> [!NOTE] | ||
| 11 | +> | ||
| 12 | +> - 此环境变量以逗号分隔实现名称,不支持空格。 | ||
| 13 | +> - 添加`"CATLASS"`后,需同时配置`TORCHINDUCTOR_NPU_CATLASS_DIR`指定Catlass模板库路径。 | ||
| 14 | +> - **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDS`,行为一致,默认值为`"ATEN,TRITON,CPP"`。 | ||
| 15 | + | ||
| 16 | +## 配置示例 | ||
| 17 | + | ||
| 18 | +尝试CATLASS和ATen候选实现: | ||
| 19 | + | ||
| 20 | +```bash | ||
| 21 | +export TORCHINDUCTOR_MAX_AUTOTUNE=1 | ||
| 22 | +export TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDS="CATLASS,ATEN" | ||
| 23 | +``` | ||
| 24 | + | ||
| 25 | +## 使用约束 | ||
| 26 | + | ||
| 27 | +- 需在导入`torch_npu`之前设置。 | ||
| 28 | +- 仅在`TORCHINDUCTOR_MAX_AUTOTUNE=1`时生效。 | ||
| 29 | + | ||
| 30 | +## 支持的型号 | ||
| 31 | + | ||
| 32 | +- <term>Atlas A2 训练系列产品</term> | ||
| 33 | +- <term>Atlas A3 训练系列产品</term> | ||
| 34 | +- <term>Ascend 950DT</term> | ||
| @@ -2,14 +2,11 @@ | |||
| 2 | 2 | ||
| 3 | ## 功能描述 | 3 | ## 功能描述 |
| 4 | 4 | ||
| 5 | -通过此环境变量可配置图模式(Inductor)下的后端优化策略,支持在Triton、MLIR、DVM、Ascend C等模式之间切换。 | 5 | +通过此环境变量可配置图模式(Inductor)下的编译模式,支持在Triton、DVM、Ascend C等模式之间切换。 |
| 6 | 6 | ||
| 7 | -- 配置为“default”或未配置时:使用默认的Triton模式。 | 7 | +- 默认值为“default”,使用默认的Triton模式。 |
| 8 | -- 配置为“mlir”时:使用MLIR模式。 | 8 | +- 配置为“dvm”:使用DVM模式。 |
| 9 | -- 配置为“dvm”时:使用DVM模式。 | 9 | +- 配置为“ascendc”:使用Ascend C模式。 |
| 10 | -- 配置为“ascendc”时:使用Ascend C模式。 | ||
| 11 | - | ||
| 12 | -此环境变量默认配置为“default”。 | ||
| 13 | 10 | ||
| 14 | ## 配置示例 | 11 | ## 配置示例 |
| 15 | 12 | ||
| @@ -19,12 +16,6 @@ | |||
| 19 | export TORCHINDUCTOR_NPU_BACKEND="default" | 16 | export TORCHINDUCTOR_NPU_BACKEND="default" |
| 20 | ``` | 17 | ``` |
| 21 | 18 | ||
| 22 | -使用MLIR模式: | ||
| 23 | - | ||
| 24 | -```bash | ||
| 25 | -export TORCHINDUCTOR_NPU_BACKEND="mlir" | ||
| 26 | -``` | ||
| 27 | - | ||
| 28 | 使用DVM模式: | 19 | 使用DVM模式: |
| 29 | 20 | ||
| 30 | ```bash | 21 | ```bash |
| @@ -37,15 +28,19 @@ export TORCHINDUCTOR_NPU_BACKEND="dvm" | |||
| 37 | export TORCHINDUCTOR_NPU_BACKEND="ascendc" | 28 | export TORCHINDUCTOR_NPU_BACKEND="ascendc" |
| 38 | ``` | 29 | ``` |
| 39 | 30 | ||
| 31 | +> [!NOTE] | ||
| 32 | +> | ||
| 33 | +> - 此环境变量为`torch_npu`特有,用于在NPU上选择Inductor编译模式。 | ||
| 34 | +> - PyTorch社区通过`torch._inductor.config`配置后端行为,无此环境变量。 | ||
| 35 | + | ||
| 40 | ## 使用约束 | 36 | ## 使用约束 |
| 41 | 37 | ||
| 42 | -此环境变量必须在`import torch`之前设置,否则不生效。 | 38 | +- 此环境变量在首次调用`torch.compile`前设置即可(后端在首次编译时惰性加载,`import torch`/`import torch_npu`之后设置同样生效)。 |
| 43 | - | 39 | +- Ascend C模式需PyTorch 2.9.0及以上版本支持。 |
| 44 | -Ascend C模式需PyTorch 2.9.0及以上版本支持。 | ||
| 45 | 40 | ||
| 46 | ## 支持的型号 | 41 | ## 支持的型号 |
| 47 | 42 | ||
| 48 | - <term>Atlas 训练系列产品</term> | 43 | - <term>Atlas 训练系列产品</term> |
| 49 | - <term>Atlas A2 训练系列产品</term> | 44 | - <term>Atlas A2 训练系列产品</term> |
| 50 | - <term>Atlas A3 训练系列产品</term> | 45 | - <term>Atlas A3 训练系列产品</term> |
| 51 | -- <term>Ascend 950DT</term>(仅支持Inductor后端编译器中的Triton模式、DVM模式和Ascend C模式,不支持MLIR模式) | 46 | +- <term>Ascend 950DT</term>(仅支持Inductor后端编译器中的Triton模式、DVM模式和Ascend C模式) |
| @@ -0,0 +1,31 @@ | |||
| 1 | +# TORCHINDUCTOR\_NPU\_CATLASS\_DIR | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可配置Catlass模板库的路径。Catlass是NPU平台上的矩阵乘模板加速库,Inductor在autotune时可通过Catlass模板库对matmul类算子进行模板调优。 | ||
| 6 | + | ||
| 7 | +- 默认值未配置,使用`torch`安装目录下`../third_party/catlass`路径(源码编译场景),若该路径不存在则不加载Catlass模板库。 | ||
| 8 | +- 设置有效路径:从配置的路径加载Catlass模板库。 | ||
| 9 | + | ||
| 10 | +> [!NOTE] | ||
| 11 | +> | ||
| 12 | +> - 若路径配置错误,会有WARNING信息提示,并自动跳过Catlass模板库。 | ||
| 13 | +> - 使用Catlass模板库需同时配置`TORCHINDUCTOR_MAX_AUTOTUNE=1`和`TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDS`包含`"CATLASS"`。 | ||
| 14 | +> - **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_CUTLASS_DIR`,用于配置CUTLASS(CUDA Templates for Linear Algebra Subroutines)库路径,`torch_npu`使用Catlass替代。 | ||
| 15 | + | ||
| 16 | +## 配置示例 | ||
| 17 | + | ||
| 18 | +```bash | ||
| 19 | +export TORCHINDUCTOR_NPU_CATLASS_DIR="/path/to/catlass/dir" | ||
| 20 | +``` | ||
| 21 | + | ||
| 22 | +## 使用约束 | ||
| 23 | + | ||
| 24 | +- 需在导入`torch_npu`之前设置。 | ||
| 25 | +- 需确保路径有效且Catlass模板库已正确安装。 | ||
| 26 | + | ||
| 27 | +## 支持的型号 | ||
| 28 | + | ||
| 29 | +- <term>Atlas A2 训练系列产品</term> | ||
| 30 | +- <term>Atlas A3 训练系列产品</term> | ||
| 31 | +- <term>Ascend 950DT</term> | ||
Adocs/zh/api/environment_variable/inductor/TORCHINDUCTOR_PROFILE_WITH_DO_BENCH_USING_PROFILING.md+34-0
| @@ -0,0 +1,34 @@ | |||
| 1 | +# TORCHINDUCTOR\_PROFILE\_WITH\_DO\_BENCH\_USING\_PROFILING | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制autotune过程中是否使用profiling进行性能测量。开启后,Inductor会使用profiling获取更精确的kernel执行时间,而非基于事件计时的估算。 | ||
| 6 | + | ||
| 7 | +- 默认值为`0`,不使用profiling,基于事件计时估算性能。 | ||
| 8 | +- 配置为`1`:使用profiling测量kernel执行时间。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 使用profiling可获得更精确的调优结果,但会增加autotune的时间开销。 | ||
| 14 | +> - **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_PROFILE_WITH_DO_BENCH_USING_PROFILING`,行为一致,默认值为`0`。 | ||
| 15 | + | ||
| 16 | +## 配置示例 | ||
| 17 | + | ||
| 18 | +开启基于profiling的autotune: | ||
| 19 | + | ||
| 20 | +```bash | ||
| 21 | +export TORCHINDUCTOR_MAX_AUTOTUNE=1 | ||
| 22 | +export TORCHINDUCTOR_PROFILE_WITH_DO_BENCH_USING_PROFILING=1 | ||
| 23 | +``` | ||
| 24 | + | ||
| 25 | +## 使用约束 | ||
| 26 | + | ||
| 27 | +- 需在导入`torch_npu`之前设置。 | ||
| 28 | +- 仅在`TORCHINDUCTOR_MAX_AUTOTUNE=1`时生效。 | ||
| 29 | + | ||
| 30 | +## 支持的型号 | ||
| 31 | + | ||
| 32 | +- <term>Atlas A2 训练系列产品</term> | ||
| 33 | +- <term>Atlas A3 训练系列产品</term> | ||
| 34 | +- <term>Ascend 950DT</term> | ||
| @@ -1,36 +0,0 @@ | |||
| 1 | -# TORCHINDUCTOR\_USE\_AKG | ||
| 2 | - | ||
| 3 | -## 功能描述 | ||
| 4 | - | ||
| 5 | -通过此环境变量可配置torch.compile图模式(Inductor)下MLIR(Multi-Level Intermediate Representation)模式启用AKG(Auto Kernel Generator)后端优化。AKG基于Affine Dialect进行融合切分等调度优化,提升融合能力,降低调度和执行开销。 | ||
| 6 | - | ||
| 7 | -- 未配置或配置为`0`时:在启用MLIR的情况下,继续使用默认的MLIR优化流程。 | ||
| 8 | -- 配置为`1`时:在启用MLIR的情况下,使用AKG编译优化。 | ||
| 9 | - | ||
| 10 | -此环境变量默认配置为`0`。 | ||
| 11 | - | ||
| 12 | -## 配置示例 | ||
| 13 | - | ||
| 14 | -在启用MLIR后,再开启AKG: | ||
| 15 | - | ||
| 16 | -```bash | ||
| 17 | -export TORCHINDUCTOR_NPU_BACKEND="mlir" | ||
| 18 | -export TORCHINDUCTOR_USE_AKG=1 | ||
| 19 | -``` | ||
| 20 | - | ||
| 21 | -保持MLIR默认优化流程: | ||
| 22 | - | ||
| 23 | -```bash | ||
| 24 | -export TORCHINDUCTOR_NPU_BACKEND="mlir" | ||
| 25 | -export TORCHINDUCTOR_USE_AKG=0 | ||
| 26 | -``` | ||
| 27 | - | ||
| 28 | -## 使用约束 | ||
| 29 | - | ||
| 30 | -该环境变量仅在torch.compile图模式(Inductor)的MLIR模式下生效。 | ||
| 31 | - | ||
| 32 | -## 支持的型号 | ||
| 33 | - | ||
| 34 | -- <term>Atlas 训练系列产品</term> | ||
| 35 | -- <term>Atlas A2 训练系列产品</term> | ||
| 36 | -- <term>Atlas A3 训练系列产品</term> | ||
| @@ -0,0 +1,33 @@ | |||
| 1 | +# TORCHINDUCTOR\_WORKER\_LOGPATH | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可指定Inductor worker子进程的日志输出路径。Inductor在编译kernel时会使用子进程进行并行编译,此环境变量控制子进程日志文件的保存位置。 | ||
| 6 | + | ||
| 7 | +- 默认值未设置,不指定日志文件路径,worker子进程日志输出行为由`TORCHINDUCTOR_WORKER_SUPPRESS_LOGGING`决定。 | ||
| 8 | +- 设置路径:worker子进程日志保存到指定位置。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 此环境变量在`INDUCTOR_ASCEND_DEBUG=1`或`config.debug`开启时,会被重定向到终端输出(便于实时观察编译日志)。 | ||
| 14 | +> - 需确保目标路径可写。 | ||
| 15 | +> - **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_WORKER_LOGPATH`,行为一致,用于指定Inductor worker子进程的日志路径。 | ||
| 16 | + | ||
| 17 | +## 配置示例 | ||
| 18 | + | ||
| 19 | +```bash | ||
| 20 | +export TORCHINDUCTOR_WORKER_LOGPATH=/tmp/inductor_worker_logs | ||
| 21 | +``` | ||
| 22 | + | ||
| 23 | +## 使用约束 | ||
| 24 | + | ||
| 25 | +- 需在导入`torch_npu`之前设置。 | ||
| 26 | +- 需确保目标目录可写。 | ||
| 27 | + | ||
| 28 | +## 支持的型号 | ||
| 29 | + | ||
| 30 | +- <term>Atlas 训练系列产品</term> | ||
| 31 | +- <term>Atlas A2 训练系列产品</term> | ||
| 32 | +- <term>Atlas A3 训练系列产品</term> | ||
| 33 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,35 @@ | |||
| 1 | +# TORCHINDUCTOR\_WORKER\_SUPPRESS\_LOGGING | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可设置是否抑制Inductor worker子进程的日志输出。Inductor在编译kernel时会使用子进程进行并行编译,开启抑制后,子进程的日志输出将被重定向到/dev/null。 | ||
| 6 | + | ||
| 7 | +- 默认值为`True`(抑制),子进程日志被重定向到/dev/null。 | ||
| 8 | +- 配置为`0`或空字符串:不抑制,worker子进程日志正常输出。 | ||
| 9 | +- 配置为`1`或其他非`0`值:抑制worker子进程的日志输出。 | ||
| 10 | + | ||
| 11 | + | ||
| 12 | +> [!NOTE] | ||
| 13 | +> | ||
| 14 | +> - 在`INDUCTOR_ASCEND_DEBUG=1`或`config.debug`开启时,若未显式设置此变量,会强制不抑制(便于调试)。 | ||
| 15 | +> - 抑制worker日志可减少终端输出噪声,但会丢失autotune过程中的调试信息。 | ||
| 16 | +> - **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_WORKER_SUPPRESS_LOGGING`,行为一致,用于控制Inductor worker子进程的日志抑制。 | ||
| 17 | + | ||
| 18 | +## 配置示例 | ||
| 19 | + | ||
| 20 | +不抑制worker日志(调试时查看子进程输出): | ||
| 21 | + | ||
| 22 | +```bash | ||
| 23 | +export TORCHINDUCTOR_WORKER_SUPPRESS_LOGGING=0 | ||
| 24 | +``` | ||
| 25 | + | ||
| 26 | +## 使用约束 | ||
| 27 | + | ||
| 28 | +需在导入`torch_npu`之前设置。 | ||
| 29 | + | ||
| 30 | +## 支持的型号 | ||
| 31 | + | ||
| 32 | +- <term>Atlas 训练系列产品</term> | ||
| 33 | +- <term>Atlas A2 训练系列产品</term> | ||
| 34 | +- <term>Atlas A3 训练系列产品</term> | ||
| 35 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,30 @@ | |||
| 1 | +# TORCHNPU\_PRECOMPILE\_THREADS | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可配置`torch_npu` Inductor的预编译线程数。预编译线程用于加速图编译过程中的并行编译任务。 | ||
| 6 | + | ||
| 7 | +- 默认值为`max(os.cpu_count() // max(compile_threads, 2), 32)`(且不低于32),其中`compile_threads`由`TORCHINDUCTOR_COMPILE_THREADS`控制。 | ||
| 8 | +- 设置正整数:使用指定的线程数;设置为非法值(非整数)时程序会记录异常日志并退出。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 此环境变量在`torch_npu._inductor`模块初始化时读取。 | ||
| 14 | +> - **PyTorch社区:** 社区对应环境变量`TORCHINDUCTOR_COMPILE_THREADS`,用于控制编译线程数,`torch_npu`在此基础上扩展了预编译线程数控制。 | ||
| 15 | + | ||
| 16 | +## 配置示例 | ||
| 17 | + | ||
| 18 | +```bash | ||
| 19 | +export TORCHNPU_PRECOMPILE_THREADS=16 | ||
| 20 | +``` | ||
| 21 | + | ||
| 22 | +## 使用约束 | ||
| 23 | + | ||
| 24 | +需在导入`torch_npu`之前设置。 | ||
| 25 | + | ||
| 26 | +## 支持的型号 | ||
| 27 | + | ||
| 28 | +- <term>Atlas 训练系列产品</term> | ||
| 29 | +- <term>Atlas A2 训练系列产品</term> | ||
| 30 | +- <term>Atlas A3 训练系列产品</term> | ||
| @@ -0,0 +1,41 @@ | |||
| 1 | +# TORCH\_CACHING\_PRECOMPILE | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可开启自动缓存预编译(automatic caching precompile)实验性功能。开启后,`torch.compile`会在编译过程中自动将Dynamo缓存条目与后端编译产物序列化到全局Precompile Cache中,并在后续运行中自动加载复用,从而跳过重复编译,加速后续编译过程。 | ||
| 6 | + | ||
| 7 | +- 默认值为`0`,关闭自动缓存预编译。 | ||
| 8 | +- 配置为`1`:开启自动缓存预编译。 | ||
| 9 | + | ||
| 10 | +开启后,系统会进行以下处理: | ||
| 11 | + | ||
| 12 | +- **编译时自动加载**:`torch.compile`调用时自动从DynamoCache查找并加载已有的编译缓存。 | ||
| 13 | +- **编译后自动保存**:编译完成后自动将Dynamo缓存条目与后端产物(如AOTAutograd cache)写入DynamoCache。 | ||
| 14 | +- **Guard过滤**:自动丢弃不可序列化的guard(如`ID_MATCH`、`CLOSURE_MATCH`、`WEAKREF_ALIVE`、`DICT_VERSION`),以确保缓存可跨进程复用。 | ||
| 15 | +- **与`torch.compiler.save_cache_artifacts()`配合**:调用`save_cache_artifacts()`时会将`PrecompileContext`中的缓存条目一并保存。 | ||
| 16 | + | ||
| 17 | +> [!NOTE] | ||
| 18 | +> | ||
| 19 | +> - 此功能为实验性功能,适用于需要多次编译相同模型的场景(如训练多轮次),可显著减少后续编译时间。 | ||
| 20 | +> - 开启后会丢弃部分guard,可能导致缓存命中条件放宽,使用时需关注编译结果的正确性。 | ||
| 21 | +> - 建议在与`torch.compiler.save_cache_artifacts()`/`load_cache_artifacts()`配合使用时开启。 | ||
| 22 | +> - **PyTorch社区:** 社区对应环境变量`TORCH_CACHING_PRECOMPILE`,行为一致,用于开启Dynamo自动缓存预编译功能,默认值为`0`。 | ||
| 23 | + | ||
| 24 | +## 配置示例 | ||
| 25 | + | ||
| 26 | +开启自动缓存预编译: | ||
| 27 | + | ||
| 28 | +```bash | ||
| 29 | +export TORCH_CACHING_PRECOMPILE=1 | ||
| 30 | +``` | ||
| 31 | + | ||
| 32 | +## 使用约束 | ||
| 33 | + | ||
| 34 | +需在进程启动前配置,进程运行过程中修改不会生效。 | ||
| 35 | + | ||
| 36 | +## 支持的型号 | ||
| 37 | + | ||
| 38 | +- <term>Atlas 训练系列产品</term> | ||
| 39 | +- <term>Atlas A2 训练系列产品</term> | ||
| 40 | +- <term>Atlas A3 训练系列产品</term> | ||
| 41 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,32 @@ | |||
| 1 | +# TORCH\_COMPILE\_DEBUG | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可开启`torch.compile`的调试模式。开启后,系统会在编译过程中导出FX图、codegen输出等调试信息,便于开发者分析编译流程和定位问题。 | ||
| 6 | + | ||
| 7 | +- 默认值为`0`,不开启调试模式。 | ||
| 8 | +- 配置为`1`:开启调试模式,导出Dynamo输出图、codegen生成的kernel代码等。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +> [!NOTE] | ||
| 12 | +> | ||
| 13 | +> - 开启调试模式后,编译产物(FX图、output_code.py等)会保存到`torch_compile_debug/`目录下。 | ||
| 14 | +> - 调试模式会产生额外的I/O开销,建议仅在问题定位时使用。 | ||
| 15 | +> - **PyTorch社区:** 社区对应环境变量`TORCH_COMPILE_DEBUG`,行为一致,用于导出Inductor编译产物辅助调试。 | ||
| 16 | + | ||
| 17 | +## 配置示例 | ||
| 18 | + | ||
| 19 | +```bash | ||
| 20 | +export TORCH_COMPILE_DEBUG=1 | ||
| 21 | +``` | ||
| 22 | + | ||
| 23 | +## 使用约束 | ||
| 24 | + | ||
| 25 | +需在进程启动前配置,进程运行过程中修改不会生效。 | ||
| 26 | + | ||
| 27 | +## 支持的型号 | ||
| 28 | + | ||
| 29 | +- <term>Atlas 训练系列产品</term> | ||
| 30 | +- <term>Atlas A2 训练系列产品</term> | ||
| 31 | +- <term>Atlas A3 训练系列产品</term> | ||
| 32 | +- <term>Ascend 950DT</term> | ||
| @@ -0,0 +1,56 @@ | |||
| 1 | +# TORCH\_LOGS | ||
| 2 | + | ||
| 3 | +## 功能描述 | ||
| 4 | + | ||
| 5 | +通过此环境变量可控制PyTorch各模块的日志输出级别,用于调试和排查`torch.compile`及其后端(Inductor、Dynamo等)的行为。设置后,`torch_npu`会将日志配置同步到C++层日志上下文。 | ||
| 6 | + | ||
| 7 | +- 默认值未配置,使用默认日志级别(WARNING)。 | ||
| 8 | +- 配置模块日志:指定需要输出日志的模块及级别。 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +**语法格式**: | ||
| 12 | + | ||
| 13 | +- `TORCH_LOGS="+module"` — 输出指定模块的DEBUG级别日志 | ||
| 14 | +- `TORCH_LOGS="-module"` — 仅输出指定模块的ERROR级别日志 | ||
| 15 | +- `TORCH_LOGS="module1,module2"` — 同时配置多个模块(INFO级别) | ||
| 16 | +- `TORCH_LOGS="+module1,-module2"` — 混合配置:`+`/`-`前缀逐项生效,可对同一配置中的不同模块设置不同级别 | ||
| 17 | + | ||
| 18 | +常用模块名:`inductor`、`dynamo`、`aot`、`distribute`等。 | ||
| 19 | + | ||
| 20 | +> [!NOTE] | ||
| 21 | +> | ||
| 22 | +> - `TORCH_LOGS`(或`TORCH_NPU_LOGS`)设置后,优先级高于`torch._logging.set_logs()` API调用,API调用将不生效。 | ||
| 23 | +> - 对于TorchNPU新增的模块(如memory、dispatch、acl等),需使用`TORCH_NPU_LOGS`配置,`TORCH_LOGS`不支持这些模块。 | ||
| 24 | +> - 在`INDUCTOR_ASCEND_DEBUG=1`时,等效于`TORCH_LOGS="+inductor"`对`torch._inductor` `logger`的效果。 | ||
| 25 | +> - **PyTorch社区:** 社区对应环境变量`TORCH_LOGS`,行为一致,用于控制PyTorch各模块的日志输出。 | ||
| 26 | + | ||
| 27 | +## 配置示例 | ||
| 28 | + | ||
| 29 | +输出Inductor的DEBUG级别日志: | ||
| 30 | + | ||
| 31 | +```bash | ||
| 32 | +export TORCH_LOGS="+inductor" | ||
| 33 | +``` | ||
| 34 | + | ||
| 35 | +同时配置多个模块: | ||
| 36 | + | ||
| 37 | +```bash | ||
| 38 | +export TORCH_LOGS="+inductor,+dynamo" | ||
M export TORCH_LOGS="+inductor,-dynamo" 这种可以混用吗 ![]() ![]() | |||
| 39 | +``` | ||
| 40 | + | ||
| 41 | +混合配置(不同模块不同级别,`+`/`-`可混用): | ||
| 42 | + | ||
| 43 | +```bash | ||
| 44 | +export TORCH_LOGS="+inductor,-dynamo" | ||
| 45 | +``` | ||
| 46 | + | ||
| 47 | +## 使用约束 | ||
| 48 | + | ||
| 49 | +需在导入`torch_npu`之前设置。 | ||
| 50 | + | ||
| 51 | +## 支持的型号 | ||
| 52 | + | ||
| 53 | +- <term>Atlas 训练系列产品</term> | ||
| 54 | +- <term>Atlas A2 训练系列产品</term> | ||
| 55 | +- <term>Atlas A3 训练系列产品</term> | ||
| 56 | +- <term>Ascend 950DT</term> | ||
| @@ -9,6 +9,11 @@ | |||
| 9 | 9 | ||
| 10 | 此环境变量默认为未配置。 | 10 | 此环境变量默认为未配置。 |
| 11 | 11 | ||
| 12 | +> [!NOTE] | ||
| 13 | +> | ||
| 14 | +> - 此环境变量用于Eager模式下的算子融合,无需经过图编译。 | ||
| 15 | +> - **PyTorch社区:** 社区无此环境变量。 | ||
| 16 | + | ||
| 12 | ## 配置示例 | 17 | ## 配置示例 |
| 13 | 18 | ||
| 14 | ```bash | 19 | ```bash |
| @@ -17,8 +22,10 @@ export TORCH_NPU_LAZY_FUSION=True | |||
| 17 | 22 | ||
| 18 | ## 使用约束 | 23 | ## 使用约束 |
| 19 | 24 | ||
| 25 | +- 需在导入`torch_npu`之前设置。 | ||
| 20 | - 仅在[TASK_QUEUE_ENABLE](../op_execution/TASK_QUEUE_ENABLE.md)为1或2时生效,否则自动禁用算子融合。 | 26 | - 仅在[TASK_QUEUE_ENABLE](../op_execution/TASK_QUEUE_ENABLE.md)为1或2时生效,否则自动禁用算子融合。 |
| 21 | - 仅在主线程及其反向线程生效,其它独立线程(如dataloader worker)自动禁用。 | 27 | - 仅在主线程及其反向线程生效,其它独立线程(如dataloader worker)自动禁用。 |
| 28 | +- 仅在DVM支持的芯片型号上生效。 | ||
M DVM支持的芯片型号是哪些,写清楚 ![]() ![]() | |||
| 22 | 29 | ||
| 23 | ## 支持的型号 | 30 | ## 支持的型号 |
| 24 | 31 | ||


TORCH_LOGS 是框架公共变量,响应文档不在这个pr里承载