# 环境变量说明
[](https://gitee.com/mindspore/docs/blob/r2.7.1/docs/mindformers/docs/source_zh_cn/env_variables.md)
以下是 MindSpore Transformers 支持的环境变量。
## 调试变量
| 变量名称 | 默认值 | 解释 | 说明 | 应用场景 |
|--------------------------------------------|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
| **HCCL_DETERMINISTIC** | false | 开启或关闭归约类通信算子的确定性计算,其中归约类通信算子包括 AllReduce、ReduceScatter、Reduce。 | `true`:打开 HCCL 确定性开关;
`false`:关闭 HCCL 确定性开关。
| 开启确定性计算可消除多卡计算顺序不一致引入的随机性,但也会导致性能相较关闭时下降。推荐在需要保持一致性场景时开启。 |
| **LCCL_DETERMINISTIC** | 0 | 设置 LCCL 确定性算子 AllReduce(保序加)是否开启。 | `1`:打开 LCCL 确定性开关;
`0`:关闭 LCCL 确定性开关。 | 开启确定性计算可消除多卡计算顺序不一致引入的随机性,但也会导致性能相较关闭时下降。推荐在需要保持一致性场景时开启。
在 rankSize<=8 时生效。 |
| **CUSTOM_MATMUL_SHUFFLE** | on | 开启或者关闭自定义矩阵乘法的洗牌操作。 | `on`:开启矩阵洗牌;
`off`:关闭矩阵洗牌。 | 洗牌操作对于特定的矩阵尺寸和内存访问模式有优化效果,如果矩阵的大小与洗牌优化的尺寸不匹配,关闭洗牌可能会获得更好的性能。请根据实际使用进行设置。 |
| **ASCEND_LAUNCH_BLOCKING** | 0 | 训练或在线推理场景,可通过此环境变量控制算子执行时是否启动同步模式。 | `1`:强制算子采用同步模式运行;
`0`:不强制算子采用同步模式运行。 | 由于 NPU 模型训练时默认算子异步执行,导致算子执行过程中出现报错时,打印的报错堆栈信息并不是实际的调用栈信息。当设置为`1`时,强制算子采用同步模式运行,这样能够打印正确的调用栈信息,从而更容易地调试和定位代码中的问题。设置为`1`时有更高的运算效率。 |
| **TE_PARALLEL_COMPILER** | 8 | 算子最大并行编译进程数,当大于 1 时开启并行编译。 | 取值为正整数;最大不超过 cpu 核数\*80%/昇腾 AI 处理器个数,取值范围 1~32,默认值是 8。 | 网络模型较大时,可通过配置此环境变量开启算子的并行编译功能;
设置为`1`时为单线程编译,在调试时,可以简化难度。 |
| **CPU_AFFINITY** | 0 | 启动 CPU 亲和性开关,启动该选项可以确保每个进程或线程绑定到一个 CPU 核心上,以提高性能。 | `1`:开启 CPU 亲和性开关;
`0`:关闭 CPU 亲和性开关。 | 出于**优化资源利用** 以及**节能** 的考虑,CPU 亲和性默认关闭。 |
| **MS_MEMORY_STATISTIC** | 0 | 内存统计。 | `1`:开启内存统计功能;
`0`:关闭内存统计功能。 | 在内存分析时,可以统计内存的基本使用情况。具体可以参考[调优指南](https://www.mindspore.cn/mindformers/docs/zh-CN/r1.7.0/advanced_development/performance_optimization.html)。 |
| **MINDSPORE_DUMP_CONFIG** | | 指定 [云侧 Dump 功能](https://www.mindspore.cn/tutorials/zh-CN/r2.7.1/debug/dump.html) 或 [端侧 Dump 功能](https://www.mindspore.cn/lite/docs/zh-CN/r2.7.1/tools/benchmark_tool.html#dump功能) 所依赖的配置文件的路径 | 文件路径,支持相对路径与绝对路径。 | |
| **GLOG_v** | 3 | 控制 MindSpore 日志的级别。 | `0`:DEBUG;
`1`:INFO;
`2`:WARNING;
`3`:ERROR,表示程序执行出现报错,输出错误日志,程序可能不会终止;
`4`:CRITICAL,表示程序执行出现异常,将会终止执行程序。 | |
| **ASCEND_GLOBAL_LOG_LEVEL** | 3 | 控制 CANN 的日志级别。 | `0`:DEBUG;
`1`:INFO;
`2`:WARNING;
`3`:ERROR;
`4`:NULL,不输出日志。 | |
| **ASCEND_SLOG_PRINT_TO_STDOUT** | 0 | 是否开启日志打屏。开启后,日志将不会保存在 log 文件中,而是将产生的日志直接打屏显示。 | `1`:开启日志打屏;
`0`:关闭日志打屏。 | |
| **ASCEND_GLOBAL_EVENT_ENABLE** | 0 | 设置应用类日志是否开启 Event 日志。 | `1`:开启 Event 日志;
`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,在集群内唯一。 | |
| **MS_ALLOC_CONF** | NA | 设置内存策略。 | 配置项,格式为key:value,多个配置项以逗号分隔,例如 export MS_ALLOC_CONF=enable_vmm:true,memory_tracker:true。
enable_vmm: 是否使能虚拟内存,默认值为true。
vmm_align_size: 设置虚拟内存对齐大小,单位为MB,默认值为2。
memory_tracker: 是否开启memory tracker,默认值为false。
memory_tracker_path: 开启memory tracker并保存到指定路径,默认值关闭memory tracker且保存路径为空。
simple_tracker: 是否开启tracker简化模式,不保存tracker_graph.ir,只保留最后一个user task。开启memory_tracker时生效,默认值为false。
acl_allocator: 是否使用ACL内存分配器,默认值为true。
somas_whole_block: 是否使用SOMAS整块内存分配,默认值为false。 | |
| **MS_INTERNAL_DISABLE_CUSTOM_KERNEL_LIST** | PagedAttention | 使能自定义算子的列表。实验性配置项,一般无需设置。将会在未来删除。 | 配置为字符串,算子名之间用英文逗号隔开。 | |
| **TRANSFORMERS_OFFLINE** | 0 | 设置Auto接口强制只读取离线的本地文件。 | `1`、`ON`、`TRUE`、`YES`:强制只读取离线的本地文件;
其余取值:允许从网络下载文件。 | |
| **MDS_ENDPOINT** | https://modelers.cn | 设置openMind Hub的endpoint。 | 配置为字符串格式的URL地址。 | |
| **OM_MODULES_CACHE** | ~/.cache/openmind/modules | openMind modules的缓存路径。 | 配置为字符串格式的目录路径。 | |
| **OPENMIND_CACHE** | ~/.cache/openmind/hub | openMind Hub的缓存路径。 | 配置为字符串格式的目录路径。 | |
| **openmind_IS_CI** | | 设置openMind是否在CI门禁环境中。 | `1`、`ON`、`TRUE`、`YES`:在CI环境中;
其余取值:不在CI环境。 | |
## 其他变量
| 变量名称 | 默认值 | 解释 | 说明 | 应用场景 |
|--------------------------------------|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **RUN_MODE** | predict | 设置运行模式。 | `predict`:推理;
`finetune`:微调;
`train`:训练;
`eval`:评测。 | |
| **USE_ROPE_SELF_DEFINE** | true | 是否使用 ROPE 融合算子。 | `true`:使用 ROPE 融合算子;
`false`:不使用 ROPE 融合算子。 | 默认开启 ROPE 融合算子可以提升计算效率。除调试场景,根据需要进行关闭,一般不作特别设置。 |
| **MS_ENABLE_INTERNAL_BOOST** | on | 是否打开 MindSpore 框架的内部加速功能。 | `on`:开启 MindSpore 内部加速;
`off`:关闭 MindSpore 内部加速。 | 为了实现高性能推理,该配置默认开启。在进行调试或对比不同加速策略的情况下,需要关闭此参数以观察对性能的影响。 |
| **MS_GE_ATOMIC_CLEAN_POLICY** | 1 | 是否集中清理网络中 atomic 算子占用的内存。 | `0`:集中清理网络中所有 atomic 算子占用的内存;
`1`:不集中清理内存,对网络中每一个 atomic 算子进行单独清零。 | 开关默认设置为`1`,方便用户对每个算子进行单独处理,可以进行算子内存复用等操作。设置为`0`后,集中清理算子所占内存。 |
| **MS_ASCEND_CHECK_OVERFLOW_MODE** | INFNAN_MODE | 设置浮点计算结果输出模式。 | `SATURATION_MODE`:饱和模式,计算出现溢出时,饱和为浮点数极值(+-MAX);
`INFNAN_MODE`:INF/NAN 模式,遵循 IEEE 754 标准,根据定义输出 INF/NAN 的计算结果。 | 在大模型调优中,溢出状态对齐 PyTorch 方式,建议使用 INFNAN_MODE,即 export MS_ASCEND_CHECK_OVERFLOW_MODE=INFNAN_MODE。
遇到持续溢出问题时可尝试设置此变量为 INFNAN_MODE。 |
| **MF_LOG_SUFFIX** | NA | 设置所有 log 日志文件夹的自定义后缀。 | log 文件夹的后缀。默认值:无后缀 | 添加一致的后缀,可以隔离各个任务的日志,不会被覆写。 |
| **PLOG_REDIRECT_TO_OUTPUT** | False | 控制 plog 日志是否改变存储路径。 | `True`:存储到./output 目录下;
`False`:存储到默认存储位置。 | 设置之后方便用户查询 plog 日志。 |
| **MS_ENABLE_FA_FLATTEN** | on | 控制是否支持 FlashAttention flatten 优化。 | `on`:启用 FlashAttention flatten 优化;
`off`:禁用 FlashAttention flatten 优化。 | 对于还未适配FlashAttention flatten 优化的模型提供回退机制。 |
| **EXPERIMENTAL_KERNEL_LAUNCH_GROUP** | NA | 控制是否支持算子批量并行下发,支持开启并行下发,并配置并行数 | `thread_num`:并发线程数,一般不建议增加,默认值为`2`;
`kernel_group_num`:算子分组总数量,每线程`kernel_group_num/thread_num`个组,默认值为`8`。 | 该特性后续还会继续演进,后续行为可能会有变更,当前仅支持`deepseek`推理场景,有一定的性能优化,但是其他模型使用该特性可能会有劣化,用户需要谨慎使用,使用方法如下:`export EXPERIMENTAL_KERNEL_LAUNCH_GROUP="thread_num:2,kernel_group_num:8"`。 |
| **ENFORCE_EAGER** | False | 控制是否**不开启**jit模式。 | `False`:开启jit模式;
`True`:不开启jit模式。 | Jit将函数编译成一张可调用的MindSpore图,设置ENFORCE_EAGER为False开启jit模式,可以获取性能收益,当前仅支持推理模式。 |
| **MS_ENABLE_TFT** | NA | 使能训练故障容错(Training Fault Tolerance)功能,大多数功能依赖 [MindIO TFT](https://www.hiascend.com/document/detail/zh/mindx-dl/600/clusterscheduling/ref/mindiottp/mindiotft001.html)。 | 取值为"{TTP:1,UCE:1,HCCE:1,ARF:1,TRE:1,TSP:1,RSC:1}",使用某一功能时,可将对应字段配置为"1"。 | 使用方式可以参考[高可用特性](https://www.mindspore.cn/mindformers/docs/zh-CN/r1.7.0/feature/high_availability.html)。 |
| **MS_WORKER_NUM** | NA | 指定角色为MS_WORKER的进程数量。 | 大于0的整数。 | 分布式场景。 |
| **RANK_ID** | NA | 指定调用NPU的逻辑ID。 | 0~7,多机并行时不同server中DEVICE_ID会有重复,使用RANK_ID可以避免这个问题(多机并行时 RANK_ID = SERVER_ID * DEVICE_NUM + DEVICE_ID,DEVICE_ID指当前机器的第几个Ascend AI处理器。) | |
| **RANK_SIZE** | NA | 指定调用NPU的数量。 | 大于1的整数。 | |
| **LD_PRELOAD** | NA | 指定预加载的共享库。 | 指定共享库的路径。 | |
| **DEVICE_ID** | 0 | 指定调用NPU的设备ID。 | 0~服务器的NPU数量。 | |
| **MS_SCHED_PORT** | NA | 指定Scheduler绑定端口号。 | 1024~65535范围内的端口号。 | |
| **NPU_ASD_ENABLE** | 0 | 是否开启特征值检测功能。 | `0`:关闭特征值检测功能
`1`:检测到异常,只打印日志,但检测算子不抛异常
`2`:检测到异常,打印日志,检测算子抛出异常
`3`:特征值正常和异常场景下都会打印(备注:正常场景下只有CANN开启了INFO及DEBUG级别才会打印),检测到异常时检测算子抛出异常。 | |
| **MS_SDC_DETECT_ENABLE** | 0 | 是否使能CheckSum检测静默故障。 | `0`:关闭CheckSum检测静默故障。
`1`:使能CheckSum检测静默故障。 | |
| **ASCEND_HOME_PATH** | NA | Ascend软件包的安装路径。 | 设置为指定的路径。 | |
| **ENABLE_LAZY_INLINE** | 1 | 是否使能Lazy Inline模式。此环境变量即将废弃,将在下版本删除。 | `0`:不使能Lazy Inline。
`1`:使能Lazy Inline。 | |
| **LOCAL_DEFAULT_PATH** | ./output | 设置日志的默认路径。 | 设置为指定的路径。 | |
| **STDOUT_DEVICES** | NA | 设置标准输出的设备ID列表。 | 设置为数字列表,多个ID之间用英文逗号隔开。 | |
| **REGISTER_PATH** | | 需要注册的外挂代码所在的目录路径。 | 设置为指定的路径。 | |
| **LOG_MF_PATH** | ./output/log | MindSpore Transformers的日志路径。 | 设置为指定的路径。 | |
| **DEVICE_NUM_PER_NODE** | 8 | 服务器上的NPU数量。 | 大于0的整数。 | |
| **SHARED_PATHS** | | 共享存储的路径。 | 设置为指定的路径。 | |
| **ASCEND_PROCESS_LOG_PATH** | NA | Ascend进程的日志路径。 | 设置为指定的路径。 | |
| **ENABLE_LAZY_INLINE_NO_PIPELINE** | 0 | 是否在非流水线并行时使能Lazy Inline模式。此环境变量即将废弃,将在下版本删除。 | `0`:不使能Lazy Inline。
`1`:使能Lazy Inline。 | |
| **REMOTE_SAVE_URL** | None | 在ModelArts上保存训练结果时使用的URL。当前已废弃,将在未来删除。 | 填写保存结果的URL。 | |