产品介绍
AIAK-Training-LLM是百度智能云基于百舸异构计算平台,面向大模型训练场景提供的最佳实践解决方案配套 AI 加速工具,帮助模型开发者高效完成大规模深度学习分布式训练,提升训练效率,相比开源 Megatron-LLM性能明显提升。
使用前提
基础设施为百度智能云云资源(购买百度云CCE及配套资源)
运行环境硬件资源须和加速镜像支持的芯片匹配
运行环境操作系统版本推荐CentOS7+
环境版本
基础依赖
芯片
H800、A800、L20
NVIDIA Driver
450.51 (or later R450)、470.57 (or later R470)、510.47 (or later R510)、525.85 (or later R525)、535.86 (or later R535)、545.23 (or later R545)
百舸资源池资源已默认内置上述驱动,如手动操作更新过驱动需自行确认驱动版本在上述列表
软件包说明
基础镜像
ubuntu22.04
框架
Megatron Core
PyTorch
v2.2.0
CUDA
v12.3
Python
v3.10
BCCL
v1.2.4.1
支持模型
模型系列
模型名称
llama
llama-7b, llama-13b, llama-65b
llama2
llama2-7b, llama2-13b, llama2-70b
llama3
llama3-8b, llama3-70b
baichuan
baichuan-7b, baichuan-13b
baichuan2
baichuan2-7b, baichuan2-13b
qwen
qwen-1.8b, qwen-7b, qwen-14b, qwen-72b
qwen1.5
qwen1.5-0.5b, qwen1.5-1.8b, qwen1.5-4b, qwen1.5-7b、qwen1.5-14b, qwen1.5-32b, qwen1.5-72b
mixtral
mixtral-8x7b
如果您对于其他暂未支持的模型有训练需求,请提交工单或者联系您的客户经理。
如何使用
新镜像使用说明如下,用户也可以镜像内部/workspace/AIAK-Training-LLM查看 README.md 文档
获取镜像
在AIHC Hub中找到目标镜像版本,点击【获取地址】可以得到镜像地址,例如:registry.baidubce.com/aihc-aiak/aiak-training-llm:ubuntu22.04-cu12.3-torch2.2.0-py310-bccl1.2.4.1_v2.0.1.0_release
预训练数据处理
首先,数据集需要按照 Json 格式来组织,即文件中每一行是一个 Json 字符串;举例如下(每一行中text字段为要处理的预训练文本):
{ "src" : "www.nvidia.com" , "text" : "The quick brown fox" , "type" : "Eng" , "id" : "0" , "title" : "First Part" }
{ "src" : "The Internet" , "text" : "jumps over the lazy dog" , "type" : "Eng" , "id" : "42" , "title" : "Second Part" }
AIAK 通过/workspace/AIAK-Training-LLM/tools/data_preprocess/preprocess_data.py工具对数据进行预处理。
以llama模型数据处理举例:
#!/bin/bash
MEGATRON_PATH = ${MEGATRON_PATH:- "/ workspace/ AIAK-Megatron"}
AIAK_TRAINING_PATH = ${AIAK_TRAINING_PATH:- "/ workspace/ AIAK-Training-LLM"}
TOKENIZER_PATH = ${TOKENIZER_PATH:- "/ mnt/ cluster/ llama2/ Llama-2-7b-hf/ "}
input_data = /mnt/cluster/datasets/pile_test/train.jsonl
output_prefix = /mnt/cluster/datasets/pile_test/pile-llama
PYTHONPATH = $MEGATRON_PATH : $AIAK_TRAINING_PATH : $PYTHONPATH \
python ${AIAK_TRAINING_PATH} /tools/data_preprocess/preprocess_data.py \
--input ${input_data} \
--output-prefix ${output_prefix} \
--tokenizer-type HFTokenizer \
--hf-tokenizer-path $TOKENIZER_PATH \
--json-keys text \
--workers 50 \
--append-eod
模型 checkpoint 准备
AIAK 提供了模型权重转换工具/workspace/AIAK-Training-LLM/tools/convert_checkpoint,可以方便地在 Huggingface 和 AIAK 支持格式之间进行转换。具体转换操作,用户可以参考/workspace/AIAK-Training-LLM/examples/{model}/checkpoint_convert目录下提供的示例脚本。
以LLaMA 为例,将 Huggingface 权重转换到 MCore 格式:
#! /bin/bash
AIAK_TRAINING_PATH = ${AIAK_TRAINING_PATH:- "/ workspace/ AIAK-Training-LLM"}
CONVERT_CHECKPOINT_PATH = "$AIAK_TRAINING_PATH /tools/convert_checkpoint"
LOAD = /mnt/cluster/llama2/Llama-2-70b-hf/
SAVE = /mnt/cluster/llama2/mcore_llama2_70b_tp4_pp4
python $CONVERT_CHECKPOINT_PATH /model.py \
--load_platform= huggingface \
--save_platform= mcore \
--common_config_path= $CONVERT_CHECKPOINT_PATH /config/llama2-70b.json \
--tensor_model_parallel_size= 4 \
--pipeline_model_parallel_size= 4 \
--load_ckpt_path= $LOAD \
--save_ckpt_path= $SAVE \
--no_save_optim \
--no_load_optim
将原有Megatron Checkpoint 转换到新的 MCore 格式:
#! /bin/bash
AIAK_TRAINING_PATH = ${AIAK_TRAINING_PATH:- "/ workspace/ AIAK-Training-LLM"}
MEGATRON_PATH = ${MEGATRON_PATH:- "/ workspace/ AIAK-Megatron"}
CONVERT_CHECKPOINT_PATH = "$AIAK_TRAINING_PATH /tools/convert_checkpoint"
LOAD = /mnt/cluster/llama2/megatron_llama2_70b_tp2_pp8/iter_0000300/
SAVE = /mnt/cluster/llama2/mcore_llama2_70b_tp4_pp4_megatron_iter300_convert
python $CONVERT_CHECKPOINT_PATH /model.py \
--load_platform= megatron \
--save_platform= mcore \
--common_config_path= $CONVERT_CHECKPOINT_PATH /config/llama2-70b.json \
--tensor_model_parallel_size= 4 \
--pipeline_model_parallel_size= 4 \
--megatron_path= $MEGATRON_PATH \
--load_ckpt_path= $LOAD \
--save_ckpt_path= $SAVE \
--no_save_optim \
--no_load_optim
启动模型训练
当前版本暂仅支持预训练和再训练功能,用户可以参考/workspace/AIAK-Training-LLM/examples/目录下的模型完整示例脚本进行训练 。
参数配置说明:在保留和支持开源 Megatron 提供的参数基础上 ,新增了更方便启动训练的参数,具体见aiak_training_llm/train/arguments.py文件。其中:
--model-name:必传,该参数提供两种用法:1)指定模型架构具体名称(推荐),比如llama2-7b, 系统会自动按照llama2-7b的模型结构进行超参配置,而无需用户传递,模型范围见上文模型列表中的Model Architecture。2)指定模型系列名称,比如llama2,该方式系统会决定该系列模型训练所用的代码逻辑,但是用户需要完整的传递模型结构超参,适用需要调整原始模型结构的用户;
--training-phase:指定训练阶段,可选值:pretrain,sft,默认pretrain; 目前暂提供pretrain训练,后续会支持sft;
--tokenizer-type:统一指定为HFTokenizer,用户需通过--hf-tokenizer-path指定 huggingface tokenizer 的路径;后续如有模型不支持,会单独说明;
LLaMA 2-70B训练示例
#! /bin/bash
MEGATRON_PATH = ${MEGATRON_PATH:- "/ workspace/ AIAK-Megatron"}
AIAK_TRAINING_PATH = ${AIAK_TRAINING_PATH:- "/ workspace/ AIAK-Training-LLM"}
DATA_PATH = ${DATA_PATH:- "/ mnt/ cluster/ llama2/ pile/ pile-llama_text_document"}
TOKENIZER_PATH = ${TOKENIZER_PATH:- "/ mnt/ cluster/ llama2/ Llama-2-70b-hf/ "}
CHECKPOINT_PATH = ${CHECKPOINT_PATH:- "/ mnt/ cluster/ llama2/ mcore_llama2_70b_tp4_pp4"}
TENSORBOARD_PATH = ${TENSORBOARD_PATH:- "/ mnt/ cluster/ aiak-training-llm/ tensorboard-log/ llama2-70b-tp4pp4"}
GPUS_PER_NODE = 8
MASTER_ADDR = ${MASTER_ADDR:- "localhost"}
MASTER_PORT = ${MASTER_PORT:- "6000"}
NNODES = ${WORLD_SIZE:- "1"}
NODE_RANK = ${RANK:- "0"}
DISTRIBUTED_ARGS = (
--nproc_per_node $GPUS_PER_NODE
--nnodes $NNODES
--node_rank $NODE_RANK
--master_addr $MASTER_ADDR
--master_port $MASTER_PORT
)
MODEL_ARGS = (
--model-name llama2-70b
)
DATA_ARGS = (
--tokenizer-type HFTokenizer
--hf-tokenizer-path $TOKENIZER_PATH
--data-path $DATA_PATH
--split 949,50 ,1
)
TRAINING_ARGS = (
--training-phase pretrain
--seq-length 4096
--max-position-embeddings 4096
--init-method-std 0.01
--micro-batch-size 1
--global-batch-size 1024
--lr 0.0002
--min-lr 1 .0e-5
--clip-grad 1.0
--weight-decay 0.01
--optimizer adam
--adam-beta1 0.9
--adam-beta2 0.95
--adam-eps 1e-05
--norm-epsilon 1e-6
--train-iters 500000
--lr-decay-iters 500000
--lr-decay-style cosine
--lr-warmup-fraction 0.002
--initial-loss-scale 65536
--fp16
--load $CHECKPOINT_PATH
--save $CHECKPOINT_PATH
--save-interval 5000
--eval-interval 1000
--eval-iters 10
)
MODEL_PARALLEL_ARGS = (
--tensor-model-parallel-size 4
--pipeline-model-parallel-size 4
--use-distributed-optimizer
--overlap-grad-reduce
--overlap-param-gather
--distributed-backend nccl
--sequence-parallel
)
LOGGING_ARGS = (
--log-interval 1
--tensorboard-dir ${TENSORBOARD_PATH}
--log-timers-to-tensorboard
)
if [ -n "${WANDB_API_KEY} " ] ; then
LOGGING_ARGS += (
--wandb-project ${WANDB_PROJECT}
--wandb-exp-name ${WANDB_NAME}
)
fi
PYTHONPATH = $MEGATRON_PATH : $AIAK_TRAINING_PATH : $PYTHONPATH \
torchrun ${DISTRIBUTED_ARGS[ @] } \
$AIAK_TRAINING_PATH /aiak_training_llm/train.py \
${MODEL_ARGS[ @] } \
${DATA_ARGS[ @] } \
${TRAINING_ARGS[ @] } \
${MODEL_PARALLEL_ARGS[ @] } \
${LOGGING_ARGS[ @] }
Qwen 1.5-1.8B训练示例
#! /bin/bash
MEGATRON_PATH = ${MEGATRON_PATH:- "/ workspace/ AIAK-Megatron"}
AIAK_TRAINING_PATH = ${AIAK_TRAINING_PATH:- "/ workspace/ AIAK-Training-LLM"}
DATA_PATH = ${DATA_PATH:- "/ mnt/ cluster/ leoli/ qwen/ qwen_data_1_5/ wudao_qwen2bpe_content_document"}
TOKENIZER_PATH = ${TOKENIZER_PATH:- "/ mnt/ cluster/ leoli/ qwen/ Qwen1.5-1.8B-HF"}
CHECKPOINT_PATH = ${CHECKPOINT_PATH:- "/ mnt/ cluster/ leoli/ qwen/ Qwen1.5_1_8B_mcore_tp1pp1 "}
TENSORBOARD_PATH = ${TENSORBOARD_PATH:- "/ mnt/ cluster/ leoli/ qwen/ tensorboard-log/ qwen1.5-1.8b"}
GPUS_PER_NODE = 8
MASTER_ADDR = ${MASTER_ADDR:- "localhost"}
MASTER_PORT = ${MASTER_PORT:- "6000"}
NNODES = ${WORLD_SIZE:- "1"}
NODE_RANK = ${RANK:- "0"}
DISTRIBUTED_ARGS = (
--nproc_per_node $GPUS_PER_NODE
--nnodes $NNODES
--node_rank $NODE_RANK
--master_addr $MASTER_ADDR
--master_port $MASTER_PORT
)
MODEL_ARGS = (
--model-name qwen1.5-1.8b
--rotary-base 100000000
--rotary-seq-len-interpolation-factor 1
)
DATA_ARGS = (
--tokenizer-type HFTokenizer
--hf-tokenizer-path $TOKENIZER_PATH
--make-vocab-size-divisible-by 1187
--eod-mask-loss
--data-path $DATA_PATH
--split 99,1 ,0
)
TRAINING_ARGS = (
--training-phase pretrain
--seq-length 1024
--max-position-embeddings 32768
--init-method-std 0.006
--micro-batch-size 1
--global-batch-size 2048
--lr 1 .0e-5
--min-lr 1 .0e-6
--clip-grad 1.0
--weight-decay 0.1
--optimizer adam
--adam-beta1 0.9
--adam-beta2 0.95
--adam-eps 1e-08
--norm-epsilon 1e-6
--train-iters 50000
--lr-decay-iters 500000
--lr-decay-style linear
--lr-warmup-iters 500
--initial-loss-scale 65536
--bf16
--accumulate-allreduce-grads-in-fp32
--load $CHECKPOINT_PATH
--save $CHECKPOINT_PATH
--save-interval 5000
--eval-interval 1000
--eval-iters 10
)
MODEL_PARALLEL_ARGS = (
--tensor-model-parallel-size 1
--pipeline-model-parallel-size 1
--use-distributed-optimizer
--overlap-grad-reduce
--overlap-param-gather
--distributed-backend nccl
)
LOGGING_ARGS = (
--log-interval 1
--tensorboard-dir ${TENSORBOARD_PATH}
--log-timers-to-tensorboard
)
if [ -n "${WANDB_API_KEY} " ] ; then
LOGGING_ARGS += (
--wandb-project ${WANDB_PROJECT}
--wandb-exp-name ${WANDB_NAME}
)
fi
PYTHONPATH = $MEGATRON_PATH : $AIAK_TRAINING_PATH : $PYTHONPATH \
torchrun ${DISTRIBUTED_ARGS[ @] } \
$AIAK_TRAINING_PATH /aiak_training_llm/train.py \
${MODEL_ARGS[ @] } \
${DATA_ARGS[ @] } \
${TRAINING_ARGS[ @] } \
${MODEL_PARALLEL_ARGS[ @] } \
${LOGGING_ARGS[ @] }
训练参数说明
0)模型支持列表
Model Family
Model Architecture
llama
llama-7b, llama-13b, llama-65b
llama2
llama2-7b, llama2-13b, llama2-70b
llama3
llama3-8b, llama3-70b
baichuan
baichuan-7b, baichuan-13b
baichuan2
baichuan2-7b, baichuan2-13b
qwen
qwen-1.8b, qwen-7b, qwen-14b, qwen-72b
qwen1.5
qwen1.5-0.5b, qwen1.5-1.8b, qwen1.5-4b, qwen1.5-7b、qwen1.5-14b, qwen1.5-32b, qwen1.5-72b
mixtral
mixtral-8x7b
内置的 Model Architecture,用户可以通过 --model-name参数一键配置, AIAK 会保证模型结构配置与开源版本保持一致,用户无需额外配置模型结构参数(num_layers/heads/hidden_size/...),如下小节会有示例介绍;
1)数据参数
参数名
取值类型
是否必选
默认值
枚举值
描述
--data-path
str
是
None
NA
预训练数据集文件路径
--split
str
否
969, 30, 1
NA
Train/Validate/Test使用数据占比
--train-data-path
str
否
None
NA
训练集路径,不和--data-path 和--split 共同使用
--valid-data-path
str
否
None
NA
验证集路径,不和--data-path 和--split 共同使用
--test-data-path
str
否
None
NA
测试集路径,不和--data-path 和--split 共同使用
--data-cache-path
str
否
None
NA
存储路径,用于缓存可重用的数据集索引
--no-mmap-bin-files
bool
否
False
NA
关闭.bin 文件内存映射
--mock-data
bool
否
False
NA
跳过真实数据读取过程,使用自动生成的模拟数据
--dataloader-type
str
否
single
single、cyclic
单轮或多轮数据读取
--num-workers
int
否
2
NA
Dataloader worker进程数目
--tokenizer-type
str
是
None
NullTokenizer、Llama2Tokenizer、HFTokenizer(推荐)
Tokenizer类型
--hf-tokenizer-path
str
否
None
NA
huggingface tokenizer路径
--use-fast-tokenizer
bool
否
False
NA
使用HFTokenizer类型时,指定使用 fast 版本
--tokenizer-model
str
否
None
NA
使用非HFTokenizer类型时,指定 tokenizer model文件地址
--seq-length
int
是
None
NA
序列长度
2)模型组网参数
自动组网参数
参数名
取值类型
是否必选
默认值
枚举值
描述
--model-name
string
是
无
可选值为“模型支持列表”中对应【Model Family】或【Model Architecture】值
模型名称,支持两种指定方式:
指定模型系列(Model Family)名称,比如 llama2,此时需要根据如下组网参数来描述不同尺寸模型的具体结构;
指定模型架构(Model Architecture)名称,比如 llama2-7b,系统会按开源模型结构来自动配置结构参数,同时部分超参用户仍可调整;
详细组网参数
参数名
取值类型
是否必选
默认值
枚举值
model-name为具体架构时是否自动配置
描述
--num-layers
int
是
None
NA
是
层数
--hidden-size
int
是
None
NA
是
隐层维数
--ffn-hidden-size
int
否
None
NA
是
FFN隐层维数;
--num-attention-heads
int
是
None
NA
是
自注意力的head数
--group-query-attention
bool
否
False
NA
是
使用 GQA
--num-query-groups
int
否
1
NA
是
GQA 中,Query 头分组数目,每组共享KV头
--position-embedding-type
string
是
learned_absolute
learned_ab、olute、rope、alibi
是
Position Embedding类型
--max-position-embeddings
int
是
None
NA
否
使用 learned_absolute 类型时,指定位置 Embedding 最大序列长度
--rotary-interleaved
bool
否
False
NA
是
使用 Interleaved Rotary Embedding
--rotary-percent
float
否
1.0
NA
否
Rotary dimension百分比
--rotary-base
int
否
10000
NA
否
Rotary Base 数值
--rotary-seq-len-interpolation-factor
int
否
None
NA
否
序列长度线性插值因子,用于 rotary embedding;
--attention-dropout
float
否
0.1
NA
是
Post attention dropout概率
--hidden-dropout
float
否
0.1
NA
是
Hidden state transformer dropout概率
--normalization
string
否
LayerNorm
LayerNorm、RMSNorm
是
normalization类型
--norm-epsilon
float
否
1e-5
NA
否
指定 Layernorm 或 Rmsnorm 中的 Epsilon 数值
--use-normhead
bool
否
False
NA
是
baichuan 模型中,部分尺寸会使用normhead
--swiglu
bool
否
False
NA
是
使用 swiglu 激活函数
--disable-bias-linear
bool
否
False
NA
是
Linear 层中不添加 bias
--add-qkv-bias
bool
否
False
NA
是
仅在QKV Linear中添加 bias
--make-vocab-size-divisible-by
int
否
128
NA
否
Pad Vocab 大小可以被指定数值整除
--untie-embeddings-and-output-weights
bool
否
False
NA
是
取消 Embedding 和 Ouput 层的权重共享
3)初始化参数
主要用于从零预训练;
参数名
取值类型
是否必选
默认值
枚举值
描述
--seed
int
否
1234
NA
随机种子,用于python、numpy、pytorch、cuda 等
--data-parallel-random-init
bool
否
False
NA
确保数据并行中不同 Rank 的模型权重随机初始化
--init-method-std
float
否
0.02
NA
权重初始化时,零均值正态分布的标准差
--init-method-xavier-uniform
bool
否
False
NA
使用Xqvier 参数初始化方法
4)优化器和学习率参数
参数名
取值类型
是否必选
默认值
枚举值
描述
--lr
float
是
None
NA
学习率
--min-lr
fload
否
0.0
NA
学习率最小值
--lr-decay-style
str
是
linear
constant、linear、cosine、inverse-square-root
学习率衰减方式
--lr-decay-iters
int
否
None
NA
指定迭代次数用于学习率衰减
--lr-warmup-fraction
float
否
None
NA
学习率warmup比例
--optimizer
str
否
adam
adam、sgd
优化器类型
--weight-decay
float
是
0.01
NA
L2 正则权重衰减系数
--clip-grad
float
否
1.0
NA
梯度clipping
--adam-beta1
float
否
0.9
NA
adam beta1系数
--adam-beta2
float
否
0.999
NA
adam beta2系数
--adam-eps
float
否
1e-8
NA
adam eps项
--sgd-momentum
fload
否
0.9
NA
sgd 优化器动量因子
5)Checkpoint 读取和保存参数
参数名
取值类型
是否必选
默认值
枚举值
描述
--load
str
否
None
NA
加载模型的文件夹路径
--no-load-optim
bool
否
False
NA
不从 checkpoint 中加载优化器状态
--no-load-rng
bool
否
False
NA
不从 checkpoint 中加载 rng 状态
--save
str
否
None
NA
保存模型的文件夹路径
--save-interval
int
否
None
NA
保存模型ckpt的间隔
--no-save-optim
bool
否
False
NA
不保存优化器状态
--no-save-rng
bool
否
False
NA
不保存 RNG 状态
--ckpt-step
int
否
None
NA
指定读取具体 step 的checkpoint
6)混合精度参数
参数名
取值类型
是否必选
默认值
枚举值
描述
--fp16
bool
否
False
NA
FP16开关
--bf16
bool
否
False
NA
BF16开关
--loss-scale
float
否
None
NA
用于 FP16训练,若指定数值,将采用静态 loss 缩放方法,否则将采用动态 loss 缩放
--initial-loss-scale
float
否
2**32
NA
用于 FP16训练,指定动态 loss 缩放时的初始缩放因子
--min-loss-scale
float
否
1.0
NA
用于 FP16训练,指定动态 loss 缩放时的最小缩放因子
--loss-scale-window
float
否
1000
NA
用于 FP16训练,指定动态调整缩放因子的窗口大小
--accumulate-allreduce-grads-in-fp32
bool
否
False
NA
使用 FP32 进行梯度累积和平均;采用 BF16训练时,默认开启该选项
7)分布式参数
参数名
取值类型
是否必选
默认值
枚举值
描述
--tensor-model-parallel-size
int
否
1
NA
张量并行维数
--pipeline-model-parallel-size
int
否
1
NA
流水并行维数
--num-layers-per-virtual-pipeline-stage
int
否
None
NA
使用 Interleaved 1F1B 时,指定每个model chunk的层数
--no-overlap-p2p-communication
bool
否
False
NA
Interleaved pipeline p2p通信隐藏开关
--distributed-backend
str
否
NCCL
nccl、gloo
指定分布式训练时的通信后端
--distributed-timeout-minutes
int
否
10
NA
torch.distributed 接口的通信操作超时时间
--use-distributed-optimizer
bool
否
Fasle
NA
Distributed optimizer开关(ZeRO1)
--overlap-grad-reduce
bool
否
False
NA
开启梯度reduce-scatter和计算 overlap
--overlap-param-gather
bool
否
False
NA
开启参数allgather 和 计算 overlap
--context-parallel-size
int
否
1
NA
Context 序列并行维数
--expert-model-parallel-size
int
否
1
NA
专家并行维数
--tp-comm-overlap
bool
否
false
NA
开启 tp 通信和计算 overlap
8)显存策略参数
参数名
取值类型
是否必选
默认值
枚举值
描述
--sequence-parallel
bool
否
False
NA
使用 Tensor 并行时,开启Sequence parallel用于显存优化
--recompute-activations
bool
否
False
NA
selective 重计算开关
--recompute-granularity
str
否
None
full、selective
重计算粒度
--recompute-method
str
否
None
uniform、block
重计算方式
--recompute-num-layers
int
否
1
NA
重计算层数
--distribute-saved-activations
bool
否
False
NA
中间值结果按tensor model parallel维度切分开关
--offload-optimizer
str
否
disabled
disabled、auto、manual
开启optimizer offload功能,指定为auto 时框架自动计算需要 offload 的显存大小
--offload-optimizer-percent
float
否
1.0
NA
--offload-optimizer=manual时,指定优化器 offload 比例
--no-overlap-offload-optimizer
bool
否
False
NA
开启optimizer offload功能时,关闭数据传输和计算 overlap
--cpu-adam-threads
int
否
1
NA
在 CPU 上进行优化器计算时的线程数
9)MoE 训练参数
参数名
取值类型
是否必选
默认值
枚举值
描述
--moe-router-load-balancing-type
string
否
aux_loss
aux_loss、sinkhorn、none
router 负载均衡策略
--moe-router-topk
int
否
2
NA
每个 token 需要路由的专家数目
--moe-grouped-gemm
bool
否
False
NA
每个rank 存在多个专家时,使用 grouped gemm加速专家计算
--moe-aux-loss-coeff
float
否
0.0
NA
aux loss 缩放系数
--moe-z-loss-coeff
float
否
None
NA
z-loss 缩放系数
--moe-input-jitter-eps
float
否
None
NA
输入 tensor 添加噪声
--moe-token-dropping
bool
否
False
NA
暂不支持;用于指定当达到专家容量时是否丢弃 token;
--moe-token-dispatcher-type
str
否
allgather
allgather、alltoall
token 分发时采用的通信模式
10)其他训练参数
参数名
取值类型
是否必选
默认值
枚举值
描述
--micro-batch-size
int
否
None
NA
单次迭代每个rank的batch size
--global-batch-size
int
是
None
NA
分布式训练全局batch size
--train-iters
int
是
None
NA
训练的迭代轮数
--eval-iters
int
否
100
NA
评估的迭代步数
--eval-interval
int
否
1000
NA
在验证集上进行评估的间隔步数
--log-interval
int
否
100
NA
日志打印的间隔步数
--tensorboard-dir
str
否
None
NA
tensorboard 文件写入路径
--timing-log-level
int
否
0
0/1/2
细粒度指标打印级别
--timing-log-option
str
否
minmax
max、minmax、all
打印 timing log时,可以选择打印最大值、或最小及最大值、或所有值;
--tensorboard-log-interval
int
否
1
NA
tensorboard log写入间隔
--log-timers-to-tensorboard
bool
否
False
NA
开启 timing 指标写入 tensorboard
--log-validation-ppl-to-tensorboard
bool
否
False
NA
将 validation perplexity 数据写入 tensorboard
--wandb-project
str
否
''
NA
wandb 项目名称
--wandb-exp-name
str
否
''
NA
wandb 实验名称