栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Bert模型(Google官方)问题汇总

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Bert模型(Google官方)问题汇总

首先声明:本人是一个刚接触NLP和Python的小白,本文也只是为了记录自己在学习Bert模型上面遇到的一些问题,有说的不对的地方,请大家指正,我都会虚心接受。

本人由于是小白,所以是跟着视频学习跑的bert模型官方示例,视频链接放这里,老师讲的很好,推荐给大家
https://www.bilibili.com/video/BV1NJ411o7u3?p=1

我跑的是谷歌在github上面的官方测试项目,跑的是第一个,具体的网址我放在这里(我跑的是第一个模型,具体任务是判断两个句子是否表达的是同样的意思,谷歌官方还有很多其他任务模型,大家可以尝试)
https://github.com/google-research/bert

如果模型代码和数据集下不下来,可以私信我发给你,上面的视频课程的评论区也有下载方式

环境配置

本人环境:
Anaconda3-4.3.0(python3.6.0)
pycharm:pycharm-community-2017.2.7
tensorflow:1.13.1
CUDA:10
cudnn:v7.4.1.5

环境和各个部分的版本号非常重要!一定要相互对应!!
如果对应不上会出现各种问题!!!
本人在这里浪费了很多时间,大家一定要重视!!!

说明几点:
1、anaconda中集成了python,所以安装了anaconda后就不要再安装python了!安装了相应版本的anaconda,就会有相对应的python版本

2、建议不要下载最新版本,如果版本问题导致模型出现error,实在解决不了可以考虑按照我的版本去下载

3、tensorflow建议使用tensorflow1.XX,而不要使用tensorflow2.XX
因为模型是几年前的了,当时用的是tensorflow1
tensorflow2的语法在有的地方和tensorflow1不同,可能会报错。

4、CUDA和cudnn的版本要对应,这两个家伙和python还有tensorflow的版本也要对应

导入模型和参数设置

导入模型没什么好说的,在pycharm里新建一个工程,把代码和数据集丢进去就行。

这里有一个小问题,是我遇到了的:

如果这里的 modeling optimization tokenization三个包下面有红色波浪线,解决办法是

选择Sources Root 就可以了
参数设置(重点)
一定不要使用官方的参数,原因是路径不合适,会找不到文件导致报错。
可以使用我的参数:

–task_name=MRPC

–do_train=true

–do_eval=true

–data_dir=…/GLUE/glue_data/MRPC

–vocab_file=…/GLUE/BERT_base_DIR/uncased_L-12_H-768_A-12/vocab.txt

–bert_config_file=…/GLUE/BERT_base_DIR/uncased_L-12_H-768_A-12/bert_config.json

–init_checkpoint=…/GLUE/BERT_base_DIR/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=…/GLUE/output

然后跑run_classifier.py,模型就开始跑了

运行结果

CPU跑出来的:

常见问题

1、选择使用CPU还是GPU

建议在代码中自行加入如下代码

os.environ["CUDA_VISIBLE_DEVICES"] = ""

其中" "填写GPU的编号,这个可以在任务管理器里面查到,如果填写集显的编号,就会使用CPU。使用GPU的编号,就会适用相应的GPU

2、关于使用GPU跑模型
如果报错OOM,就是爆显存了,可以适当将一下参数调小

max_seq_length=128  # 最大序列长度
num_train_epochs=3.0  # 训练轮次
train_batch_size=8  # 使用小批量梯度下降优化时,每次处理8个样本

下面是用的1050ti 4G显存跑的时候,显存的占用率

可以看到几乎在爆显存的边缘,而且以上三个参数我都调到最低了,还是会在运行过程中爆掉。

这个是什么原因希望有大佬可以解答一下,是bert太厉害我显卡太垃圾吗?

持续更新中…

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号