关于预训练语言的一些事情:谷歌那个1.3trillion的模型,以及驳斥某些胡说八道的结论

由于最近跟DeepMind的合作,我们可以训练非常大的预训练语言模型。在这个过程中,浏览中文社区时候,又让我看到了让我想吐的大牛散播谣言,加上最近谷歌那个1.3trillion的模型,又被吹疯了,然后又是胡言乱语。

强调几点:

  1. 即使不是100%,中国大部分研究根本没办法研究预训练语言模型,因为耗费算力太大。我们跟deepmind合作的算力是TPU V3-2048, 大概是20000块V100,实际上肯定不会相差这么小,我们自己根据TPU V3-64常年测试的结果,发现大概其实应该是12万块V100左右。没人能训练的起。
  2. 没人能训练的起的另一个缘故,就是中文没有好的语料库。比较大的最多T级,但是Common Crawl是PB级别的。T5中用的GLUE比起CLUE我就别比了,太侮辱人了。
  3. 没数据、没算力咋办?随便训练一个。然后发现还不如哈工大BERT WWM,于是开始说ALBERT是骗人。
  4. Multi-task training,尤其是ERNIE说的在现实中实际上是几乎没用的,这在T5 paper当中说的贼清楚。不知道一群挑战谷歌的人是怎么想的。
  5. 那个1.3trillion的模型极其有意义,不是用来秀算力的。那个模型实际上用了mixture of expert的方法,减少了一些复杂度,使得训练效果提升了。
  6. 除了这个以外,使用Performer和隔层share权重,类似于TabNet是非常有用的。
  7. 其他设计trick包括这个,这个,这个和这个都可以考虑。
  8. Bart和Electra就别讨论了。在国外因为复现性问题都被骂惨了。但是不代表这玩意没用!!这东西对于得到大模型之后小规模在预训练加上triplet mining训练非常小的轮数极其有帮助。
  9. 至于为什么有人说Albert又慢又不准,不准是因为就用1G的wiki语料训练了一次,慢是因为你没用jax啊!!!Jax这玩意对处理Albert特别快。
    10.在CV当中,refine预训练语言模型和捕捉非局部信息特别重要。NLP当中有一些,比如说这个,等于捕捉的是全局信息,这样拼接起来效果肯定好。而知识图谱就很糟糕了,大部分原因是知识图谱本身必须跟预训练语言同时训练,这种就更难了。

总结一下,我们会尽量出一个没那么没良心的中文预训练语言模型,用上面的trick,T5训练方法加Performer架构。开源。免得某些公司拿着自己宝贝一样的东西然后打比赛欺负学生。

你可能感兴趣的:(人工智能)