一份白嫖colab与kaggle的TPU预训练语言模型的指南,没钱也能训练个bert-base玩玩
其中语言模型的代码均采用苏神的bert4keras
注:求在TPU上使用过重计算的大佬帮助,求TPU重计算的参考代码
- colab或者kaggle账号一个,kaggle需要验证手机才能用TPU
- google cloud账号一个,使用其中的google storage来保存语言模型的训练数据,免费300刀试用3个月,需要visa或者万事达卡一张,比较麻烦,愿意折腾的可以尝试浦发银行的虚拟visa,无限申请,或者购买老版300美金试用1年的账号
- 一个速度快的科学上网工具(非必须),没有的话就推荐使用国外的机器进行数据预处理并上传
- google edu 教育邮箱一个,可从淘宝购买,colab用户可以更加方便的保存参数
- 进入Google Storage并创建一个新存储分区
- 数据存储位置先选 Dual-region 再选 eur4 (荷兰和芬兰) (免费TPU都在欧洲)
- 给新的存储分区增加公共读权限(可能会不安全,求大佬推荐更加安全的做法)
预处理代码请自行参考苏神的pretraining/data_utils.py
得到一个或者数个corpus.xxx.tfrecord的文件
三种方式:
- 在浏览器中上传(应该不用截图吧),好的科学上网工具都能有100Mbs,可以接受
- rclone 挂载 google storage 后上传,需要国外机器,可参考rclone官方指南
- 直接用 colab 生成到 google storage 里面(以后补充,应该可行)
TPU型号:TPU v2-8 64G
语言模型定义:bert4keras
训练数据:Google Storage中之前上传的corpus.xxx.tfrecord
参数保存:Google Drive中某个指定的文件夹
-
上传训练代码colab_pretrain.ipynb,并根据注释修改
-
设置运行环境为TPU
- 运行代码,挂载谷歌网盘
- F12控制台内输入自动点击代码,防止掉线
function ConnectButton(){
console.log("Connect pushed");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click();
}
setInterval(ConnectButton,60000);
- 12小时(Pro版本 24小时)后来重新运行代码,继续训练
-
需要google edu的无限网盘,不然bert的参数可以直接耗光你的15G存储空间(可能以后会出存放在google storage的版本)
-
当前的谷歌TPU的TF版本为2.4,不保证以后能一直用
-
Colab的控制台输出可能会出现超出buffer size的问题,但不影响训练,只是进度条不更新,可以去保存的路径下查看保存的参数文件
TPU型号:TPU v3 128G
语言模型定义:bert4keras
训练数据:Google Storage
参数保存:Google Storage
咕咕咕(Todo)