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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 本文介绍如何使用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天后实例和数据都将被自动释放。
  • 后续


相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
5天前
|
异构计算 弹性计算 并行计算
|
10天前
|
机器学习/深度学习 弹性计算 自然语言处理
【阿里云弹性计算】深度学习训练平台搭建:阿里云 ECS 与 GPU 实例的高效利用
【5月更文挑战第28天】阿里云ECS结合GPU实例为深度学习提供高效解决方案。通过弹性计算服务满足大量计算需求,GPU加速训练。用户可按需选择实例规格,配置深度学习框架,实现快速搭建训练平台。示例代码展示了在GPU实例上使用TensorFlow进行训练。优化包括合理分配GPU资源和使用混合精度技术,应用涵盖图像识别和自然语言处理。注意成本控制及数据安全,借助阿里云推动深度学习发展。
50 2
|
13天前
|
存储 弹性计算 人工智能
【阿里云弹性计算】AI 训练与推理在阿里云 ECS 上的高效部署与优化
【5月更文挑战第25天】阿里云ECS为AI训练和推理提供弹性、可扩展的计算资源,确保高性能和稳定性。通过灵活配置实例类型、利用存储服务管理数据,以及优化模型和代码,用户能实现高效部署和优化。自动伸缩、任务调度和成本控制等策略进一步提升效率。随着AI技术发展,阿里云ECS将持续助力科研和企业创新,驱动人工智能新时代。
42 0
|
23天前
|
机器学习/深度学习 人工智能 算法
为什么大模型训练需要GPU,以及适合训练大模型的GPU介绍
为什么大模型训练需要GPU,以及适合训练大模型的GPU介绍
54 0
|
23天前
|
负载均衡 固态存储 Linux
阿里云轻量应用服务器、云服务器、gpu云服务器最新收费标准参考
轻量应用服务器、云服务器、gpu云服务器是阿里云服务器产品中,比较热门的云服务器产品类型,不同类型的云服务器产品收费模式与收费标准是不一样的,本文为大家展示这几个云服务器产品的最新收费标准情况,以供参考。
阿里云轻量应用服务器、云服务器、gpu云服务器最新收费标准参考
|
23天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能平台PAI产品使用合集之如何在CPU服务器上使用PAIEasyRec进行分布式训练
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
23天前
|
机器学习/深度学习 弹性计算 人工智能
什么是阿里云GPU云服务器?GPU云服务器产品优势及应用场景介绍
GPU云服务器是阿里云的云服务器ECS产品之一,是提供 GPU 算力的弹性计算服务,具有超强的计算能力,服务于深度学习、科学计算、图形可视化、视频处理多种应用场景。本文为大家介绍阿里云GPU云服务器产品优势、应用场景以及阿里云GPU云服务器实例规格有哪些。
什么是阿里云GPU云服务器?GPU云服务器产品优势及应用场景介绍
|
23天前
|
弹性计算 云计算 虚拟化
GPU云服务器_GPU云计算_异构计算_弹性计算-阿里云
阿里云提供多种GPU服务器,包括NVIDIA V100、T4、A10和A100计算卡,其中gn6i实例享有最高3折优惠。包年包月价格如:gn6v实例(16G V100)从4685.20元/月起,gn6i实例(16G T4)从1878.40元/月起。学生无特定GPU服务器优惠,但新用户有折扣活动。GPU服务器计费模式有包年包月和按小时计费,按需选择。详细价格及活动规则见官方链接。
29 0
GPU云服务器_GPU云计算_异构计算_弹性计算-阿里云
|
23天前
|
人工智能 机器人 Serverless
魔搭大模型一键部署到阿里云函数计算,GPU 闲置计费功能可大幅降低开销
魔搭大模型一键部署到阿里云函数计算,GPU 闲置计费功能可大幅降低开销
624 2
|
15天前
|
存储 人工智能 编解码
阿里云gpu云服务器最新收费标准、活动价格与实例规格选择参考
随着人工智能、高性能计算等领域的快速发展,GPU云服务器因其强大的计算能力和灵活的资源分配方式,成为越来越多企业和个人用户的首选。2024年,阿里云针对GPU云服务器推出了新的收费标准及活动,gn6v、gn7i、gn6i等实例的gpu云服务器有优惠,本文为大家介绍2024年,阿里云gpu云服务器最新收费标准、活动价格与实例规格选择参考。
阿里云gpu云服务器最新收费标准、活动价格与实例规格选择参考

相关产品

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