# 环境变量说明

[![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg)](https://gitee.com/mindspore/docs/blob/master/docs/mindformers/docs/source_zh_cn/appendix/env_variables.md)

以下是 MindSpore Transformers 支持的环境变量。

## 调试变量

| 变量名称                        | 默认值 | 解释                                                                                                                                                                                                                         | 说明                                                                                                                                                                           | 应用场景                                                                                                                                                                                                                                              |
| ------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **HCCL_DETERMINISTIC**          | false  | 开启或关闭归约类通信算子的确定性计算,其中归约类通信算子包括 AllReduce、ReduceScatter、Reduce。                                                                                                                              | `true`:打开 HCCL 确定性开关;<br>`false`:关闭 HCCL 确定性开关。<br>                                                                                                          | 开启确定性计算可消除多卡计算顺序不一致引入的随机性,但也会导致性能相较关闭时下降。推荐在需要保持一致性场景时开启。                                                                                                                                    |
| **LCCL_DETERMINISTIC**          | 0      | 设置 LCCL 确定性算子 AllReduce(保序加)是否开启。                                                                                                                                                                             | `1`:打开 LCCL 确定性开关;<br>`0`:关闭 LCCL 确定性开关。                                                                                                                     | 开启确定性计算可消除多卡计算顺序不一致引入的随机性,但也会导致性能相较关闭时下降。推荐在需要保持一致性场景时开启。<br>在 rankSize<=8 时生效。                                                                                                         |
| **CUSTOM_MATMUL_SHUFFLE**       | on     | 开启或者关闭自定义矩阵乘法的洗牌操作。                                                                                                                                                                                       | `on`:开启矩阵洗牌;<br>`off`:关闭矩阵洗牌。                                                                                                                                  | 洗牌操作对于特定的矩阵尺寸和内存访问模式有优化效果,如果矩阵的大小与洗牌优化的尺寸不匹配,关闭洗牌可能会获得更好的性能。请根据实际使用进行设置。                                                                                                      |
| **ASCEND_LAUNCH_BLOCKING**      | 0      | 训练或在线推理场景,可通过此环境变量控制算子执行时是否启动同步模式。                                                                                                                                                         | `1`:强制算子采用同步模式运行;<br>`0`:不强制算子采用同步模式运行。                                                                                                           | 由于 NPU 模型训练时默认算子异步执行,导致算子执行过程中出现报错时,打印的报错堆栈信息并不是实际的调用栈信息。当设置为`1`时,强制算子采用同步模式运行,这样能够打印正确的调用栈信息,从而更容易地调试和定位代码中的问题。设置为`1`时有更高的运算效率。 |
| **TE_PARALLEL_COMPILER**        | 8      | 算子最大并行编译进程数,当大于 1 时开启并行编译。                                                                                                                                                                            | 取值为正整数;最大不超过 cpu 核数\*80%/昇腾 AI 处理器个数,取值范围 1~32,默认值是 8。                                                                                      | 网络模型较大时,可通过配置此环境变量开启算子的并行编译功能;<br>设置为`1`时为单线程编译,在调试时,可以简化难度。                                                                                                                                     |
| **CPU_AFFINITY**                | 0      | 启动 CPU 亲和性开关,启动该选项可以确保每个进程或线程绑定到一个 CPU 核心上,以提高性能。                                                                                                                                     | `1`:开启 CPU 亲和性开关;<br>`0`:关闭 CPU 亲和性开关。                                                                                                                       | 出于**优化资源利用** 以及**节能** 的考虑,CPU 亲和性默认关闭。                                                                                                                                                                                        |
| **MS_MEMORY_STATISTIC**         | 0      | 内存统计。                                                                                                                                                                                                                   | `1`:开启内存统计功能;<br>`0`:关闭内存统计功能。                                                                                                                             | 在内存分析时,可以统计内存的基本使用情况。具体可以参考[调优指南](https://www.mindspore.cn/mindformers/docs/zh-CN/dev/perf_optimize/perf_optimize.html)。                                                                                              |
| **MINDSPORE_DUMP_CONFIG**       |        | 指定 [云侧 Dump 功能](https://www.mindspore.cn/tutorials/zh-CN/master/debug/dump.html) 或 [端侧 Dump 功能](https://www.mindspore.cn/lite/docs/zh-CN/master/tools/benchmark_tool.html#dump功能) 所依赖的配置文件的路径 | 文件路径,支持相对路径与绝对路径。                                                                                                                                             |                                                                                                                                                                                                                                                       |
| **GLOG_v**                      | 3      | 控制 MindSpore 日志的级别。                                                                                                                                                                                                  | `0`:DEBUG;<br>`1`:INFO;<br>`2`:WARNING;<br>`3`:ERROR:表示程序执行出现报错,输出错误日志,程序可能不会终止;<br>`4`:CRITICAL,表示程序执行出现异常,将会终止执行程序。 |                                                                                                                                                                                                                                                       |
| **ASCEND_GLOBAL_LOG_LEVEL**     | 3      | 控制 CANN 的日志级别。                                                                                                                                                                                                       | `0`:DEBUG;<br>`1`:INFO;<br>`2`:WARNING;<br>`3`:ERROR;<br>`4`:NULL,不输出日志。                                                                                       |                                                                                                                                                                                                                                                       |
| **ASCEND_SLOG_PRINT_TO_STDOUT** | 0      | 是否开启日志打屏。开启后,日志将不会保存在 log 文件中,而是将产生的日志直接打屏显示。                                                                                                                                        | `1`:开启日志打屏;<br>`0`:关闭日志打屏。                                                                                                                                     |                                                                                                                                                                                                                                                       |
| **ASCEND_GLOBAL_EVENT_ENABLE**  | 0      | 设置应用类日志是否开启 Event 日志。                                                                                                                                                                                          | `1`:开启 Event 日志;<br>`0`:关闭 Event 日志。                                                                                                                               |                                                                                                                                                                                                                                                       |
| **HCCL_EXEC_TIMEOUT**           | 1836   | 通过该环境变量可控制设备间执行时同步等待的时间,在该配置时间内各设备进程等待其他设备执行通信同步。                                                                                                                           | 取值范围为:(0, 17340],默认值为 1836,单位为 s。                                                                                                                              |                                                                                                                                                                                                                                                       |
| **HCCL_CONNECT_TIMEOUT**        | 120    | 分布式训练或推理场景下,用于限制不同设备之间 socket 建链过程的超时等待时间。                                                                                                                                                 | 该环境变量需要配置为整数,取值范围[120,7200],默认值 120s。                                                                                                                    |                                                                                                                                                                                                                                                       |
| **MS_NODE_ID**        |  NA | 动态组网启动场景下,指定本进程的rank_id。 | 本进程的rank_id,在集群内唯一。 |                       |

## 其他变量

| 变量名称                           | 默认值         | 解释                                 | 说明                                                                                                               | 应用场景                                                                                                                              |
| ---------------------------------- |-------------|------------------------------------|------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------|
| **RUN_MODE**                       | predict     | 设置运行模式。                            | `predict`:推理; <br>`finetune`:微调; <br>`train`:训练; <br>`eval`:评测。                                                  |                                                                                                                                   |
| **USE_ROPE_SELF_DEFINE**           | true        | 是否使用 ROPE 融合算子。                    | `true`:使用 ROPE 融合算子;<br>`false`:不使用 ROPE 融合算子。                                                                   | 默认开启 ROPE 融合算子可以提升计算效率。除调试场景,根据需要进行关闭,一般不作特别设置。                                                                                   |
| **MS_ENABLE_INTERNAL_BOOST**       | on         | 是否打开 MindSpore 框架的内部加速功能。          | `on`:开启 MindSpore 内部加速;<br>`off`:关闭 MindSpore 内部加速。                                                              | 为了实现高性能推理,该配置默认开启。在进行调试或对比不同加速策略的情况下,需要关闭此参数以观察对性能的影响。                                                                         |
| **MS_GE_ATOMIC_CLEAN_POLICY**      | 1           | 是否集中清理网络中 atomic 算子占用的内存。          | `0`:集中清理网络中所有 atomic 算子占用的内存;<br>`1`:不集中清理内存,对网络中每一个 atomic 算子进行单独清零。                                            | 开关默认设置为`1`,方便用户对每个算子进行单独处理,可以进行算子内存复用等操作。设置为`0`后,集中清理算子所占内存。                                                                      |
| **ENABLE_LAZY_INLINE**             | 1           | 是否开启 lazy inline。                  | `0`:关闭 lazy inline;<br>`1`:开启 lazy inline。                                                                       | 此特性在 mindspore≥2.2.0 下适用。通常在 pipeline 并行时使用以提高编译性能。默认开启,可配置关闭。                                                                    |
| **ENABLE_LAZY_INLINE_NO_PIPELINE** | 0           | 是否开启在非 pipeline 并行下的 lazy inline。  | `0`:关闭 lazy inline;<br>`1`:开启 lazy inline。                                                                       | lazy inline 特性默认仅在 pipeline 并行模式下开启。如需在其他并行模式下使能 lazy inline,可将该环境变量设置为 1。                                                        |
| **MS_ASCEND_CHECK_OVERFLOW_MODE**  | INFNAN_MODE | 设置浮点计算结果输出模式。                      | `SATURATION_MODE`:饱和模式,计算出现溢出时,饱和为浮点数极值(+-MAX);<br>`INFNAN_MODE`:INF/NAN 模式,遵循 IEEE 754 标准,根据定义输出 INF/NAN 的计算结果。 | 在大模型调优中,溢出状态对齐 PyTorch 方式,建议使用 INFNAN_MODE,即 export MS_ASCEND_CHECK_OVERFLOW_MODE=INFNAN_MODE。<br>遇到持续溢出问题时可尝试设置此变量为 INFNAN_MODE。 |
| **MF_LOG_SUFFIX**                  | NA          | 设置所有 log 日志文件夹的自定义后缀。              | log 文件夹的后缀。默认值:无后缀                                                                                               | 添加一致的后缀,可以隔离各个任务的日志,不会被覆写。                                                                                                        |
| **PLOG_REDIRECT_TO_OUTPUT**          | False       | 控制 plog 日志是否改变存储路径。                | `True`:存储到./output 目录下; <br>`False`: 存储到默认存储位置。                                                                  | 设置之后方便用户查询 plog 日志。                                                                                                               |
| **MS_ENABLE_FA_FLATTEN**          | on          | 控制 是否支持 FlashAttention flatten 优化。 | `on`:启用 FlashAttention flatten 优化; <br>`off`: 禁用 FlashAttention flatten 优化。                                      | 对于还未适配FlashAttention flatten 优化的模型提供回退机制。                                                                                         |
| **EXPERIMENTAL_KERNEL_LAUNCH_GROUP**          | NA          | 控制是否支持算子批量并行下发,支持开启并行下发,并配置并行数 | `thread_num`: 并发线程数,一般不建议增加,默认值为`2`; <br> `kernel_group_num`: 算子分组总数量,每线程`kernel_group_num/thread_num`个组,默认值为`8`。               | 该特性后续还会继续演进,后续行为可能会有变更,当前仅支持`deepseek`推理场景,有一定的性能优化,但是其他模型使用该特性可能会有劣化,用户需要谨慎使用,使用方法如下:`export EXPERIMENTAL_KERNEL_LAUNCH_GROUP="thread_num:2,kernel_group_num:8"`。            |
| **FORCE_EAGER**                    | False       | 控制是否**不开启**jit模式。 | `False`: 开启jit模式; <br>`True`: 不开启jit模式。                                      | Jit将函数编译成一张可调用的MindSpore图,设置FORCE_EAGER为False开启jit模式,可以获取性能收益,当前仅支持推理模式。                                                                                   |
| **MS_ENABLE_TFT**        | NA | 使能 [MindIO TFT](https://www.hiascend.com/document/detail/zh/mindx-dl/600/clusterscheduling/ref/mindiottp/mindiotft001.html) 特性,表示启用 TTP、UCE 或 ARF 功能。                                         |  取值为"{TTP:1,UCE:1,ARF:1}",使用某一功能时,可将对应字段配置为"1"。                                   | 使用方式可以参考[高可用特性](https://www.mindspore.cn/mindformers/docs/zh-CN/dev/function/high_availability.html)。         |