本文档为MindSpeed MM套件中对于运行脚本常用命令参数做解释说明
- [本文档为MindSpeed MM套件中对于运行脚本常用命令参数做解释说明](#本文档为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_algo、hybrid_cp_algo、megatron_cp_algo。详细介绍 |
--expert-model-parallel-size |
非0整数(默认1,来自 ${EP}) |
MOE网络中专家并行设置,把专家分配到不同卡上去进行计算。主要用来减少单张卡显存限制无法放下所有专家问题,但会引起专家负载不均衡,计算效率低的问题。 |
--use-distributed-optimizer |
store_true | 分布式优化器,将优化器状态切分到各个设备上去独立完成计算与存储。启用后可显著降低显存消耗,提升计算资源利用率。 |
重计算
| 参数名 | 类型/取值 | 说明 |
|---|---|---|
--recompute-granularity |
full |
目前仅支持配置full用于开启全量重计算。 |
--recompute-method |
block 或 uniform |
重计算模式配置。 - 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 |
torch 或 torch_dcp |
权重保存方式。推荐优先使用 torch_dcp。注: 1. 当在使用FSDP2进行模型训练时,仅支持使用 torch_dcp 配置。2. OUTPUT_ARGS下设置 --ckpt-format 为 torch_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之间以英文逗号分隔 |