用NVIDIA-NGC對BERT進行訓練和微調

用NVIDIA-NGC對BERT進行訓練和微調python

Training and Fine-tuning BERT Using NVIDIA NGC算法

想象一下一個比人類更能理解語言的人工智能程序。想象一下爲定製的域或應用程序構建本身的Siri或Google搜索。             docker

Google BERT(來自Transformers的雙向編碼器表示)爲天然語言處理(NLP)領域提供了一個改變遊戲規則的轉折點。             shell

BERT運行在NVIDIA GPUs驅動的超級計算機上,訓練其龐大的神經網絡,達到史無前例的NLP精度,衝擊了已知人類語言理解的空間。像這樣的人工智能已經被期待了幾十年。有了BERT,它終於來了。網絡

 

 Figure 1. Block diagram for BERT pretraining and fine-tuning.post

本文將詳細討論如何使用BERT,這須要預訓練和微調階段。本文重點放在預訓練。性能

What can BERT do?

隨着全球研究機構將對話人工智能做爲首要目標,BERT在天然語言處理領域取得了重大突破。在過去,基本的語音接口,如電話樹算法,當你打電話給你的移動電話公司,銀行,或互聯網供應商是交易性的,並有有限的語言理解。             學習

對於事務性接口,計算機的理解範圍一次僅限於一個問題。這給計算機提供了有限的所需智能:只有與當前動做相關的智能,一兩個字,或者更進一步說,多是一個句子。有關更多信息,請參閱什麼是會話人工智能?。             測試

但當人們在平常對話中交談時,他們指的是段落前面介紹的單詞和上下文。超越單句是對話人工智能的切入點。             網站

下面是一個使用BERT理解文章並回答問題的例子。這個例子更多的是對話而不是交易。這個例子展現了BERT在語言理解方面的表現。從美式足球運動版上選一段,而後問BERT一個關鍵問題。這個例子取自《鋼鐵俠》中沒有本·羅伊特利斯伯格的鏡頭。如今會發生什麼?。

消息              

匹茲堡鋼人隊是一支總部位於賓夕法尼亞州匹茲堡的職業美式足球隊。鋼人隊做爲美國足球協會(AFC)東區的會員俱樂部參加國家足球聯盟(NFL)的比賽。該隊在海因茨球場進行主場比賽。鋼鐵工人去年賺了43900000美圓。他們的四分衛叫本·羅特利斯伯格。             

羅斯伯格已經在處理肘部問題了。本被後援梅森·魯道夫接替。他的第一個傳球被接球手蒙克里夫的手反彈攔截,但魯道夫在下半場反彈,以16分領先三個得分球。這還不足以阻止鋼人隊以0-2落後,在過去的12年裏,大約90%以0-2領先的球隊錯過了季後賽。這些可能性可能已經讓鋼人隊的球迷們開始考慮明年的比賽,很難不去想羅思伯格的將來。             

問:誰取代了本?             

正在運行推理…             

------------------------             

以312.076句/秒的速度進行推理             

------------------------             

回答:「梅森·魯道夫」             

機率:86.918

太棒了,對吧?句子被解析成知識表示。在挑戰問題上,BERT必須肯定誰是匹茲堡鋼人隊的四分衛(本羅斯利斯伯格)。此外,BERT能夠看出梅森·魯道夫取代了羅斯利斯伯格擔任四分衛,這是本文的一個重點。             

使用NVIDIA TensorRT的推理速度早些時候報告爲每秒312.076句。若是取其倒數,則得到3.2毫秒的延遲時間。這種GPU加速能夠很快地預測出答案,在人工智能領域被稱爲推理。              在2018年,BERT成爲一個流行的深度學習模式,由於它的GLUE(General Language Understanding Evaluation通用語言理解評估)得分達到80.5%(7.7%的絕對改善)。有關更多信息,請參見多任務基準測試和分析平臺以得到天然理解。             

回答問題是粘合基準度量之一。最近的一個突破是開發斯坦福問答數據集或小組,由於它是一個強大和一致的訓練和標準化學習績效觀察的關鍵。有關更多信息,請參閱SQuAD:100000+文本機器理解問題。             

擁有足夠的計算能力一樣重要。在Google開發了BERT以後,不久NVIDIA就經過在許多gpu上訓練BERT,使用大規模並行處理實現了世界記錄時間。他們使用了大約83億個參數,並在53分鐘內訓練,而不是幾天。根據ZDNet在2019年的報告,「GPU製造商說,他們的人工智能平臺如今擁有最快的訓練記錄、最快的推理和迄今爲止同類最大的訓練模型。」

BERT background

BERT的名字裏有三個概念。             

首先,變形金剛是一個神經網絡層,它利用自我注意來學習人類語言,其中的一段文字會與自身進行比較。該模型學習如何從段中的每一個其餘單詞派生給定單詞的含義。

 

 igure 2. BERT high-level architecture. Words are encoded with transformers, then used as inputs to classifiers.

第二,雙向意味着遞歸神經網絡(RNNs)將單詞視爲時間序列,從兩個方向看句子。舊的算法將單詞向前看,試圖預測下一個單詞,而忽略了後面出現的單詞所提供的上下文和信息。BERT用自我注意一次看整個輸入句子。這個詞以前或以後的任何關係都會被考慮在內。

Figure 3. BERT works with various types of embeddings as it parses two basic sentences.

最後,編碼器是編碼器-解碼器結構的一個組件。將輸入語言編碼到潛在空間中,而後使用通過訓練的解碼器反向建立另外一種語言。這對翻譯頗有幫助,由於自我關注有助於解決語言在表達相同觀點方面的許多差別,例如單詞的數量或句子結構。             

BERT中,您只需採用編碼的思想來建立輸入的潛在表示,而後將其用做幾個徹底鏈接的層的特徵輸入,以學習特定的語言任務。

How to use BERT

4暗示了讓BERT學會爲您解決問題的兩個步驟。您首先須要對transformer層進行預處理,以便可以將給定類型的文本編碼爲包含完整底層含義的表示。而後,須要訓練全鏈接的分類器結構來解決特定的問題,也稱爲微調。

 

Figure 4. BERT workflow with pretraining and fine-tuning phases.

預訓練是一項巨大的努力,可能須要超級計算機級的計算時間和等量的數據。最經常使用的開放源代碼數據集是維基百科上的文章,它們構成了25億個單詞,而BooksCorpus則提供了11000個無償使用的文本。這最終造成了一個約33億字的數據集。             

全部這些數據均可以輸入到網絡中,供模型掃描和提取語言結構。在這個過程的最後,你應該有一個模型,在某種意義上,知道如何閱讀。這個模型對語言、單詞的意義、上下文和語法有一個大體的理解。             

要爲特定領域(如金融領域)定製此模型,須要在預訓練模型上添加更多特定領域的數據。這使得模型可以理解特定領域的行話和術語,並對其更加敏感。             

根據上下文的不一樣,一個詞有多種含義。例如,熊對動物學家來講就是動物。對華爾街的某些人來講,這意味着一個糟糕的市場。添加專門的文本使BERT定製到該域。使用NGC上提供的預訓練BERT並經過添加特定於域的數據對其進行自定義是一個好主意。             

微調更容易實現,須要的數據集要小得多,大約有上萬個標記示例。BERT能夠被訓練去作一系列的語言任務。             

儘管有許多不一樣的微調運行,您能夠建立專門版本的BERT,但它們均可以分支到相同的基礎預訓練模型。這使得BERT方法一般被稱爲轉移學習的一個例子,當爲一個問題訓練的模型權重被用做另外一個問題的起點時。通過微調,這個BERT模型得到了閱讀的能力,並學會了用它來解決問題。

What makes BERT special?

從教育的角度來看,早期的信息可能頗有趣,但這種方法真的比之前的思路有那麼大的改進嗎?答案是響亮的是!BERT模型在NLP任務中比以往任什麼時候候都能得到更高的精度。一個潛在的來源是膠水基準。             

GLUE表示11個示例NLP任務。一個常見的例子是命名實體識別(named entity recognition),或者可以將輸入中的每一個單詞識別爲人、位置等。另外一種是句子情感類似度,即判斷兩個句子是否都意味着同一件事。GLUE提供了用於評估性能的通用數據集,模型研究人員將其結果提交到在線排行榜,做爲模型準確性的通常展現。             

20189月,最早進的NLP模型徘徊在GLUE分數70左右,平均完成各類任務。雖然使人印象深入,但在一樣的任務中,人類基線的測量值爲87.1,所以很難對人類水平的表現提出任何要求。             

BERT是由谷歌研究員雅各布·德夫林(Jacob Devlin)在201810月開放的(特別是BERT的參數變化最大)。雖然發佈的最大的BERT模型仍然只有80.5分,但它顯著地代表,在至少幾個關鍵任務中,它能夠首次超過人類的基線。有關更多信息,請參閱BERT:Pre-training of Deep Bidirectional Transformers For Language Understanding             

BERT用這些結果得到了整個領域的興趣,並引起了一波新的提交,每個都採用了基於BERT變換器的方法並對其進行了修改。從2019年末的GLUE排行榜上看,最初的BERT投稿一路下滑至第17位。             

最使人印象深入的是,人類的基線分數最近被加入了排行榜,由於模特的表現明顯提升到了被超越的程度。果不其然,在幾個月的時間裏,人類的基準線降低到了8點,徹底超過了平均分和幾乎全部的我的任務表現。當你讀到這篇文章的時候,人類的基線可能會更低。             

2012年用於圖像處理的卷積神經網絡的出現相似,這種在可實現的模型性能方面使人印象深入的快速增加爲新的NLP應用打開了閘門。

Try out BERT

如今,不少人想試試BERT。對於用戶來講,問答過程是至關先進和有趣的。從咱們的步驟開始。             

以前的一篇文章,實時天然語言理解與BERT使用TensorRT,檢查如何創建和運行BERT使用aNVIDIA NGC網站容器爲TensorRT。咱們建議使用它。咱們能夠訪問運行Ubuntu 16.04.6ltsNVIDIA V100 GPU。若是驅動器空間對您來講有問題,請使用/tmp區域,方法是在post中的步驟以前使用如下命令:

cd/tmp             

此外,咱們還找到了另外一個可能有幫助的選擇。確保python/create_docker_container.sh路徑訪問的腳本從底部開始的第三行以下:

-v ${PWD}/models:/models \

另外,在後面直接添加一行,內容以下:

-v ${HOME}:${HOME} \

在成功進入文章的第五步以後,您能夠運行它,而後替換-p "..." -q "What is TensorRT?"段落和問題shell命令部分,以下命令所示。這與本文前面描述的美式足球問題重複。

python/bert_inference.py -e bert_base_384.engine -p

匹茲堡鋼人隊是一支總部位於賓夕法尼亞州匹茲堡的職業美式足球隊。鋼人隊做爲美國足球協會(AFC)東區的會員俱樂部參加國家足球聯盟(NFL)的比賽。該隊在海因茨球場進行主場比賽。鋼鐵工人去年賺了43900000美圓。他們的四分衛叫本·羅特利斯伯格。羅斯伯格已經在處理肘部問題了。本被後援梅森·魯道夫接替。他的第一個傳球被接球手蒙克里夫的手反彈攔截,但魯道夫在下半場反彈,以16分領先三個得分球。這還不足以阻止鋼人隊以0-2落後,在過去的12年裏,大約90%0-2領先的球隊錯過了季後賽。這些可能性可能已經讓鋼人隊的球迷們開始考慮明年的比賽了,很難不去想羅斯伯格的將來。

" -q "Who replaced Ben?" -v /workspace/models/fine-tuned/bert_tf_v2_base_fp16_384_v2/vocab.txt -b 1

要用其餘問題來嘗試這個足球段落,請更改-q "Who replaced Ben?"選擇和價值與另外一個相似的問題。              

對於預訓練和微調的兩階段方法,對於NVIDIA金融服務客戶,有一個BERT-GPU訓練營可用。

相關文章
相關標籤/搜索