28 Apr

在bert4keras中使用混合精度和XLA加速训练

之前笔者一直都是聚焦于模型的构思和实现,鲜有关注模型的训练加速,像混合精度和XLA这些技术,虽然也有听过,但没真正去实践过。这两天折腾了一番,成功在bert4keras中使用了混合精度和XLA来加速训练,在此做个简单的总结,供大家参考。

本文的多数经验结论并不只限于bert4keras中使用,之所以在标题中强调bert4keras,只不过bert4keras中的模型实现相对较为规整,因此启动这些加速技巧所要做的修改相对更少。

实验环境

本文的实验显卡为3090,使用的docker镜像为nvcr.io/nvidia/tensorflow:21.09-tf1-py3,其中自带的tensorflow版本为1.15.5。另外,实验所用的bert4keras版本为0.11.3。其他环境也可以参考着弄,要注意有折腾精神,不要指望着无脑调用。

顺便提一下,3090、A100等卡只能用cuda11,而tensorflow官网的1.15版本是不支持cuda11的,如果还想用tensorflow 1.x,那么只能用nvidia亲自维护的nvidia-tensorflow,或者用其构建的docker镜像。用nvidia而不是google维护的tensorflow,除了能让你在最新的显卡用上1.x版本外,还有nvidia专门做的一些额外优化,具体文档可以参考这里

点击阅读全文...

18 May

当BERT-whitening引入超参数:总有一款适合你

《你可能不需要BERT-flow:一个线性变换媲美BERT-flow》中,笔者提出了BERT-whitening,验证了一个线性变换就能媲美当时的SOTA方法BERT-flow。此外,BERT-whitening还可以对句向量进行降维,带来更低的内存占用和更快的检索速度。然而,在《无监督语义相似度哪家强?我们做了个比较全面的评测》中我们也发现,whitening操作并非总能带来提升,有些模型本身就很贴合任务(如经过有监督训练的SimBERT),那么额外的whitening操作往往会降低效果。

为了弥补这个不足,本文提出往BERT-whitening中引入了两个超参数,通过调节这两个超参数,我们几乎可以总是获得“降维不掉点”的结果。换句话说,即便是原来加上whitening后效果会下降的任务,如今也有机会在降维的同时获得相近甚至更好的效果了。

方法概要

目前BERT-whitening的流程是:
\begin{equation}\begin{aligned}
\tilde{\boldsymbol{x}}_i =&\, (\boldsymbol{x}_i - \boldsymbol{\mu})\boldsymbol{U}\boldsymbol{\Lambda}^{-1/2} \\
\boldsymbol{\mu} =&\, \frac{1}{N}\sum\limits_{i=1}^N \boldsymbol{x}_i \\
\boldsymbol{\Sigma} =&\, \frac{1}{N}\sum\limits_{i=1}^N (\boldsymbol{x}_i - \boldsymbol{\mu})^{\top}(\boldsymbol{x}_i - \boldsymbol{\mu}) = \boldsymbol{U}\boldsymbol{\Lambda}\boldsymbol{U}^{\top} \,\,(\text{SVD分解})
\end{aligned}\end{equation}

点击阅读全文...

8 Jul

【个人翻译】变暖的地球对冷血动物来说过热?

翻译语录:
这是一篇关于气候变暖对变温动物的影响的文章。原文很长,来自“科学美国人”网站,本文有所删减。
在人类不断报道气候变化对人类所造成的影响的时候,自然界的其他生物也在受着气候的影响。也许,自然界的其他生物才是最大的受害者。无论如何,为了我们,为了自然,为了地球,为了后代,我们都应该自觉地去减少温室效应。只要人人都节约一点点,世界就会多一片绿色、一片蓝天!

点击阅读全文...

17 Jul

初中生活结束了(友谊地久天长)

07.15,是我们作为初中生的最后日子,过了那天,我们就远离了初中。 我还清楚地记得,中考那几天,大家的依依不舍 在这之前,对于离别,我总是潇潇洒洒,无牵无挂 可是,在这一次的分离中,我却有点伤感 也许已经长大了,对友谊有着更深的感悟,更加珍惜

愿友谊地久天长!

点击阅读全文...

20 Sep

【NASA每日一图】本星系群远后方的星系

图片说明:NGC 3621,版权:Robert Gendler

图片说明:NGC 3621,版权:Robert Gendler

点击阅读全文...

7 Nov

爱恩斯坦的狭义相对论论文(中文/图片)

说明:这篇文章是通过翻拍而来,请读者勿用于商业用途。如果原著作者(或者译者)认为此举侵犯了您的权利,请留言或者来信BoJone@Spaces.Ac.Cn告知,本人会尽快删除!

$$\begin{aligned}E=mc^2 \\ \sqrt{1-{v^2}/{c^2}}\end{aligned}$$

本文不是通用的相对论教程,适合已经有一定物理学基础的读者阅读。

相对论是关于时空和引力的基本理论,主要由阿尔伯特·爱因斯坦(Albert Einstein)创立,分为狭义相对论(特殊相对论)和广义相对论(一般相对论)。相对论的基本假设是相对性原理,即物理定律与参照系的选择无关。狭义相对论和广义相对论的区别是,前者讨论的是匀速直线运动的参照系(惯性参照系)之间的物理定律,后者则推广到具有加速度的参照系中(非惯性系),并在等效原理的假设下,广泛应用于引力场中。

点击阅读全文...

7 Feb

你的CRF层的学习率可能不够大

CRF是做序列标注的经典方法,它理论优雅,实际也很有效,如果还不了解CRF的读者欢迎阅读旧作《简明条件随机场CRF介绍(附带纯Keras实现)》。在BERT模型出来之后,也有不少工作探索了BERT+CRF用于序列标注任务的做法。然而,很多实验结果显示(比如论文《BERT Meets Chinese Word Segmentation》)不管是中文分词还是实体识别任务,相比于简单的BERT+Softmax,BERT+CRF似乎并没有带来什么提升,这跟传统的BiLSTM+CRF或CNN+CRF的模型表现并不一样。

基于CRF的4标签分词模型示意图

基于CRF的4标签分词模型示意图

这两天给bert4keras增加了用CRF做中文分词的例子(task_sequence_labeling_cws_crf.py),在调试过程中发现了CRF层可能存在学习不充分的问题,进一步做了几个对比实验,结果显示这可能是CRF在BERT中没什么提升的主要原因,遂在此记录一下分析过程,与大家分享。

点击阅读全文...

16 Apr

《教材如何写》:我们需要怎样的数学教育?

转载自:matrix67.com

注:这篇文章里有很多个人观点,带有极强的主观色彩。其中一些思想不见得是正确的,有一些话也是我没有资格说的。我只是想和大家分享一下自己的一些想法。大家记得保留自己的见解。也请大家转载时保留这段话。

我不是一个数学家。我甚至连数学专业的人都不是。我是一个纯粹打酱油的数学爱好者,只是比一般的爱好者更加执着,更加疯狂罢了。初中、高中一路保送,大学不在数学专业,这让我可以不以考试为目的地学习自己感兴趣的数学知识,让我对数学有如此浓厚的兴趣。从 05 年建立这个 Blog 以来,每看到一个惊人的结论或者美妙的证明,我再忙都会花时间把它记录下来,生怕自己忘掉。不过,我深知,这些令人拍案叫绝的雕虫小技其实根本谈不上数学之美,数学真正博大精深的思想我恐怕还不曾有半点体会。

我多次跟人说起,我的人生理想就是,希望有一天能学完数学中的各个分支,然后站在一个至高点,俯瞰整个数学领域,真正体会到数学之美。但是,想要实现这一点是很困难的。最大的困难就是缺少一个学习数学的途径。看课本?这就是我今天想说的——课本极其不靠谱。

点击阅读全文...