BERT 中文預訓練模型使用

2021-09-19 23:20:27 字數 2370 閱讀 6236

只要是從事文字處理相關工作的人應該都知道 google 最新發布的 bert 模型,該模型屬於是詞向量的預訓練模型,一經提出便橫掃各大 nlp 任務,最近 google 公司如約推出了中文詞向量的預訓練模型,不得不說這是一件非常有良心的事情,在此膜拜和感謝 google 公司。

那麼如何使用 bert 的中文預訓練好的詞向量呢?前兩天看見 *****weekly 推送的一篇文章,叫做是 兩行**玩轉 google bert 句向量詞向量 ,文章提出的方法是將 bert-as-service 作為公共基礎設施的一部分,部署在一台 gpu 伺服器上,使用多台機器從遠端同時連線實時獲取向量,當做特徵資訊輸入到下游模型。

我在此就結合自己的情況梳理步驟如下:

ubuntu 16.04

python 3.6

tensorflow >= 1.10

尤其要注意 tensorflow 的版本,如果版本過低,程式則會報錯,這種情況下可以直接通過 pip 對包進行公升級,命令如下:

安裝依賴環境:

pip install --upgrade tensorflow最開始我就一直卡在了 tensorflow 的版本過低的問題上了,執行程式一直報錯,但是我都沒有仔細去看一眼 readme 。真的是不得不把夏朝同學說的那句話引用至此了。

記住,花幾個小時各種試,能幫你省下看readme的幾分鐘時間。 via:i am developer ​​​​

git clone在 bert-as-service 資料夾中開啟 bert 服務

num_worker是指的開啟的服務程序數量,此處的 2 就表示是伺服器端最高可以處理來自 2 個客戶端的併發請求。但是這並不意味著同一時刻只有 2 個客戶端可以連線服務,連線數量是沒有限制的,只是說在同乙個時刻超過 2 個的併發請求將會放在負載均衡進行排隊,等待執行。

最後,將service/client.py檔案放在客戶端將要執行的資料夾中。

下面這個例子舉的是在伺服器上直接訪問本機的例子

from service.client import bertclientbc = bertclient()bc.encode(['你好', '成都'])

demo 執行結果

如果要在另一台機器上訪問裝有 bert-as-service 的伺服器,則只需輸入對應的 ip 和埠即可,如下所示

from service.client import bertclientbc = bertclient(ip='xx.xx.xx.xx', port=5555) # 埠號預設開啟的5555bc.encode(['你好', '成都'])
4.1 本地直接呼叫:

from bert_serving.client import bertclient

bc = bertclient()

bc.encode(['我 喜歡 你們', '我 喜 歡 你 們'])

4.2 遠端請求服務

post服務:

返回結果:

4.3、在乙個gpu伺服器(**.*.*.68)上部署bert服務,在另外一台cpu伺服器(**.*.*.67)呼叫這個服務:

step1: 呼叫前先在(**.*.*.68)上安裝client:

pip install bert-serving-client

step2: 呼叫服務demo

bert預訓練模型解讀 Bert 預訓練小結

最近正在預訓練乙個中文pytorch版本的bert,模型部分 是基於huggingface發布的版本,預訓練過程還是參考google的 值得吐槽的是huggingface之前發布的分支名叫pytorch pretrain bert,後來又加上了gpt2 xlnet一系列當紅模型,結果索性改了個名字叫...

基於bert預訓練模型的比較

基於bert預訓練模型的比較 electra roberta bert wwm albert xlnet 預訓練任務替換詞檢驗 遮掩詞 與bert相同 遮掩詞 sop permutation lm pretraining model生成器 判別器的模式,生成器與判別器的網路結構均為transform...

教程 使用Bert預訓練模型文字分類

bert模型是google在2018年10月發布的語言表示模型,bert在nlp領域橫掃了11項任務的最優結果,可以說是現今最近nlp中最重要的突破。bert模型的全稱是bidirectional encoder representations from transformers,是通過訓練mask...