阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

这篇具有很好参考价值的文章主要介绍了阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文介绍如何使用GPU云服务器,使用Megatron-Deepspeed框架训练GPT-2模型并生成文本。

背景信息

GPT-2模型是OpenAI于2018年在GPT模型的基础上发布的新的无监督NLP模型,当时被称为“史上最强通用NLP模型”。该模型可以生成连贯的文本段落,并且能在未经预训练的情况下,完成阅读理解、问答、机器翻译等多项不同的语言建模任务。GPT-2模型尤其在文本生成上有着惊艳的表现,其生成的文本在上下文连贯性和情感表达上都超过了人们的预期。

GPT-2模型由多层单向Transformer的解码器部分构成,根据模型层次规模,GPT-2模型有以下几个规格:

阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

Megatron-Deepspeed框架结合了两种主要技术:

  • Megatron-LM是由NVIDIA开源的Transformer 模型框架。

  • DeepSpeed是由Microsoft开源的一个深度学习优化库

DeepSpeed团队通过将DeepSpeed库中的ZeRO分片(ZeRO sharding)数据并行(Data Parallelism)和管道并行(Pipeline Parallelism)与Megatron-LM中的张量并行(Tensor Parallelism)相结合,开发了一种基于3D并行的实现,这就是Megatron-Deepspeed,它使得千亿级参数量以上的大规模语言模型(LLM)的分布式训练变得更简单、高效和有效。

本文基于阿里云GPU服务器,使用Megatron-Deepspeed框架训练GPT-2模型并生成文本。

阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

重要

  • 阿里云不对第三方模型“GPT-2”的合法性、安全性、准确性进行任何保证,阿里云不对由此引发的任何损害承担责任。

  • 您应自觉遵守第三方模型的用户协议、使用规范和相关法律法规,并就使用第三方模型的合法性、合规性自行承担相关责任。

操作步骤

创建ECS实例

在ECS实例创建页面,创建ECS实例。

关键参数说明如下,其他参数的配置,请参见自定义购买实例。

  • 实例规格:选择ecs.gn7i-c8g1.2xlarge(单卡NVIDIA A10)。

    阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

  • 镜像:使用云市场镜像,名称为aiacc-train-solution,您可以直接通过名称搜索该镜像,选择最新版本即可。

    阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

  • 公网IP:选中分配公网IPv4地址,带宽计费方式选择按使用流量,带宽峰值选择100 Mbps,以加快模型下载速度。

    阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

安装Megatron-Deepspeed框架

  1. 使用root用户远程登录ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例。

  2. 执行以下命令,启动容器。

    docker run -d -t --network=host --gpus all --privileged --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --name megatron-deepspeed -v /etc/localtime:/etc/localtime -v /root/.ssh:/root/.ssh nvcr.io/nvidia/pytorch:21.10-py3
  3. 执行以下命令,进入容器终端。

    docker exec -it megatron-deepspeed bash
  4. 执行以下命令,下载Megatron-DeepSpeed框架。

    git clone https://github.com/bigscience-workshop/Megatron-DeepSpeed
  5. 执行以下命令,安装Megatron-DeepSpeed框架。

    cd Megatron-DeepSpeed
    pip install -r requirements.txt

处理数据

本指南使用1GB 79K-record的JSON格式的OSCAR数据集。

  1. 执行以下命令,下载数据集。

    wget https://huggingface.co/bigscience/misc-test-data/resolve/main/stas/oscar-1GB.jsonl.xz
    wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-vocab.json
    wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-merges.txt
  2. 执行以下命令,解压数据集。

    xz -d oscar-1GB.jsonl.xz
  3. 执行以下命令,预处理数据。

    python3 tools/preprocess_data.py \
        --input oscar-1GB.jsonl \
        --output-prefix meg-gpt2 \
        --vocab gpt2-vocab.json \
        --dataset-impl mmap \
        --tokenizer-type GPT2BPETokenizer \
        --merge-file gpt2-merges.txt \
        --append-eod \
        --workers 8

    如果回显信息类似如下所示,表示预处理数据完成。

    阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

  4. 执行以下命令,新建data目录。

    mkdir data
  5. 执行以下命令,将处理好的数据移动到data目录下。

    mv meg-gpt2* ./data
    mv gpt2* ./data

预训练

本示例使用单机单卡的GPU实例完成GPT-2 MEDIUM模型的预训练。

  1. 创建预训练脚本文件。

    1. 执行以下命令,创建预训练脚本文件。

      vim pretrain_gpt2.sh
    2. i键,进入编辑模式,在文件中添加以下信息。

      #! /bin/bash
      
      # Runs the "345M" parameter model
      
      GPUS_PER_NODE=1
      # Change for multinode config
      MASTER_ADDR=localhost
      MASTER_PORT=6000
      NNODES=1
      NODE_RANK=0
      WORLD_SIZE=$(($GPUS_PER_NODE*$NNODES))
      
      DATA_PATH=data/meg-gpt2_text_document
      CHECKPOINT_PATH=checkpoints/gpt2
      
      DISTRIBUTED_ARGS="--nproc_per_node $GPUS_PER_NODE --nnodes $NNODES --node_rank $NODE_RANK --master_addr $MASTER_ADDR --master_port $MASTER_PORT"
      
      python -m torch.distributed.launch $DISTRIBUTED_ARGS \
             pretrain_gpt.py \
             --tensor-model-parallel-size 1 \
             --pipeline-model-parallel-size 1 \
             --num-layers 24 \
             --hidden-size 1024 \
             --num-attention-heads 16 \
             --micro-batch-size 4 \
             --global-batch-size 8 \
             --seq-length 1024 \
             --max-position-embeddings 1024 \
             --train-iters 5000 \
             --lr-decay-iters 320000 \
             --save $CHECKPOINT_PATH \
             --load $CHECKPOINT_PATH \
             --data-path $DATA_PATH \
             --vocab-file data/gpt2-vocab.json \
             --merge-file data/gpt2-merges.txt \
             --data-impl mmap \
             --split 949,50,1 \
             --distributed-backend nccl \
             --lr 0.00015 \
             --lr-decay-style cosine \
             --min-lr 1.0e-5 \
             --weight-decay 1e-2 \
             --clip-grad 1.0 \
             --lr-warmup-fraction .01 \
             --checkpoint-activations \
             --log-interval 10 \
             --save-interval 500 \
             --eval-interval 100 \
             --eval-iters 10 \
             --fp16
    3. Esc键,输入:wq后,按Enter键保存文件。

  2. 修改测试代码。

    Megatron源码有一个断言需要注释掉,以保证代码正常运行。

    1. 执行以下命令,打开测试代码文件。

      vim /workspace/Megatron-DeepSpeed/megatron/model/fused_softmax.py +191
    2. i键,进入编辑模式,在assert mask is None, "Mask is silently ignored due to the use of a custom kernel"前加#

      阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

    3. Esc键,输入:wq后,按Enter键保存文件。

  3. 预训练。

    1. 执行以下命令,开始预训练。

      nohup sh ./pretrain_gpt2.sh &

      阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

    2. 执行如下命令,可以持续的查看nohup.out的输出,达到监控程序的效果。

      tail -f nohup.out

      如果回显信息类似如下所示,表示预训练完成。

      阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

      说明 

      预训练完成大概需要1小时30分钟,如果超时断开了ECS连接,重新远程登录ECS实例后,执行以下命令,继续查看预训练进度。预训练完成后,可以执行Ctrl+Z命令退出。

      docker exec -it megatron-deepspeed bash
      cd Megatron-DeepSpeed
      tail -f nohup.out
  4. (可选)执行以下命令,查看生成的模型checkpoint路径。

    本示例生成的模型checkpoint路径设置在/workspace/Megatron-DeepSpeed/checkpoints/gpt2

    ll ./checkpoints/gpt2

    阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

使用GPT-2模型生成文本

  1. 执行以下命令,安装相关依赖。

    说明 

    由于网络原因,执行命令后可能会失败,建议您多次尝试。

    pip install mpi4py

    如果回显信息类似如下所示,表示依赖安装完成。

    阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

  2. 创建文本生成脚本。

    1. 执行以下命令,创建文本生成脚本。

      vim generate_text.sh
    2. i键,进入编辑模式,在文件中增加以下内容。

      #!/bin/bash
      
      CHECKPOINT_PATH=checkpoints/gpt2
      VOCAB_FILE=data/gpt2-vocab.json
      MERGE_FILE=data/gpt2-merges.txt
      
      python tools/generate_samples_gpt.py \
             --tensor-model-parallel-size 1 \
             --num-layers 24 \
             --hidden-size 1024 \
             --load $CHECKPOINT_PATH \
             --num-attention-heads 16 \
             --max-position-embeddings 1024 \
             --tokenizer-type GPT2BPETokenizer \
             --fp16 \
             --micro-batch-size 2 \
             --seq-length 1024 \
             --out-seq-length 1024 \
             --temperature 1.0 \
             --vocab-file $VOCAB_FILE \
             --merge-file $MERGE_FILE \
             --genfile unconditional_samples.json \
             --num-samples 2 \
             --top_p 0.9 \
             --recompute
    3. Esc键,输入:wq后,按Enter键保存文件。

  3. 执行以下命令,生成文本。

    sh ./generate_text.sh

    如果回显信息类似如下所示,表示生成文本完成。

    阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本

  4. 执行以下命令,查看生成的JSON格式的文本文件。

    vim unconditional_samples.json

    回显信息类似如下所示。

    阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本文章来源地址https://www.toymoban.com/news/detail-489003.html

了解更多AIGC实践和GPU优惠

到了这里,关于阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云林立翔:基于阿里云 GPU 的 AIGC 小规模训练优化方案

    本篇文章围绕生成式 AI 技术栈、生成式 AI 微调训练和性能分析、ECS GPU 实例为生成式 AI 提供算力保障、应用场景案例等相关话题展开。 1、生成式 AI 爆发的历程 在 2022 年的下半年,业界迎来了生成式 AI 的全面爆发,尤其是以 ChatGPT 为代表的大语言模型和以 Stable Diffusion 为代

    2024年02月02日
    浏览(25)
  • DeepSpeed: 大模型训练框架

    目前,大模型的发展已经非常火热,关于大模型的训练、微调也是各个公司重点关注方向。但是大模型训练的痛点是模型参数过大,动辄上百亿,如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这项工作。 1.1 目前主流的大模型分布式训练主要包

    2024年02月08日
    浏览(26)
  • 基于DeepSpeed训练ChatGPT

      最近微软发布了一个基于DeepSpeed的训练优化框架来完成ChatGPT类模型的训练,博主对其进行了研究并通过此博文分享相关技术细节。 1、开源仓库 :DeepSpeed-Chat 2、配置要求: ● cuda:11.0以上 ● torch:1.12.1+cu113 ● deepspeed:0.9.0 ● transformers:4.29.0.dev0 3、开源语料(Hugging

    2023年04月22日
    浏览(43)
  • AI:DeepSpeed Chat(一款帮用户训练自己模型的工具且简单/低成本/快 RLHF 训练类ChatGPT高质量大模型)的简介、安装、使用方法之详细攻略

    AI:DeepSpeed Chat(一款帮用户训练自己模型的工具且简单/低成本/快 RLHF 训练类ChatGPT高质量大模型)的简介、安装、使用方法之详细攻略 目录 DeepSpeed Chat的简介 DeepSpeed-Chat的产生背景 DeepSpeed-Chat的简介 DeepSpeed-Chat的三大功能 DeepSpeed-RLHF 系统三大优势 DeepSpeed Chat的安装和使用方法

    2023年04月22日
    浏览(37)
  • 分布式并行训练(DP、DDP、DeepSpeed)

    [pytorch distributed] 01 nn.DataParallel 数据并行初步 数据并行 vs. 模型并行 数据并行 :模型拷贝(per device),数据 split/chunk(对batch切分) 每个device上都拷贝一份完整模型,每个device分别处理1个batch的一部分(如batch_size=64, 2个device, 每device处理32个样本) 梯度反向传播时,每个设备上

    2024年02月07日
    浏览(38)
  • [论文笔记] PAI-Megatron 1、Qwen continuing pretrain(CT)千问预训练

    通义千问开源模型在PAI灵骏的最佳实践 - 知乎 https://github.com/alibaba/Pai-Megatron-Patch/blob/main/examples/megatron.md         目标:使用qwen基座来做CT。         数据情况:预训练数据已经用qwen-tokenizer分过词。所以不需要准备数据。如果需没有数据,也可以从Pai-Megatron上拉数据。  

    2024年01月20日
    浏览(35)
  • rwkv模型lora微调之accelerate和deepspeed训练加速

            目录 一、rwkv模型简介 二、lora原理简介 三、rwkv-lora微调 1、数据整理 2、环境搭建 a、Dockerfile编写 b、制造镜像 c、容器启动 3、训练代码修改 四、模型推理 1、模型推理 2、lora权重合并 3、推理web服务 五、总结         由于业务采用的ChatGLM模型推理成本太大了,

    2024年02月06日
    浏览(42)
  • deepspeed训练报错torch.distributed.elastic.multiprocessing.errors.ChildFailedError

    测试场景:使用deepspeed框架训练gpt模型 问题: 报错torch.distributed.elastic.multiprocessing.errors.ChildFailedError 具体见截图: 解决办法: 含义:表明在运行 train.py 脚本时,传递了一个未被识别的参数 --local-rank=1 这里我在train.py脚本文件中果然没有找到–local-rank参数,在很多的parser

    2024年02月08日
    浏览(31)
  • 解决deepspeed框架的bug:不保存调度器状态,模型训练重启时学习率从头开始

    deepspeed存在一个bug,即在训练时不保存调度器状态,因此如果训练中断后再重新开始训练,调度器还是会从头开始而不是接着上一个checkpoint的调度器状态来训练。这个bug在deepspeed的github中也有其他人提出:https://github.com/microsoft/DeepSpeed/issues/3875 因此我们需要写一个保存调度器

    2024年02月09日
    浏览(37)
  • 阿里云X森马 AIGC T恤设计大赛;SD新手入门完全指南;揭秘LLM训练中的数学;LLM高质量阅读清单 | ShowMeAI日报

    👀 日报周刊合集 | 🎡 生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 比赛官网:https://developer.aliyun.com/adc/series/activity/aigc_design 阿里云携手服装品牌森马,推出了本次 AIGC T 恤设计大赛。开发者、设计师、AI绘画爱好者,都可以使用阿里云函数计算快速部署 Stable D

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包