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

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
轻量应用服务器 2vCPU 4GiB,适用于搭建容器环境
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
简介: 本文介绍如何使用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天后实例和数据都将被自动释放。
  • 后续


相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
19天前
|
弹性计算 搜索推荐 异构计算
阿里云服务器多少钱一年?亲自整理ECS、轻量和GPU服务器租赁价格表
2025年阿里云服务器优惠汇总:轻量应用服务器2核2G 38元/年起,ECS 2核2G 99元/年,2核4G 199元/年,4核16G 89元/月,8核32G 160元/月,香港轻量25元/月起,新老用户同享,续费同价。
424 4
|
2月前
|
机器学习/深度学习 数据库 数据安全/隐私保护
服务器核心组件:CPU 与 GPU 的核心区别、应用场景、协同工作
CPU与GPU在服务器中各司其职:CPU擅长处理复杂逻辑,如订单判断、网页请求;GPU专注批量并行计算,如图像处理、深度学习。二者协同工作,能大幅提升服务器效率,满足多样化计算需求。
1162 39
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
123_自监督任务变体:Causal LM详解 - GPT-style下一词预测机制与训练优化
2025年,自监督学习已成为大型语言模型(LLM)训练的核心范式,其中因果语言建模(Causal Language Modeling, CLM)作为GPT系列模型的基础训练目标,展现出了卓越的生成能力和下游任务迁移性能。与掩码语言建模(Masked Language Modeling, MLM)不同,因果语言建模专注于预测序列中的下一个词元,这种训练方式自然地适应了自回归生成的需求,为文本生成、对话系统等任务奠定了坚实基础。
|
21天前
|
存储 机器学习/深度学习 人工智能
硅谷GPU单节点服务器:技术解析与应用全景
“硅谷GPU单节点服务器”代表了在单个物理机箱内集成强大计算能力,特别是GPU加速能力的高性能计算解决方案。它们并非指代某个特定品牌,而是一类为处理密集型工作负载而设计的服务器范式的统称。
|
24天前
|
机器学习/深度学习 人工智能 弹性计算
2025年阿里云GPU服务器租用价格与应用场景详解
阿里云GPU服务器基于ECS架构,集成NVIDIA A10/V100等顶级GPU与自研神龙架构,提供高达1000 TFLOPS混合精度算力。2025年推出万卡级异构算力平台及Aegaeon池化技术,支持AI训练、推理、科学计算与图形渲染,实现性能与成本最优平衡。
|
22天前
|
弹性计算 搜索推荐 异构计算
租用阿里云服务器一年要多少钱?ECS、轻量和GPU服务器租赁价格,手动整理
2025年10月阿里云服务器优惠持续,轻量应用服务器200M带宽38元起/年,ECS 2核2G 99元/年、2核4G 199元/年,4核16G 89元/月,8核32G 160元/月,香港轻量25元/月起,新老同享,续费不涨价。
412 2
|
2月前
|
存储 人工智能 弹性计算
阿里云gpu云服务器收费价格,热门实例简介和最新按量、1个月、1年收费标准参考
在阿里云所有gpu云服务器实例规格中,计算型gn5、gn6i、gn6v、gn7i和最新推出的gn8is、gn8v-tee等实例规格是其中比较热门的gpu云服务器实例。阿里云gpu云服务器最新租用价格参考,适合AI推理/训练的16核60G+1张A10 24G显存(gn7i-c16g1.4xlarge),按量优惠价1.9/小时起。本文为大家展示阿里云gpu云服务器中gn5、gn6i等热门实例规格的主要性能和适用场景以及最新按量和1个月、1年收费标准,以供参考。

热门文章

最新文章

相关产品

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