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

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
轻量应用服务器 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大模型。
相关文章
|
14天前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器简介:优势场景价详解,最新收费标准与活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,现在购买有包月5折包年4折起等优惠,GPU 计算型 gn6i实例4核15G包月优惠价1681.00元/1个月起,包年16141.80元/1年起;GPU 计算型 gn6v实例8核32G包月优惠价3817.00元/1个月起,包年36647.40元/1起等。本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
|
4月前
|
存储 机器学习/深度学习 数据库
阿里云服务器X86/ARM/GPU/裸金属/超算五大架构技术特点、场景适配参考
在云计算技术飞速发展的当下,云计算已经渗透到各个行业,成为企业数字化转型的关键驱动力。选择合适的云服务器架构对于提升业务效率、降低成本至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供大家了解和选择参考。
776 61
|
13天前
|
存储 人工智能 编解码
阿里云GPU云服务器深度评测:算力怪兽如何重塑AI与图形处理的未来?
在AI与高性能计算需求激增的今天,传统CPU已难满足“暴力计算”需求。阿里云GPU云服务器依托NVIDIA顶级显卡算力,结合专为GPU优化的神行工具包(DeepGPU),为深度学习、科学计算、图形渲染等领域提供高效、弹性的算力支持。本文全面解析其产品优势、工具链及六大真实应用场景,助你掌握AI时代的算力利器。
阿里云GPU云服务器深度评测:算力怪兽如何重塑AI与图形处理的未来?
|
3月前
|
Prometheus 监控 数据可视化
模型被挤了?立即查看服务器GPU/CPU占用,别再误杀他人进程!
模型在服务器上跑得好好的,突然就“卡”了甚至被挤掉?别急着抱怨!本文手把手教你如何优雅地查看共享服务器的CPU和GPU占用情况,学会做一个有素质的“共享玩家”,告别模型被挤的尴尬!文末还有硬核忠告和Linux学习建议。
538 87
|
4月前
|
机器学习/深度学习 存储 人工智能
阿里云GPU服务器gn6v、gn7i、gn6i性能特点、区别及选择参考
阿里云GPU云服务器产品线凭借其强大的计算能力和广泛的应用价值,在这些领域中发挥着举足轻重的作用。阿里云GPU云服务器能够为各类复杂的计算任务提供高效、稳定的计算支持,助力企业和开发者在技术创新和业务拓展的道路上加速前行。本文将详细介绍阿里云GPU云服务器中的gn6v、gn7i、gn6i三个实例规格族的性能特点、区别及选择参考,帮助用户根据自身需求选择合适的GPU云服务器实例。
574 60
|
3月前
|
机器学习/深度学习 弹性计算 Linux
阿里云服务器租用价格:云服务器ECS/轻量/GPU收费标准与活动价格参考
阿里云服务器产品主要包括云服务器ECS、轻量应用服务器以及GPU云服务器等。为了方便大家了解阿里云各类服务器的价格信息,本文整理汇总了阿里云服务器、轻量应用服务器、GPU云服务器的最新收费标准以及活动价格情况,供大家参考选择。
|
5月前
|
存储 机器学习/深度学习 算法
阿里云X86/ARM/GPU/裸金属/超算等五大服务器架构技术特点、场景适配与选型策略
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别。本文将深入解析这些架构的特点、优势及适用场景,帮助用户更好地根据实际需求做出选择。
|
6月前
|
弹性计算 固态存储 大数据
阿里云服务器租用费用价格表:2025最新轻量+ECS+GPU优惠1年、1个月和1小时报价单
阿里云服务器租用费用价格表涵盖2025年最新轻量应用服务器、ECS云服务器及GPU服务器优惠报价。轻量应用服务器2核2G配置,一年仅68元(秒杀38元),适合个人开发者;ECS云服务器提供多种规格,如2核2G经济型99元/年、2核4G企业专享199元/年。高性能实例如4核16G游戏服务器70元/月,8核32G为160元/月。GPU服务器方面,T4计算卡4核15G配置低至1878.4元/月。此外,阿里云支持按小时计费,灵活满足不同需求。续费优惠政策明确,长周期享更高折扣,具体以官方页面为准。
|
7月前
|
存储 机器学习/深度学习 人工智能
2025年阿里云GPU服务器租用价格、选型策略与应用场景详解
随着AI与高性能计算需求的增长,阿里云提供了多种GPU实例,如NVIDIA V100、A10、T4等,适配不同场景。2025年重点实例中,V100实例GN6v单月3830元起,适合大规模训练;A10实例GN7i单月3213.99元起,适用于混合负载。计费模式有按量付费和包年包月,后者成本更低。针对AI训练、图形渲染及轻量级推理等场景,推荐不同配置以优化成本和性能。阿里云还提供抢占式实例、ESSD云盘等资源优化策略,支持eRDMA网络加速和倚天ARM架构,助力企业在2025年实现智能计算的效率与成本最优平衡。 (该简介为原文内容的高度概括,符合要求的字符限制。)
|
7月前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
介绍如何使用ACK Edge与虚拟节点满足DeepSeek部署的弹性需求。

热门文章

最新文章

相关产品

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