更新时间:2024-06-17 GMT+08:00
分享

断点续训练

断点续训练是指因为某些原因导致训练作业还未完成就被中断,下一次训练可以在上一次的训练基础上继续进行。这种方式对于需要长时间训练的模型而言比较友好。

断点续训练是通过checkpoint机制实现。checkpoint机制是在模型训练的过程中,不断地保存训练结果(包括但不限于EPOCH、模型权重、优化器状态、调度器状态)。即便模型训练中断,也可以基于checkpoint接续训练。

当需要从训练中断的位置接续训练,只需要加载checkpoint,并用checkpoint信息初始化训练状态即可。用户需要在代码里加上reload ckpt的代码,用于读取前一次训练保存的预训练模型。

断点续训练操作过程

Llama2-70B的断点续训脚本llama2.sh,存放在“xxx-Ascend/llm_train/AscendSpeed/scripts/llama2”目录下。

  1. 执行命令如下,进入AscendSpeed代码目录。xxx-Ascend请根据实际目录替换。
    cd /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/
  1. 修改断点续训练参数。断点续训前,需要在原有训练参数配置表1中新加“MODEL_PATH”参数,并修改“TRAIN_ITERS”参数和“RUN_TYPE”参数。
    表1 断点续训练修改参数

    参数

    参考值

    参数说明

    MODEL_PATH

    /home/ma-user/ws/saved_dir_for_ma_output/Llama2-70B/pretrain

    必填。加载上一步预训练后保存的权重文件。

    请根据实际规划修改。

    TRAIN_ITERS

    300

    必填。表示训练周期,必须大于上次保存训练的周期次数。

    RUN_TYPE

    retrain

    必填。训练脚本类型,retrain表示断点续训练。

  2. 在AscendSpeed代码目录下执行断点续训练脚本。
    多机启动
    以Llama2-70B为例,多台机器执行训练启动命令如下。多机启动需要在每个节点上执行,以8机为例。
    #第一台节点
    MASTER_ADDR=xx.xx.xx.xx NNODES=8 NODE_RANK=0 MODEL_TYPE=70B  RUN_TYPE=retrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-70B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Llama2-70B/tokenizer.model MODEL_PATH=/home/ma-user/ws/saved_dir_for_ma_output/Llama2-70B/pretrain TRAIN_ITERS=300 MBS=2  GBS=1024 TP=8 PP=8 WORK_DIR=/home/ma-user/ws sh scripts/llama2/llama2.sh
    # 第二台节点 
    MASTER_ADDR=xx.xx.xx.xx NNODES=8 NODE_RANK=1 MODEL_TYPE=70B  RUN_TYPE=retrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-70B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Llama2-70B/tokenizer.model MODEL_PATH=/home/ma-user/ws/saved_dir_for_ma_output/Llama2-70B/pretrain TRAIN_ITERS=300 MBS=2  GBS=1024 TP=8 PP=8 WORK_DIR=/home/ma-user/ws sh scripts/llama2/llama2.sh
    ...
    ...
    # 第八台节点 
    MASTER_ADDR=xx.xx.xx.xx NNODES=8 NODE_RANK=7 MODEL_TYPE=70B  RUN_TYPE=retrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-70B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Llama2-70B/tokenizer.model MODEL_PATH=/home/ma-user/ws/saved_dir_for_ma_output/Llama2-70B/pretrain TRAIN_ITERS=300 MBS=2  GBS=1024 TP=8 PP=8 WORK_DIR=/home/ma-user/ws sh scripts/llama2/llama2.sh

    以上命令多台机器执行时,只有NODE_RANK的节点ID不同,其他参数都保持一致。

    其中MASTER_ADDR、 NODE_RANK、 NODE_RANK、MODEL_TYPE 、RUN_TYPE、DATASET_PATH、TOKENIZER_PATH、MODEL_PATH为必填;TRAIN_ITERS、MBS、GBS、 TP、PP、WORK_DIR为非必填,有默认值。

    单机启动

    对于Llama2-7B和Llama2-13B,操作过程与Llama2-70B相同,只需修改对应参数即可,可以选用单机启动,以Llama2-13B为例。

    进入代码目录/home/ma-user/ws/llm_train/AscendSpeed下执行启动脚本,先修改以下命令中的参数,再复制执行。

    #非必填参数,有默认值
    MBS=4  \
    GBS=64 \
    TP=8 \
    PP=1 \
    TRAIN_ITERS=200 \
    WORK_DIR=/home/ma-user/ws \
    #必填参数
    MODEL_TYPE=13B  \
    RUN_TYPE=retrain \
    DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-13B/data/pretrain/alpaca_text_document \
    TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Llama2-13B/tokenizer.model \
    MODEL_PATH=/home/ma-user/ws/saved_dir_for_ma_output/Llama2-13B/pretrain \
    sh scripts/llama2/llama2.sh
    图1 保存的ckpt
  3. 训练完成后,参考查看日志和性能操作,查看断点续训练日志和性能。
分享:

    相关文档

    相关产品