快速创建断点续训任务

本文以大模型训练为例,体验断点续训的功能特点,整个体验分为三个部分:

  1. 资源准备,收藏资源仓库中的数据集、镜像等;

  2. 创建断点续训任务;

  3. 演示故障发生后的断点保存和恢复。

资源准备

单击右上角菜单栏选择“资源仓库”,进入“资源仓库”页面,资源仓库操作指南可参见 资源仓库简介

数据集准备

  1. 单击上方的“数据集”,搜索“openwebtext”数据集;

  2. 单击“openwebtext”数据集,单击详情页右上方的“收藏至算力平台”,选择“v1”版本,单击“收藏”。

镜像准备

  1. 单击上方的“镜像 Hub”,搜索“pytorch”;

  2. 单击“pytorch”,单击详情页右上方的“收藏至算力平台”,选择“v1.18.0-pytorch1.13.1-ubuntu18.04”版本,单击“收藏”。

算法准备

  1. 单击上方的“算法”,搜索“Megatron-LM-MLU”算法;

  2. 单击“Megatron-LM-MLU”算法,单击详情页右上方的“收藏至算力平台”,选择“v1”版本,单击“收藏”;

  3. 进入“算力平台”页面;

  4. 单击左侧功能栏选择“算法管理”->“算法卷”,选择“算法收藏”;

  5. 单击“Megatron-LM-MLU”算法,进入详情页,点击“文件列表”下的“v1”版本,点击右侧“名称”下的“克隆当前目录”,配置如下:

    • 目标算法卷设置成“新建”;

    • 存储集群和名称按需设置;

    • 大小设置成“100”GiB;

    ../_images/quick_start_clone_algo.png

    图 53 算法准备

模型准备

  1. 进入“算力平台”页面;

  2. 单击左侧功能栏选择“模型管理”->“模型卷”;

  3. 单击右上角“添加我的模型”,模型名称填写“resume”,该模型卷用于保存checkpoint;

  4. “模型类型”和“应用场景”根据实际训练完成的模型进行选择,本例中,“模型类型”选择“自定义”;

  5. “大小”设置成100G,单击“添加”。

../_images/quick_start_create_model_volume_for_resume.png

图 54 创建模型卷

更多模型卷操作参见 模型卷

算力规格准备

本例中需要的算力资源为“2机8张MLU370卡”,因此单节点规格为8张MLU370,若无合适的算力规格,请联系平台管理员创建。

专属资源池准备

断点续训任务需要设置专属资源池,本例中需要的算力资源为“2机8张MLU370卡”,所以专属资源池至少包含2个8张MLU370的节点,若无合适的资源池,请联系平台管理员创建。

专属资源池提供独享的计算资源,可用于训练作业,开发环境。使用专属资源池的任务不与其他任务共享资源,能够保证断点续训任务顺利进行。

创建断点续训任务

  1. 左侧功能栏选择“训练管理->任务式训练”;

  2. 单击右上角“创建任务式训练”;

  3. 按照页面提示配置参数:

    • 名称填写“resume”;

    • 他人访问权限:可读写,他人访问权限具体可参见 他人访问权限

    • 任务类型:常规任务;

    • 优先级:正常,优先级说明可参见 优先级说明

    • 数据集选择“数据集收藏”的“openwebtext”;

    • 算法选择“我的算法”的“Megatron-LM-MLU”,不要勾选“只读”;

    • 保存模型地址选择“我的模型”的“resume”,不要勾选“只读”;

    • 分布式模式选择“PyTorch”;

    • 资源类型:专属资源池,下拉选择合适的资源池;

    • 单节点规格选择含有8张MLU370卡的规格;若无算力规格,可联系平台管理员创建;

    ../_images/quick_start_create_resume_job_1.png

    图 55 创建断点续训任务配置(1)

    • 镜像选择“镜像收藏”,下拉选择“pytorch”,版本为“v1.18.0-pytorch1.13.1-ubuntu18.04”;

    • 节点数填写 2;

    • 运行指令选择“专家模式”,输入指令如下:

    sh -c 'cd /workspace/algorithm; export DATASET=/workspace/dataset/favorite/openwebtext/v1/openwebtext-gpt_text_document;export MERGE_FILE=/workspace/dataset/favorite/openwebtext/v1/gpt2-merges.txt;export VOCAB_FILE=/workspace/dataset/favorite/openwebtext/v1/gpt2-vocab.json;export CHECKPOINT_PATH=/workspace/outputs/resume/ckpt;export DATA_CACHE=/workspace/outputs/resume/cache;export AUTORESUME_USE_UNRELIABLE_CKPT=1;bash examples/llama_run.sh'
    
    • 开启“断点续训”,若无该配置,可联系平台管理员;

      • 最大续训次数:故障发生后,训练任务最大的重试次数,本例中设置为“10”,

      • 优雅关闭时间:当任务式训练结束或中断时,在该时间段内若运行指令未结束,会强制终止容器,该值设置成保存ckpt所需的最大时间,本例中设置成“120”秒;

      • 弹性训练:详细介绍参见 弹性训练 ,本例中“关闭”;

      • 性能检测:详细介绍参见 性能检测 ,本例中设置成“仅告警”,性能阈值设置成“80%”;

    • 禁用“数据准备”;

    • 使用时长按需设置,当任务的运行时长超过“使用时长”后,任务状态会转为“过期”。

    ../_images/quick_start_create_resume_job_2.png

    图 56 创建断点续训任务配置(2)

  4. 单击“创建”,等待任务式训练状态变成“运行中”;

  5. 单击任务名称,在详情页可看到监控、日志信息等。

故障发现和恢复

  1. 当有异常发生时,训练任务的状态会变成“调度中”;

  2. 在训练任务的日志页面可看到类似信息如下:

    ../_images/quick_start_resume_log.png

    图 57 保存断点 checkpoint

    表示保存了断点发生时的 checkpoint,也就是 iteration 8196 的 checkpoint。

  3. 在训练任务的事件中,可以看到异常的节点以及异常的原因:

    ../_images/quick_start_resume_exception.png

    图 58 异常原因

    表示节点 njb-0g05-ai03-dm8 的 MLU 板卡出现了 XID ERROR,从而触发了异常中断。

  4. 当集群中空闲节点足够或者是可自动恢复的异常,等待一会训练会自动转变成“运行中”。

  5. 在训练任务的日志中,可看到如下信息:

    ../_images/quick_start_load_ckpt_log.png

    图 59 加载断点 checkpoint

    表示保存了加载了iteration 8196也就是断点处的checkpoint。

更多断点续训相关介绍,请参见 断点续训说明