日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/3/13 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谷歌经典bert模型从下载源码到运行成功 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

谷歌經(jīng)典bert模型從下載源碼到運(yùn)行成功

近期,對谷歌經(jīng)典bert模型進(jìn)行了簡單的學(xué)習(xí),以官方模型代碼為主要學(xué)習(xí)目標(biāo),目前已經(jīng)成功完成預(yù)訓(xùn)練任務(wù),結(jié)果如圖:

下載源碼

官方代碼和與訓(xùn)練模型鏈接:https://github.com/google-research/bert


論文鏈接:https://arxiv.org/abs/1810.04805

配置環(huán)境

1.版本問題

(1)python版本

這個(gè)代碼支持的python版本<3.8 建議大家使用3.6或者3.7版本的python

(2)tensorflow版本

在官方代碼中,有一個(gè)requirements.txt 提到了tensorflow版本問題
需要安裝符合要求的tensorflow版本
附上安裝tensorflow指定版本的指令:(8條消息) 使用清華鏡像pip安裝TensorFlow_FGY_u的博客-CSDN博客_pip 安裝tensorflow 清華鏡像

一定要注意版本對應(yīng)問題:我的安裝版本是python3.6和tensorflow 1.15.0

很多時(shí)候運(yùn)行出問題都是因?yàn)榘姹静粚?yīng)引起的:

python 與tensorflow版本對應(yīng)清單鏈接:在 Windows 環(huán)境中從源代碼構(gòu)建 | TensorFlow (google.cn)

我在這直接放圖了,大家也可以點(diǎn)擊上方直接進(jìn)原網(wǎng)站查看:

CPU:

GPU:

(3)其他版本問題:

在我運(yùn)行該模型的時(shí)候,關(guān)于版本不匹配問題還有很多:

這個(gè)就是tensorflow python keras三者之間版本不匹配的問題

我查了一下 python tensorflow keras 三者之間的版本對應(yīng)關(guān)系,將keras更新到 2.3.1即可解決問題

參考鏈接:tensorflow + python + keras 版本對應(yīng)關(guān)系 - feiquan - 博客園 (cnblogs.com)

數(shù)據(jù)集下載

數(shù)據(jù)集下載鏈接,這個(gè)在github源碼的README.md 有給出,該文件也給出了模型的運(yùn)行方式,參數(shù)設(shè)置方式等等

(1)預(yù)訓(xùn)練模型的下載:

這里附上文件的網(wǎng)盤鏈接,有需要自取即可

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

(2)GLUE數(shù)據(jù)集的下載

在這個(gè)地方我遇到了一些問題,可能是因?yàn)橄螺d源是在國外,我在pycharm terminal 直接運(yùn)行的官方給的下載腳本

download_glue_data.py(下載腳本):

運(yùn)行指令大概是這樣:(注意 task 是MRPC)

但是在輸入運(yùn)行腳本的指令之后,我一直卡在了processing MRPC 不動(dòng)了

我就另外找了個(gè)glue數(shù)據(jù)集 ,這里提供原文鏈接:(8條消息) GLUE-MRPC數(shù)據(jù)集下載(國內(nèi))_Acecai01的博客模板-CSDN博客_mrpc數(shù)據(jù)集

參數(shù)設(shè)置

官方給的那些參數(shù),不一定適合所有的人,首先他給的Linux系統(tǒng)下的指令 在設(shè)置環(huán)境變量那條 windows 與Linux 系統(tǒng)是有較大差別的

Linux的就不多說了,和官方格式一樣,只需要修改一下路徑就好了

Windows 在cmd中設(shè)置環(huán)境變量 可以參考:(8條消息) Windows–cmd命令行添加環(huán)境變量_TLCrow的博客-CSDN博客_命令行添加環(huán)境變量

這是官方給出的參數(shù):

如果不太想設(shè)置環(huán)境變量,可以不使用export(Linux)/set(Windows) 指令

直接把參數(shù)中對應(yīng)的BERT_BASE_DIR 和GLUE_DIR 換成你下載的數(shù)據(jù)集所在的絕對路徑,這樣可以基本保證路徑方面不出錯(cuò)

在輸入python 后面那一堆參數(shù)的時(shí)候,要注意把 每個(gè)參數(shù)后面的下劃線去掉,對于train_batch_size 這個(gè)參數(shù) 如果32覺得太大了,可以設(shè)置成 16 8 大小

Project Structure:

我的運(yùn)行指令如下:

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

具體路徑大家以自己文件的放置位置為準(zhǔn),每個(gè)人設(shè)置的參數(shù)都不太一樣

DeBug

由于這個(gè)是三年前的代碼,有一些方法或者包的名稱會(huì)有些變化

這里就提兩個(gè)比較典型的問題:

(1)由于當(dāng)時(shí)使用的tensorflow應(yīng)該是v1版本的,所以在 import tensorflow as tf時(shí)需要,換成 import tensorflow.compat.v1 as tf或者直接在代碼處 加上 compat.v1

然后,不知道是我之前有動(dòng)過代碼(在之前我應(yīng)該是沒有更改過代碼),這個(gè)代碼里面出現(xiàn)了cast 函數(shù)的錯(cuò)誤:(location:run_classifier.py line:530)

根據(jù)代碼上方的注釋:

我把參數(shù)更改了一下:

(2)

這個(gè)我在網(wǎng)上找的所有的報(bào)錯(cuò)都是:module ‘tensorflow._api.v1.io’ has no attribute ‘gfile’

通過這篇文章:Tensorflow報(bào)錯(cuò):AttributeError: module ‘tensorflow._api.v1.io’ has no attribute ‘gfile’ - RiddleLi - 博客園 (cnblogs.com)

我試著把v1.io 去掉,發(fā)現(xiàn)竟然沒有錯(cuò)誤了,之前的代碼有的需要加上v1,但是這個(gè)地方需要去掉v1,屬實(shí)有點(diǎn)懵,應(yīng)該就是版本不兼容的問題。

到這里差不多就沒有其他的問題了,就可以用官方給的參數(shù) 對模型進(jìn)行預(yù)訓(xùn)練了

運(yùn)行過程

能夠正常運(yùn)行的標(biāo)準(zhǔn),首先肯定是能跑起來,然后cpu/gpu占用率保持一個(gè)相對穩(wěn)定的數(shù)值:

運(yùn)行過程中輸出的數(shù)據(jù):

運(yùn)行時(shí)CPU占用率:

可以看到我的內(nèi)存和CPU一直保持在一個(gè)很穩(wěn)定的范圍內(nèi)

關(guān)于想要用GPU運(yùn)行的話,就需要稍微更改參數(shù),而且要安裝cuda cudnn 配置環(huán)境等等 還有很多版本適配問題,還是比較麻煩的,因?yàn)槲沂鞘褂肅PU進(jìn)行預(yù)訓(xùn)練的,使用GPU如何運(yùn)行這里就不過多贅述了。

運(yùn)行結(jié)果

大概訓(xùn)練了三個(gè)多小時(shí),跑出來了結(jié)果:

官方給的訓(xùn)練結(jié)果:

對比一下數(shù)據(jù),效果還是差別不大的,基本達(dá)到了預(yù)訓(xùn)練的效果

總結(jié)

以上是生活随笔為你收集整理的谷歌经典bert模型从下载源码到运行成功的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。