文档

大模型继续预训练解决方案

更新时间:

在人工智能和自然语言处理领域,大语言模型(LLM)已经成为推动技术进步的核心力量。但在实际应用中,针对特定任务或领域的继续预训练往往是提升模型性能的关键。本方案以通义千问2(Qwen2)模型为例,为您介绍如何对模型进行继续预训练。

准备继续预训练数据

大模型的持续预训练解决方案采用了Pai-Megatron-Patch工具包。该工具包专为简化使用Megatron框架训练大语言模型(LLM)和视觉语言模型(VLM)而设计,旨在高效利用GPU计算能力。通过Pai-Megatron-Patch,开发者可以轻松应用Megatron-LM提供的多种加速技术来训练常见的大型语言模型。

此外,Pai-Megatron-Patch使用MMAP格式的预训练数据,这种格式经过预先的tokenize处理,大大缩短了数据读入时间,尤其在数据量庞大时优势明显。您可以通过其数据转换教程,将原始数据转化为MMAP格式,同时在PAI-Designer中也预置了“文本数据转mmap格式”组件。不管是通过数据转换教程还是通过Designer组件,在使用时,PAI-QuickStart限制MMAP格式数据文件名为dataset.bin和dataset.idx。为方便试用,PAI提供了已经处理好的小规模数据,您可直接下载使用:

wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/llama3-datasets/wudao_llama3bpe_content_document.bin
wget https://atp-modelzoo-wlcb-pai.oss-cn-wulanchabu.aliyuncs.com/release/models/pai-megatron-patch/llama3-datasets/wudao_llama3bpe_content_document.idx
mv wudao_llama3bpe_content_document.bin dataset.bin
mv wudao_llama3bpe_content_document.idx dataset.idx

使用PAI-QuickStart进行模型继续预训练

完成数据准备后,您可以在PAI-QuickStart中直接进行模型的继续预训练。本方案以Qwen2-72B模型为例,介绍如何使用已准备好的训练数据进行模型训练。

  1. 进入快速开始页面。

    1. 登录PAI控制台

    2. 在顶部左上角根据实际情况选择地域。

    3. 在左侧导航栏选择工作空间列表,单击指定工作空间名称,进入对应工作空间内。

    4. 在左侧导航栏选择快速开始 > Model Gallery

  2. 在快速开始页面右侧的模型列表中,单击通义千问2-72B-预训练(Megatron版)模型卡片,进入模型详情页面。

  3. 模型详情页单击右上角微调训练。关键配置如下:

    • 训练输出配置:仅支持NAS数据集(创建数据集)作为输出Channel。在输出文件夹中,checkpoint子文件夹保存训练过程中存储的各个Megatron Checkpoint。

    • 计算资源配置:Qwen2-72B模型继续预训练消耗的计算资源为4机32*A100/A800/H100/H800(80G)或以上规格。

    • 超参数配置:训练算法支持的超参信息如下,您可以根据使用的数据,计算资源等调整超参,或是使用算法默认配置的超参。

      超参数

      默认值

      类型

      含义

      job_name

      qwen2-72b-cpt

      string

      指定模型训练任务类型,不需要修改。

      batch_size

      1

      int

      每张GPU卡在一次训练迭代的数据量。

      global_batch_size

      32

      int

      全部GPU卡在一次训练迭代的数据量,计算方式为batch_size*GPU卡数。

      learning_rate

      5e-5

      float

      模型训练的学习率。

      min_learning_rate

      5e-6

      float

      模型训练的最小学习率。

      sequence_length

      1024

      int

      文本序列长度。

      pad_length

      128

      int

      文本序列填充长度。

      save_interval

      1000

      int

      每次保存Checkpoint的训练迭代次数。

      train_tokens

      1638400

      int

      训练任务总消耗的token数,其中,每个迭代消耗的token数为global_batch_size*sequence_length。

      warmup_tokens

      163840

      int

      训练任务warmup阶段总消耗的token数。

  4. 单击训练,PAI-QuickStart自动跳转到模型训练页面,并开始进行训练,您可以查看训练任务状态和训练日志。

(可选)将模型Checkpoint转换为HuggingFace格式

Qwen2-72B模型预训练格式为Megatron Dense Checkpoint。如果需要将此格式的Checkpoint转换为 Huggingface模型,请参见Megatron-Core模型格式转换