恒源云(GPUSHARE)_3090跑NLP预训练模型ELECTRA实录

文章来源 | 恒源云社区(专注人工智能/深度学习GPU云服务器免费租用平台,官方体验网址:https://gpushare.com)

原文地址 | 哪个男孩不想拥有自己的预训练模型(留下贫穷的眼泪)  作者 | junyu

本人使用RTX3090在openwebtext数据集上添加rotary-position-embedding,训练electra-small模型,由于openwebtext文件太大,故本教程提供本人处理好的数据集。

1、环境选择

  • pytorch 1.8.1
  • python 3.8
  • cuda 11.1

恒源云(GPUSHARE)_3090跑NLP预训练模型ELECTRA实录_第1张图片

2、准备openwebtext数据集

# 切换路径
cd /hy-tmp
# 登录oss
oss login
# 从公共数据集路径下载处理好的openwebtext.tar.gz压缩包
oss cp -public oss://junyu-dataset/openwebtext.tar.gz /hy-tmp
# 在当前目录解压文件
tar -zxvf openwebtext.tar.gz

3、下载electra预训练代码并安装依赖环境

# 切换路径
cd /hy-tmp
# 代码已经上传到github
git clone https://github.com/JunnYu/hy_tutorial.git 
# 如果下载失败请使用镜像地址git clone https://hub.fastgit.org/JunnYu/hy_tutorial.git
# 切换路径
cd hy_tutorial
# 解压缩文件
unzip electra_small_pretrain_pytorch.zip
# 切换路径
cd electra_small_pretrain_pytorch
# 安装所需的python依赖包
pip install -r requirements.txt

4、注册wandb账号

(1)打开 Weights & Biases – Developer tools for ML

恒源云(GPUSHARE)_3090跑NLP预训练模型ELECTRA实录_第2张图片

(2)点击头像下的Settings,寻找api key

恒源云(GPUSHARE)_3090跑NLP预训练模型ELECTRA实录_第3张图片

下拉到api keys,如果没有就New key。复制该api key

恒源云(GPUSHARE)_3090跑NLP预训练模型ELECTRA实录_第4张图片

(3)登录

# 登录wandb
wandb login
# 复制进去api key

恒源云(GPUSHARE)_3090跑NLP预训练模型ELECTRA实录_第5张图片

5、后台运行预训练程序

# 切换路径,确保在这个路径
cd /hy-tmp/hy_tutorial/electra_small_pretrain_pytorch
# 后台运行程序
nohup python pretrain.py >> electra_small_pretrain.log 2>&1 &
# 查看训练日志
tail -f electra_small_pretrain.log

恒源云(GPUSHARE)_3090跑NLP预训练模型ELECTRA实录_第6张图片

6、终止预训练程序

# 查看进程
ps -aux
# 终止进程
kill 2983

恒源云(GPUSHARE)_3090跑NLP预训练模型ELECTRA实录_第7张图片

7、等待程序运行完毕(差不多需要55h)

# 同步训练损失等数据到wandb
wandb sync wandb/latest-run

b72c6c30-cf1e-4240-a410-507f19d7a371-image.png
恒源云(GPUSHARE)_3090跑NLP预训练模型ELECTRA实录_第8张图片

8、复现结果(DEV DATASET)

Model CoLA SST MRPC STS QQP MNLI QNLI RTE Avg.
ELECTRA-Small-OWT(original) 56.8 88.3 87.4 86.8 88.3 78.9 87.9 68.5 80.36
ELECTRA-RoFormer-Small-OWT (this) 55.76 90.45 87.3 86.64 89.61 81.17 88.85 62.71 80.31

9、 训练细节

  • 数据集 openwebtext
  • 训练batch_size 256
  • 学习率lr 5e-4
  • 最大句子长度max_seqlen 128
  • 训练total step 50W
  • GPU RTX3090
  • 训练时间总共耗费55h

10、ROFORMER_ELECTRA 的 WANDB日志

  • 预训练日志
  • GLUE微调日志

junnyu/electra_small_discriminator · Hugging Face
junnyu/roformer_small_discriminator · Hugging Face

Reference

GitHub - richarddwang/electra_pytorch: Pretrain and finetune ELECTRA with fastai and huggingface. (Results of the paper replicated !)

你可能感兴趣的:(深度学习,gpu,深度学习)