预训练任务
配置预训练脚本qwen.sh中的超参,并执行预训练任务。
这里以Qwen-14B为例,对于Qwen-7B和Qwen-72B,操作过程与Qwen-14B相同,只需修改对应参数即可。
预训练超参配置
预训练脚本qwen.sh,存放在“xxx-Ascend/llm_train/AscendSpeed/scripts/qwen”目录下。训练前,需要根据实际需要配置超参。
参数 |
示例值 |
参数说明 |
---|---|---|
DATASET_PATH |
/home/ma-user/ws/processed_for_ma_input/Qwen-14B/data/pretrain/alpaca_text_document |
必填。训练时指定的输入数据路径。一般为数据地址/处理后的数据前缀名,不加文件类型后缀。 请根据实际规划修改。 |
TOKENIZER_PATH |
/home/ma-user/ws/tokenizers/Qwen-14B |
必填。加载tokenizer时,tokenizer存放地址。 请根据实际规划修改。 |
MODEL_TYPE |
14B |
必填。表示模型加载类型,根据实际填写7B、14B或72B。 |
TRAIN_ITERS |
200 |
非必填。表示训练迭代周期,根据实际需要修改。 |
MBS |
2 |
非必填。表示流水线并行中一个micro batch所处理的样本量。在流水线并行中,为了减少气泡时间,会将一个step的数据切分成多个micro batch。 该值与TP和PP以及模型大小相关,可根据实际情况进行调整。默认值为2。取值建议如下:
|
GBS |
64 |
非必填。表示训练中所有机器一个step所处理的样本量。影响每一次训练迭代的时长。 默认值为64。对于PP(流水线并行)值大于1的场景,增大GBS值吞吐性能会有提升。 |
TP |
8 |
非必填。表示张量并行。默认值为8,取值建议:
|
PP |
1 |
非必填。表示流水线并行。默认值为1,取值建议:
|
RUN_TYPE |
pretrain |
必填。表示训练类型,根据实际训练任务类型选择。取值说明:
|
MASTER_ADDR |
localhost |
多机必填。主节点IP地址,多台机器中需要指定一个节点IP为主节点IP。 一般指定第一个节点IP为主节点IP。 |
NNODES |
1 |
多机必填。节点总数,如为双机,则写2。单机默认是1。 |
NODE_RANK |
0 |
多机必填。节点序号,当前节点ID,一般从0开始,单机默认是0。以Qwen-72B 5机训练为例,节点ID依次为(0 1 2 3 4);一般ID为0的节点设置为主节点IP。 |
WORK_DIR |
/home/ma-user/ws |
容器的工作目录。训练的权重文件保存在此路径下。非必填,默认值为:/home/ma-user/ws。 |
SEQ_LEN |
4096 |
非必填。默认值为4096。 |
启动训练脚本
请根据表1修改超参值后,再启动训练脚本。
单机启动
以Qwen-14B为例,单机训练启动样例命令如下。在/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/代码目录下。
MODEL_TYPE=14B RUN_TYPE=pretrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Qwen-14B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Qwen-14B TRAIN_ITERS=200 MBS=2 GBS=64 TP=8 PP=1 SEQ_LEN=4096 WORK_DIR=/home/ma-user/ws sh scripts/qwen/qwen.sh
其中 MODEL_TYPE 、RUN_TYPE、DATASET_PATH、TOKENIZER_PATH为必填,TRAIN_ITERS、MBS、GBS、TP、PP、SEQ_LEN为非必填,有默认值。
多机启动
以Qwen-14B为例,多台机器执行训练启动命令如下。多机启动需要在每个节点上执行,以双机为例。在/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/代码目录下执行。
#第一台节点 MASTER_ADDR=xx.xx.xx.xx NNODES=2 NODE_RANK=0 MODEL_TYPE=14B RUN_TYPE=pretrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Qwen-14B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Qwen-14B TRAIN_ITERS=200 MBS=2 GBS=64 TP=8 PP=1 SEQ_LEN=4096 WORK_DIR=/home/ma-user/ws sh scripts/qwen/qwen.sh ... ... # 第二台节点 MASTER_ADDR=xx.xx.xx.xx NNODES=2 NODE_RANK=1 MODEL_TYPE=14B RUN_TYPE=pretrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Qwen-14B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Qwen-14B TRAIN_ITERS=200 MBS=2 GBS=64 TP=8 PP=1 SEQ_LEN=4096 WORK_DIR=/home/ma-user/ws sh scripts/qwen/qwen.sh
以上命令多台机器执行时,只有${NODE_RANK}的节点ID值不同,其他参数都保持一致。
其中MASTER_ADDR、 NODE_RANK、 NODE_RANK、MODEL_TYPE 、RUN_TYPE、DATASET_PATH、TOKENIZER_PATH为必填,TRAIN_ITERS、MBS、GBS、TP、PP、WORK_DIR、SEQ_LEN为非必填,有默认值。
等待模型载入
执行训练启动命令后,等待模型载入,当出现“training”关键字时,表示开始训练。训练过程中,训练日志会在最后的Rank节点打印。
更多查看训练日志和性能操作,请参考查看日志和性能章节。
如果需要使用断点续训练能力,请参考断点续训练章节修改训练脚本。