谷歌经典bert模型从下载源码到运行成功

谷歌经典bert模型从下载源码到运行成功

近期,对谷歌经典bert模型进行了简单的学习,以官方模型代码为主要学习目标,目前已经成功完成预训练任务,结果如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xjODVQXx-1641960885960)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220112102135634.png)]

下载源码

官方代码和与训练模型链接:https://github.com/google-research/bert

在这里插入图片描述
论文链接:https://arxiv.org/abs/1810.04805

配置环境

1.版本问题

(1)python版本

这个代码支持的python版本<3.8 建议大家使用3.6或者3.7版本的python

在这里插入图片描述

(2)tensorflow版本

在官方代码中,有一个requirements.txt 提到了tensorflow版本问题[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P9xYZRqR-1641960885969)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220112102933581.png)]
需要安装符合要求的tensorflow版本
附上安装tensorflow指定版本的指令:(8条消息) 使用清华镜像pip安装TensorFlow_FGY_u的博客-CSDN博客_pip 安装tensorflow 清华镜像

一定要注意版本对应问题:我的安装版本是python3.6和tensorflow 1.15.0

很多时候运行出问题都是因为版本不对应引起的:

python 与tensorflow版本对应清单链接:在 Windows 环境中从源代码构建 | TensorFlow (google.cn)

我在这直接放图了,大家也可以点击上方直接进原网站查看:

CPU:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-495rRJlE-1641960885971)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220112104116856.png)]

GPU:
在这里插入图片描述

(3)其他版本问题:

在我运行该模型的时候,关于版本不匹配问题还有很多:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z1K2YDjI-1641960885974)(C:\Users\DELL\Desktop\QQ图片20220112110112.png)]

这个就是tensorflow python keras三者之间版本不匹配的问题

我查了一下 python tensorflow keras 三者之间的版本对应关系,将keras更新到 2.3.1即可解决问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NdvQGjLC-1641960885976)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220112110316026.png)]

参考链接:tensorflow + python + keras 版本对应关系 - feiquan - 博客园 (cnblogs.com)

数据集下载

数据集下载链接,这个在github源码的README.md 有给出,该文件也给出了模型的运行方式,参数设置方式等等

(1)预训练模型的下载:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZnOima6F-1641960885978)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220112112053111.png)]

这里附上文件的网盘链接,有需要自取即可

链接:https://pan.baidu.com/s/1xcC6rdo6o7gn1VLB1-sq5w
提取码:o203

(2)GLUE数据集的下载

在这个地方我遇到了一些问题,可能是因为下载源是在国外,我在pycharm terminal 直接运行的官方给的下载脚本

download_glue_data.py(下载脚本):
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yPBGMioN-1641960885980)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220112112659486.png)]

运行指令大概是这样:(注意 task 是MRPC)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-awQlyrGB-1641960885981)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220112112908140.png)]

但是在输入运行脚本的指令之后,我一直卡在了processing MRPC 不动了

我就另外找了个glue数据集 ,这里提供原文链接:(8条消息) GLUE-MRPC数据集下载(国内)_Acecai01的博客模板-CSDN博客_mrpc数据集

参数设置

官方给的那些参数,不一定适合所有的人,首先他给的Linux系统下的指令 在设置环境变量那条 windows 与Linux 系统是有较大差别的

Linux的就不多说了,和官方格式一样,只需要修改一下路径就好了

Windows 在cmd中设置环境变量 可以参考:(8条消息) Windows–cmd命令行添加环境变量_TLCrow的博客-CSDN博客_命令行添加环境变量

这是官方给出的参数:

在这里插入图片描述

如果不太想设置环境变量,可以不使用export(Linux)/set(Windows) 指令

直接把参数中对应的BERT_BASE_DIR 和GLUE_DIR 换成你下载的数据集所在的绝对路径,这样可以基本保证路径方面不出错

在输入python 后面那一堆参数的时候,要注意把 每个参数后面的下划线去掉,对于train_batch_size 这个参数 如果32觉得太大了,可以设置成 16 8 大小

Project Structure:

在这里插入图片描述

我的运行指令如下:

python run_classifier.py --task_name=MRPC --do_train=true --do_eval=true --data_dir=..\GLUE\glue_data\MRPC --vocab_file=..\GLUE\uncased_L-12_H-768_A-12\vocab.txt --bert_config_file=..\GLUE\
uncased_L-12_H-768_A-12\bert_config.json --init_checkpoint=..\GLUE\uncased_L-12_H-768_A-12\bert_model.ckpt --max_seq_length=128 --train_batch_size=8 --learning_rate=2e-5 --num_train_epochs=3.0 --output_dir=/tmp/mrpc_output

具体路径大家以自己文件的放置位置为准,每个人设置的参数都不太一样

DeBug

由于这个是三年前的代码,有一些方法或者包的名称会有些变化

这里就提两个比较典型的问题:

(1)由于当时使用的tensorflow应该是v1版本的,所以在 import tensorflow as tf时需要,换成 import tensorflow.compat.v1 as tf或者直接在代码处 加上 compat.v1

然后,不知道是我之前有动过代码(在之前我应该是没有更改过代码),这个代码里面出现了cast 函数的错误:(location:run_classifier.py line:530)

在这里插入图片描述

根据代码上方的注释:
在这里插入图片描述

我把参数更改了一下:

在这里插入图片描述

(2)

在这里插入图片描述

这个我在网上找的所有的报错都是:module ‘tensorflow._api.v1.io’ has no attribute ‘gfile’

通过这篇文章:Tensorflow报错:AttributeError: module ‘tensorflow._api.v1.io’ has no attribute ‘gfile’ - RiddleLi - 博客园 (cnblogs.com)

我试着把v1.io 去掉,发现竟然没有错误了,之前的代码有的需要加上v1,但是这个地方需要去掉v1,属实有点懵,应该就是版本不兼容的问题。

在这里插入图片描述

到这里差不多就没有其他的问题了,就可以用官方给的参数 对模型进行预训练了

运行过程

能够正常运行的标准,首先肯定是能跑起来,然后cpu/gpu占用率保持一个相对稳定的数值:

运行过程中输出的数据:

在这里插入图片描述

运行时CPU占用率:

在这里插入图片描述

可以看到我的内存和CPU一直保持在一个很稳定的范围内

关于想要用GPU运行的话,就需要稍微更改参数,而且要安装cuda cudnn 配置环境等等 还有很多版本适配问题,还是比较麻烦的,因为我是使用CPU进行预训练的,使用GPU如何运行这里就不过多赘述了。

运行结果

大概训练了三个多小时,跑出来了结果:
在这里插入图片描述
官方给的训练结果:
在这里插入图片描述

对比一下数据,效果还是差别不大的,基本达到了预训练的效果

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值