谷歌经典bert模型从下载源码到运行成功
谷歌經典bert模型從下載源碼到運行成功
近期,對谷歌經典bert模型進行了簡單的學習,以官方模型代碼為主要學習目標,目前已經成功完成預訓練任務,結果如圖:
下載源碼
官方代碼和與訓練模型鏈接: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版本問題
需要安裝符合要求的tensorflow版本
附上安裝tensorflow指定版本的指令:(8條消息) 使用清華鏡像pip安裝TensorFlow_FGY_u的博客-CSDN博客_pip 安裝tensorflow 清華鏡像
一定要注意版本對應問題:我的安裝版本是python3.6和tensorflow 1.15.0
很多時候運行出問題都是因為版本不對應引起的:
python 與tensorflow版本對應清單鏈接:在 Windows 環境中從源代碼構建 | TensorFlow (google.cn)
我在這直接放圖了,大家也可以點擊上方直接進原網站查看:
CPU:
GPU:
(3)其他版本問題:
在我運行該模型的時候,關于版本不匹配問題還有很多:
這個就是tensorflow python keras三者之間版本不匹配的問題
我查了一下 python tensorflow keras 三者之間的版本對應關系,將keras更新到 2.3.1即可解決問題
參考鏈接:tensorflow + python + keras 版本對應關系 - feiquan - 博客園 (cnblogs.com)
數據集下載
數據集下載鏈接,這個在github源碼的README.md 有給出,該文件也給出了模型的運行方式,參數設置方式等等
(1)預訓練模型的下載:
這里附上文件的網盤鏈接,有需要自取即可
鏈接:https://pan.baidu.com/s/1xcC6rdo6o7gn1VLB1-sq5w
提取碼:o203
(2)GLUE數據集的下載
在這個地方我遇到了一些問題,可能是因為下載源是在國外,我在pycharm terminal 直接運行的官方給的下載腳本
download_glue_data.py(下載腳本):
運行指令大概是這樣:(注意 task 是MRPC)
但是在輸入運行腳本的指令之后,我一直卡在了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如何運行這里就不過多贅述了。
運行結果
大概訓練了三個多小時,跑出來了結果:
官方給的訓練結果:
對比一下數據,效果還是差別不大的,基本達到了預訓練的效果
總結
以上是生活随笔為你收集整理的谷歌经典bert模型从下载源码到运行成功的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux文件扫描并打印,Linux办公
- 下一篇: 折叠旅行车调研