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