GPU实验室-通过GPU云服务器训练GPT-2

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

实验简介:

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

实验室地址:https://developer.aliyun.com/adc/scenario/exp/85b05a98c93049f198a4705bb59486e0

查看更多最佳实践https://www.aliyun.com/daily-act/ecs/markets/aliyun/gpu/aigc


实验说明


1. 实验资源方式简介及开始

a.云起实验室支持个人账户资源一种实验资源方式。

  • 个人账户资源
  • 使用您个人的云资源进行操作,资源归属于个人。
  • 所有实验操作将保留至您的账号,请谨慎操作。
  • 平台仅提供手册参考,不会对资源做任何操作。
  • 说明:使用个人账户资源,在创建资源时,可能会产生一定的费用,请您及时关注相关云产品资源的计费概述。

b.准备开始实验

  • 在实验开始前,请您选择个人账户资源,单击确认开启实验。

2. 创建ECS实例

a.前往实例创建页

b.按照界面提示完成参数配置,创建一台ECS实例。

  • 实例:选择实例规格为ecs.gn7i-c8g1.2xlarge(单卡NVIDIA A10)。
  • 镜像:使用云市场镜像,名称为aiacc-train-solution,您可以直接通过名称搜索该镜像,选择最新版本即可。

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

c.为当前ECS实例设置登录密码,登录凭证选择自定义密码,登录名选择root,输入登录密码和确认密码。

d.在云服务ECS购买页面右侧,选中服务协议,单击确认下单。

e.在创建成功对话框中,单击管理控制台。创建完成后,在ECS实例页面,获取公网IP地址。

f.在实例页面,等待状态变为运行中后,即可使用该云服务器ECS。

3. 安装Megatron-Deepspeed框架

a.在实验室页面右侧,单击图标,切换至Web Terminal。

  • 输入ECS服务器登录用户名和密码,登录ECS。

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

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

c.执行以下命令,进入容器终端。

docker exec -it megatron-deepspeed bash

d.执行以下命令,下载Megatron-DeepSpeed框架。

  • 说明:由于网络原因,执行命令后可能会失败,建议您多次尝试。
git clone https://github.com/bigscience-workshop/Megatron-DeepSpeed

e.执行以下命令,安装Megatron-DeepSpeed框架。

cd Megatron-DeepSpeed
pip install -r requirements.txt


4. 处理数据

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

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

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

b.执行以下命令,解压数据集。

xz -d oscar-1GB.jsonl.xz

c.执行以下命令,预处理数据。

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
  • 如果回显信息类似如下所示,表示预处理数据完成。

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

mkdir data

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

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


5. 预训练

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

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

  • 执行以下命令,创建预训练脚本文件。
vim pretrain_gpt2.sh
  • 按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
  • 按Esc键,输入:wq后,按Enter键保存文件。
htpasswd -bc /etc/nginx/password ${UserName} '${Password}'

b.修改测试代码。

  • Megatron源码有一个断言需要注释掉,以保证代码正常运行。
  • 执行以下命令,打开测试代码文件。
vim /workspace/Megatron-DeepSpeed/megatron/model/fused_softmax.py +191
  • 按i键,进入编辑模式,在assert mask is None, "Mask is silently ignored due to the use of a custom kernel"前加#。

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

c.预训练。

  • 执行以下命令,开始预训练。
nohup sh ./pretrain_gpt2.sh &

  • 执行如下命令,可以持续的查看nohup.out的输出,达到监控程序的效果。
tail -f nohup.out
  • 如果回显信息类似如下所示,表示预训练完成。

  • 说明:预训练完成大概需要1小时30分钟,如果超时断开了ECS连接,重新远程登录ECS实例后,执行以下命令,继续查看预训练进度。预训练完成后,可以执行Ctrl+Z命令退出。
docker exec -it megatron-deepspeed bash
cd Megatron-DeepSpeed
tail -f nohup.out

d.(可选)执行以下命令,查看生成的模型checkpoint路径。

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

6. 使用GPT-2模型生成文本

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

  • 说明:由于网络原因,执行命令后可能会失败,建议您多次尝试。
pip install mpi4py
  • 如果回显信息类似如下所示,表示依赖安装完成。

b.创建文本生成脚本。

  • 执行以下命令,创建文本生成脚本。
vim generate_text.sh
  • 按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
  • 按Esc键,输入:wq后,按Enter键保存文件。

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

sh ./generate_text.sh
  • 如果回显信息类似如下所示,表示生成文本完成。

vim unconditional_samples.json
  • 回显信息类似如下所示。

7. 清理及后续

  • 清理
  • 如果无需继续使用实例,可以登录ECS控制台,找到目标实例,在操作列单击,搜索并单击释放设置,根据界面提示释放实例。
  • 如果需要继续使用实例,请您随时关注账户扣费情况,避免欠费。实例会因欠费而被自动停机,停机15天内实例将保留,15天后实例和数据都将被自动释放。
  • 后续


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
1月前
|
人工智能 JSON Linux
利用阿里云GPU加速服务器实现pdf转换为markdown格式
随着AI模型的发展,GPU需求日益增长,尤其是个人学习和研究。直接购置硬件成本高且更新快,建议选择阿里云等提供的GPU加速型服务器。
利用阿里云GPU加速服务器实现pdf转换为markdown格式
|
2月前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器架构有啥区别?X86计算、Arm、GPU异构、裸金属和高性能计算对比
阿里云ECS涵盖x86、ARM、GPU/FPGA/ASIC、弹性裸金属及高性能计算等多种架构。x86架构采用Intel/AMD处理器,适用于广泛企业级应用;ARM架构低功耗,适合容器与微服务;GPU/FPGA/ASIC专为AI、图形处理设计;弹性裸金属提供物理机性能;高性能计算则针对大规模并行计算优化。
116 7
|
2月前
|
弹性计算 固态存储 Linux
阿里云服务器、轻量应用服务器、gpu云服务器收费标准与实时活动价格参考
云服务器ECS、轻量应用服务器和gpu云服务器是阿里云的主要云服务器产品,目前轻量应用服务器2核2G收费标准为60元/月,活动价格只要36元/1年或68元1年,云服务器1核1G包月收费标准最低为24.0元/月,GPU云服务器中gn6i实例4核15G配置月付1681.00/1个月起,gn6v实例8核32G配置月付3817.00/1个月起。本文为大家整理汇总了阿里云服务器、轻量应用服务器、gpu云服务器的最新收费标准与活动价格情况,以表格形式展示给大家,以供参考。
|
1月前
|
机器学习/深度学习 人工智能 编解码
阿里云GPU云服务器优惠收费标准,GPU服务器优缺点与适用场景详解
随着人工智能、大数据分析和高性能计算的发展,对计算资源的需求不断增加。GPU凭借强大的并行计算能力和高效的浮点运算性能,逐渐成为处理复杂计算任务的首选工具。阿里云提供了从入门级到旗舰级的多种GPU服务器,涵盖GN5、GN6、GN7、GN8和GN9系列,分别适用于图形渲染、视频编码、深度学习推理、训练和高性能计算等场景。本文详细介绍各系列的规格、价格和适用场景,帮助用户根据实际需求选择最合适的GPU实例。
|
2月前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
315 6
|
2月前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
517 2
|
6月前
|
存储 SQL 数据库
Python 金融编程第二版(GPT 重译)(四)(4)
Python 金融编程第二版(GPT 重译)(四)
67 3
|
6月前
|
存储 NoSQL 索引
Python 金融编程第二版(GPT 重译)(一)(4)
Python 金融编程第二版(GPT 重译)(一)
76 2
|
6月前
|
存储 机器学习/深度学习 关系型数据库
Python 金融编程第二版(GPT 重译)(四)(5)
Python 金融编程第二版(GPT 重译)(四)
45 2
|
6月前
|
存储 SQL 数据可视化
Python 金融编程第二版(GPT 重译)(四)(1)
Python 金融编程第二版(GPT 重译)(四)
66 2

相关产品

  • 云服务器 ECS
  • GPU云服务器