文章来源 | 恒源云社区(专注人工智能/深度学习云GPU服务器训练平台,官方体验网址:gpushare.com/ )
原文地址 | 【2 数据下载+模型训练】哪个男孩不想拥有自己的预训练模型(留下贫穷的眼泪)
作者 | junyu
本人使用RTX3090在openwebtext数据集上添加rotary-position-embedding,训练electra-small模型,由于openwebtext文件太大,故本教程提供本人处理好的数据集。
1、环境选择
- pytorch 1.8.1
- python 3.8
- cuda 11.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)打开 wandb.ai/site
(2)点击头像下的Settings,寻找api key
下拉到api keys,如果没有就New key。复制该api key
(3)登录
# 登录wandb
wandb login
# 复制进去api key
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
6、终止预训练程序
# 查看进程
ps -aux
# 终止进程
kill 2983
7、等待程序运行完毕(差不多需要55h)
# 同步训练损失等数据到wandb
wandb sync wandb/latest-run
8、复现结果(DEV DATASET)
9、训练细节
- 训练batch_size 256
- 学习率lr 5e-4
- 最大句子长度max_seqlen 128
- 训练total step 50W
- GPU RTX3090
- 训练时间总共耗费55h