本文档为MindSpeed MM套件中对于运行脚本常用命令参数做解释说明

GPT_ARGS下参数注释

一般参数

参数名 类型/取值 说明
--micro-batch-size 整数(来自 ${MBS} 单个GPU在一次前向/反向传播中直接处理的样本数量,适应单个NPU内的内存限制。直接影响GPU显存容量。
--global-batch-size 整数(来自 ${GBS} 模型进行一次参数更新所使用的所有设备上的总样本数。
--num-workers 非负整数 PyTorch中数据加载处理部分会启动的子进程数。设置过大会占用CPU资源,设置过小会导致模型等待数据加载过慢。
--seq_length 整数 序列长度,表示模型一次能够处理的单个样本中包含的token数量。注意在启用 --variable-seq-lengths 时该功能失效。序列长度决定了能够捕捉的上下文信息范围,较长的序列长度可以捕捉更长的依赖关系,但会显著增加计算复杂度和内存消耗。
--normalization RMSNorm 使用RMSNorm。推荐搭配 --use-fused-rmsnorm 使用。
--swiglu store_true 使用SwiGLU激活函数,推荐搭配 --use-fused-swiglu 使用。
--lr-warmup-fraction 浮点数(0~1) 用于学习率"预热"阶段占总步长的比例。
--weight-decay-exclude-modules 字符串列表 参数级的权重衰减排除,通过配置参数名关键词(可多个)排除特定参数的权重衰减。详细介绍
--lr-scale-modules 字符串列表 参数级学习率缩放,通过配置参数名关键词(可多个)来对特定参数的学习率进行缩放。详细介绍
--clip-grad 浮点数(默认1) 非0时启用该功能。在优化器中对权重做限制,防止loss波动过大。
--seed 整数 随机种子。
--bf16 store_true 使用torch.bfloat16格式训练,极大降低显存消耗。
--load 字符串 模型权重路径,根据各example中指导填写。
--variable-seq-lengths store_true 启用可变序列长度。
--calculate-per-sample-loss - 按样本粒度计算 loss。详细介绍
--calculate-per-token-loss - 按 token 粒度计算 loss。详细介绍
--ckpt-format torch_dcp 保存时使用DCP格式。详细介绍
--init-model-with-meta-device - 使用FSDP2的meta初始化模型,目前仅Qwen3VL模型支持,详细使用请参考examples下具体模型readme.md界面。

显存优化

参数名 类型/取值 说明
--tensor-model-parallel-size 非0整数(默认1,来自 ${TP} 张量并行数量设置,把模型权重切分多份放到不同卡上去运算,减少单卡显存占用,但会带来额外的通信时间。
--pipeline-model-parallel-size 非0整数(默认1,来自 ${PP} 流水线并行参数设置,把整个模型按阶段分到多张卡上去计算,减少单卡内存占用,但会增加通信时间,同时会引起部分卡闲时等待现象。
--context-parallel-size 非0整数(默认1,来自 ${CP} 序列并行数量设置,沿着序列维度进行数据切分。主要用于长序列任务,减少单卡内存占用,会引入额外通信时间影响性能。
--context-parallel-algo 字符串 CP算法选择,可选范围:ulysses_cp_algohybrid_cp_algomegatron_cp_algo详细介绍
--expert-model-parallel-size 非0整数(默认1,来自 ${EP} MOE网络中专家并行设置,把专家分配到不同卡上去进行计算。主要用来减少单张卡显存限制无法放下所有专家问题,但会引起专家负载不均衡,计算效率低的问题。
--use-distributed-optimizer store_true 分布式优化器,将优化器状态切分到各个设备上去独立完成计算与存储。启用后可显著降低显存消耗,提升计算资源利用率。

重计算

详细介绍

参数名 类型/取值 说明
--recompute-granularity full 目前仅支持配置full用于开启全量重计算。
--recompute-method blockuniform 重计算模式配置。
- uniform: 将transformer层均匀划分组,每组大小由 --recompute-num-layers 指定,按组存入输入和激活值。
- block: 前 --recompute-num-layers 个transformer层使用重计算,剩余层跳过。
--recompute-num-layers 整数 重计算的层数配置,具体作用取决于 --recompute-method 的设置。

FSDP2

注意: 启用FSDP2时,Megatron各种切分策略及重计算配置均需关闭。

参数名 类型/取值 说明
--fsdp2-config-path 字符串 FSDP2相关配置文件路径。
--use-cpu-initialization - 使用CPU初始化权重,需开启。

加速特性

参数名 类型/取值 说明
--use-fused-swiglu - 使能相关融合算子,仅在使用SwiGLU时有效。
--use-fused-rmsnorm - 使能相关融合算子,仅在使用RMSNorm时有效。
--overlap-grad-reduce--overlap-param-gather - 权重更新通信掩盖,仅在使能 --use-distributed-optimizer 时有效。详细介绍

MOE_ARGS下参数解释

参数名 类型/取值 说明
--moe-token-dispatcher-type 字符串(默认 allgather MOE网络中分发token到通信方式选择。如果开启了专家并行,推荐使用 alltoall
--moe-permute-fusion - 使能permute和unpermute融合算子,加速计算。

OUTPUT_ARGS下参数解释说明

参数名 类型/取值 说明
--save 字符串(来自 SAVE_PATH 权重保存路径。
:仅有该值配置时才会进行权重保存。
--ckpt-format torchtorch_dcp 权重保存方式。推荐优先使用 torch_dcp


1. 当在使用FSDP2进行模型训练时,仅支持使用 torch_dcp 配置。
2. OUTPUT_ARGS下设置 --ckpt-formattorch_dcp 与GPT_ARGS下使能 --ckpt-format torch_dcp 二者作用相同,择一即可。

环境变量参数解释

所有环境变量具体解释均可在Ascend官网搜索查询到详细信息,以下仅展示MM套件中常用的。

环境初始化脚本 描述
source /usr/local/Ascend/cann/set_env.sh cann安装路径,必须配置
source /usr/local/Ascend/nnal/atb/set_env.sh nnal安装路径
环境变量 描述 取值说明
CUDA_DEVICE_MAX_CONNECTIONS 用于控制多GPU系统下主机端并行连接的设备数量 需要配置为整数,取值范围[1, 32];开启序列并行时需设置为1
ASCEND_SLOG_PRINT_TO_STDOUT 是否开启日志打印,开启后日志不会保存在log文件中,而是将产生的日志直接打印显示 0: 关闭日志打屏
1: 开启日志打屏
ASCEND_GLOBAL_LOG_LEVEL 设置应用类日志的日志级别及各模块日志级别,仅支持调试日志 0: 对应DEBUG级别
1: 对应INFO级别
2: 对应WARNING级别
3: 对应ERROR级别
4: 对应NULL级别,不输出日志
注意设置为DEBUG级别后,可能会因日志流量过大影响业务性能
TASK_QUEUE_ENABLE 用于控制开启task_queue算子下发队列优化的等级 0: 关闭
1: 开启Level 1优化
2: 开启Level 2优化
COMBINED_ENABLE 设置combined标志。设置为0表示关闭此功能;设置为1表示开启,用于优化非连续两个算子组合类场景 0: 关闭
1: 开启
CPU_AFFINITY_CONF 控制CPU端算子任务的处理器亲和性,即设定任务绑核 设置0或未设置: 表示不启用绑核功能
1: 表示开启粗粒度绑核
2: 表示开启细粒度绑核
HCCL_CONNECT_TIMEOUT 分布式场景下用于限制不同设备之间socket建链过程的超时等待时间 需要配置为整数,取值范围[120, 7200],默认值为120,单位s
PYTORCH_NPU_ALLOC_CONF 控制缓存分配器行为 expandable_segments: 使能内存池扩展段功能,即虚拟内存特征
HCCL_EXEC_TIMEOUT 控制设备间执行时同步等待的时间,在该配置时间内各设备进程等待其他设备执行通信同步 需要配置为整数,取值范围[68, 17340],默认值为1800,单位s
ACLNN_CACHE_LIMIT 配置单算子执行API在Host侧缓存的算子信息条目个数 需要配置为整数,取值范围[1, 10,000,000],默认值为10000
TOKENIZERS_PARALLELISM 用于控制Hugging Face的transformers库中的分词器(tokenizer)在多线程环境下的行为 False: 禁用并行分词
True: 开启并行分词
MULTI_STREAM_MEMORY_REUSE 配置多流内存复用是否开启 0: 关闭多流内存复用
1: 开启多流内存复用
NPU_ASD_ENABLE 控制是否开启Ascend Extension for PyTorch的特征值检测功能 设置0或未设置: 关闭特征值检测
1: 表示开启特征值检测,只打印异常日志,不告警
2:开启特征值检测,并告警
3:开启特征值检测,并告警,同时会在device侧info级别日志中记录过程数据
ASCEND_LAUNCH_BLOCKING 控制算子执行时是否启动同步模式,主要用于定位代码实际出错位置,开启时会导致性能下降,仅在debug时使用 0: 采用异步方式执行
1: 强制算子采用同步模式运行
NPUS_PER_NODE 配置一个计算节点上使用的NPU数量 整数值(如 1, 8 等)
ASCEND_RT_VISIBLE_DEVICES 用于指定当前进程可见的Device,支持一次指定一个或多个Device ID Device ID的数字组合,多个Device ID之间以英文逗号分隔