使用GPU进行BERT微调-从0到1爬坑
原先的轻薄本bert微调一次要两个小时,后面配置n卡台式,希望用gpu来微调bert
win10+anaconda+pycharm+tensorflow+GPU+bert
遇到很多坑,记录下来以备后面使用。
之前对于gpu的使用是小白,本次从0开始,主要有以下几个部分:
1、安装anaconda
2、安装cuda,cudnn
3、安装tensorflow_gpu
4、使用gpu微调
这里面涉及到了很多架构或包,有些之间是需要保证版本相对应,有些则不用
需要对应的是:cudnn-tensorflow-python,据说cuda的版本向下兼容,但是后来改bug的时候为了不出错我把cuda也安装成对应版本了,没有亲测是否向下兼容。
不需要对应的是:anaconda,我直接用了最新版。
1、安装anaconda
anaconda是很方便的批量管理多个环境的工具,之前对于多个环境不屑一顾,后来在复现论文时发现github上不同论文所使用的架构版本差别巨大,不会自己改代码的人最终屈服了,多个环境真香。
具体过程比较简单,没有掉坑,conda的使用语言之前比较陌生,了解了一下无非是
conda …
conda activate (envname)
…等
需要注意的是
安装anaconda时安装包有询问是否载入环境变量,如果载入,在cmd中python …就默认用的是anaconda的python,如果不载入,在cmd中python,如果自己电脑之前有安装过python,就用那个,如果原先没有python,就需要先cd 到anaconda的目录,或者用anaconda prompt来执行。这里我的建议和anaconda官方的建议是一样的:不放入环境变量,因为我原先的电脑上已经安装好了一个python环境。
2、cuda要去官网下载,下的太慢,后来****上找到了资源
cudnn在win10的安装比较简单,解压之后是3个dll文件,移动到cuda同名文件夹下即可
然后是配置环境,参考以下博客:
找不到了… 待以后再补,反正需要添加的环境变量挺多 如下图
好吧,和网上那个需要好多环境变量的不一样,这个也成功了,
判断是否安装成功,使用nvcc --version 看能否出现cuda的版本号即可。
3、但是能否确定cudnn安装成功了呢?
我当时cudnn没有配置好,运行tensorflow_gpu时候,出现以下报错
后来怕配置完毕cudnn,该问题就解决了
本来准备在conda 虚拟环境中配置tensorflow-gpu,使用的是conda install ,conda会提示你安装依赖包,但是出现了以下错误
遂放弃(具体什么原因留着以后探究吧,今天累了),直接用了原先python环境,网上有很多验证tensorflow是否在gpu上运行的简单程序。
此处说明tensorflow已在gpu运行。
4、使用Bert gpu微调
确实用了gpu之后速度提升明显,
以下为大概估计的时间对比
数据量1w左右
商务轻薄本–2h
台式cpu–20mins
2070s – 2mins
折腾了几天终于成功,不容易。
查看gpu使用情况
看到专用gpu内存利用率在运行时明显上升,
百度了一下了解到:专用gpu内存是只给gpu用的,好像就是n卡的显存。共享gpu内存好像是从内存中分出来一部分。