XLNet雖然好用,但實在太費錢了!近日,一位韓國小哥成功將簡化版的XLNet在PyTorch Wrapper實現(xiàn),批規(guī)模僅為1,不再依賴谷歌爸爸的巨額算力,讓“窮人”也能用得起。
不久前,谷歌大腦和CMU聯(lián)合團隊提出面向NLP預(yù)訓(xùn)練新方法XLNet,性能全面超越此前NLP領(lǐng)域的黃金標桿BERT,在20個任務(wù)上實現(xiàn)了性能的大幅提升,刷新了18個任務(wù)上的SOTA結(jié)果,可謂全面屠榜。
論文地址:
https://arxiv.org/pdf/1906.08237.pdf
XLNet性能確實強大,不過還是要背靠谷歌TPU平臺的巨額算力資源。有網(wǎng)友做了一下簡單統(tǒng)計,按照論文中的實驗設(shè)計,XL-Large用512 TPU chips訓(xùn)練了4天,也就是說,訓(xùn)練時的總計算量是BERT的5倍。語料規(guī)模是BERT-large的10倍。
要知道BERT作為谷歌的親兒子,其訓(xùn)練量和對計算資源的需求已經(jīng)讓很多人望塵莫及?,F(xiàn)在XLNet又來了個5倍,讓人直呼用不起。
這么強勁的XLNet,只能看著流口水卻用不起,豈不是太遺憾了?
土豪有土豪的用法,窮人有窮人的訣竅。最近有個韓國小哥就成功將XLNet挪到了Pytorch框架上,可以在僅使用小規(guī)模訓(xùn)練數(shù)據(jù)(批規(guī)模=1)的情況下,實現(xiàn)一個簡單的XLNet實例,并弄清XLNet架構(gòu)的預(yù)訓(xùn)練機制。他將實現(xiàn)方案放在了GitHub上。
要使用這個實現(xiàn)很簡單,只需導(dǎo)入如下代碼:
$ git clone https://github.com/graykode/xlnet-Pytorch && cd xlnet-Pytorch# To use Sentence Piece Tokenizer(pretrained-BERT Tokenizer)$ pip install pytorch_pretrained_bert$ python main.py --data ./data.txt --tokenizer bert-base-uncased --seq_len 512 --reuse_len 256 --perm_size 256 --bi_data True --mask_alpha 6 --mask_beta 1 --num_predict 85 --mem_len 384 --num_step 100
接下來對實現(xiàn)方法和超參數(shù)設(shè)置的簡單介紹,首先貼出XLNet論文中給出的預(yù)訓(xùn)練超參數(shù):
然后,作者給出了PyTorch框架下XLNet實現(xiàn)的超參數(shù)調(diào)節(jié)選項如下:
—data(String): 使用文本文件訓(xùn)練,多行文本也可以。另外,將一個文件視為一個批張量。默認值: data.txt
—tokenizer(String):目前僅使用【這里】的Tokenizer作為子詞的Tokenizer(即將編入句子部分),這里可以選擇bert-base-uncased/bert-large-uncased/bert-base-cased/bert-large-cased四種Tokenizer。
默認值:bert-base-uncased
—seq_len(Integer): 序列長度。
默認值 :512
—reuse_len(Interger): 可作為記憶重復(fù)使用的token數(shù)量??赡苁切蛄虚L度的一半。
默認值 :256
—perm_size(Interger): 最長排列長度。
默認值:256
--bi_data(Boolean): 是否設(shè)立雙向數(shù)據(jù),如設(shè)置為“是”,biz(batch size) 參數(shù)值應(yīng)為偶數(shù)。
默認值:否
—mask_alpha(Interger): 多少個token構(gòu)成一個group。
默認值:6
—mask_beta(Integer):在每個group中需要mask的token數(shù)量。
默認值:1
—num_predict(Interger) :
要預(yù)測的token數(shù)量。在XLNet論文中, 這表示部分預(yù)測。
默認值:85
—mem_len(Interger): 在Transformer-XL架構(gòu)中緩存的步驟數(shù)量。
默認值:384
—number_step(Interger):步驟(即Epoch)數(shù)量.。
默認值:100
XLNet:克服BERT固有局限,20項任務(wù)性能強于BERT
XLNet是一種基于新型廣義置換語言建模目標的新型無監(jiān)督語言表示學(xué)習(xí)方法。此外,XLNet采用Transformer-XL作為骨架模型,在長時間環(huán)境下的語言任務(wù)中表現(xiàn)出非常出色的性能,在多項NLP任務(wù)性能上超越了BERT,成為NLP領(lǐng)域的新標桿。
關(guān)于XLNet中的一些關(guān)鍵詞
1、自回歸模型與自動編碼模型
自回歸(AR)模型
自動編碼(AE)模型
2、部分預(yù)測的排列語言建模
排列語言建模
部分預(yù)測
3、具有目標感知表示的雙向自注意力模型
雙向自注意力模型
目標感知表示
-
谷歌
+關(guān)注
關(guān)注
27文章
6231瀏覽量
108175 -
nlp
+關(guān)注
關(guān)注
1文章
490瀏覽量
22629 -
pytorch
+關(guān)注
關(guān)注
2文章
809瀏覽量
13968
原文標題:XLNet太貴?這位小哥在PyTorch Wrapper上做了個微縮版的
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
利用Arm Kleidi技術(shù)實現(xiàn)PyTorch優(yōu)化

Arm KleidiAI助力提升PyTorch上LLM推理性能

PyTorch 2.5.1: Bugs修復(fù)版發(fā)布

PyTorch 數(shù)據(jù)加載與處理方法
如何在 PyTorch 中訓(xùn)練模型
如何使用 PyTorch 進行強化學(xué)習(xí)
CapTIvate?技術(shù)指南–簡化版

基于Pytorch訓(xùn)練并部署ONNX模型在TDA4應(yīng)用筆記

評論