首先明确一个结论:预训练成本基本上是不可能降的。
怎么理解这句话呢?大概就是说你要达到RoBERTa base的效果,那么就必须付出大致相当于训练RoBERTa base的算力,就算你把Self Attention换成CNN、RNN、MLP都是这样,因为Transformer之所以慢,是因为它大,而不是因为它有Self Attention(参考《线性Transformer应该不是你要等的那个模型》);而预训练模型效果之所以好,是因为它在大模型的基础上预训练,所以大是必要条件。
有了这个结论后,你想提高训练速度,就只有三个选择:1、选择更小的模型(比如small、tiny);2、买更快的卡(比如80G的A100);3、减少训练数据。
前两者好理解,第三个选择,主要是因为预训练数据到了一定数量之后,“质量”就重于“数量”了,如果别人用100G通用数据训练,你能挑出10G高质量数据训练,速度就快了10倍,说不准效果还更好。这个“高质量”有两个含义,第一个是数据本身的噪声要少,第二个就是跟你所要做的下游任务的相关性。这方面的工作,推荐看杨植麟大佬最近的《NLP From Scratch Without Large-Scale Pretraining: A Simple and Efficient Framework》
当然,框架本身的调整(比如混合精度训练)也能带来一定的速度提升,但这不在本回答的考虑范围内(或者说,框架本身的优化默认都打开)。