新聞中心

懷來網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),懷來網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為懷來數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的懷來做網(wǎng)站的公司定做!
來了來了,它來了!它帶著全新的tokenizer API、TensorFlow改進(jìn)以及增強(qiáng)的文檔和教程來了!
G站上最受歡迎的NLP項(xiàng)目,AI界無人不知的最先進(jìn)NLP模型Transformer剛剛推出了第三代。
這次更新力度可謂誠意滿滿,不僅帶來了2代的升級,同時(shí)還增加了一些新的功能和特性。下面我們就來看看都更新了哪些項(xiàng)目吧。
對比前一代的重大改動
首先我們來看看和Transformer v2相比,v3做出了哪些比較令人矚目的更新。
BERT被一分為二
BERT被分割為BertForMaskedLM和BertLMHeadModel,因此,以后就不能再拿BertForMaskedLM做因果語言建模,也不能接受lm_labels參數(shù)。
Trainer從類轉(zhuǎn)為方法
v3還對Trainer數(shù)據(jù)整理器做了一個改動,將其從一個類改成了一個方法。
直接設(shè)置tokenizer的特殊標(biāo)記屬性
在v3中,你可以直接設(shè)置tokenizer的特殊標(biāo)記屬性,例如tokenizer.mask_token = '
prepare_for_model被移除
作為新的 tokenizer API 的一部分,prepare_for_model 方法被移除。
新的 Tokenizer API
隨著rust tokenizers的加入,tokenizers在第2版中發(fā)展迅速。現(xiàn)在,它有了一個更簡單、更靈活的 API,在 Python(slow)和 Rust(fast)tokenizers 之間進(jìn)行了調(diào)整。新的 API 讓你可以更深入地控制截?cái)嗪吞畛洌试S動態(tài)填充或填充到 8 的倍數(shù)。
重新設(shè)計(jì)的 API 詳細(xì)解釋:
https://huggingface.co/transformers/master/preprocessing.html。
下面我們來看看這些顯著的變化:
- 現(xiàn)在可以截?cái)嘁粋€模型的最大輸入長度,同時(shí)填充一個批次中最長的序列。
- 填充和截?cái)啾唤怦?,更容易控制?/li>
- 它可以pad到預(yù)定義長度的倍數(shù)例如8,可以為最新的NVIDIA GPU(V100)帶來顯著的速度提升。
- 一個使用 tokenizer.__call__ 的通用包裝器,可用于所有情況(例如單個序列、一對序列到組、批次等)。
- tokenizer 現(xiàn)在可以接受預(yù)標(biāo)記化的輸入。
- 現(xiàn)在,所有的Rust tokenizers都像slow tokenizers一樣被全面測試了。
- 一個新類 AddedToken ,用來對添加的標(biāo)記,在標(biāo)記化過程中的行為,進(jìn)行更精細(xì)的控制。特別是用戶可以控制(1)在標(biāo)記化過程中,標(biāo)記周圍的左右空格是否會被移除(2)標(biāo)記是否會在另一個詞中被識別,以及(3)標(biāo)記是否會以標(biāo)準(zhǔn)化的形式被識別(例如,如果標(biāo)記化器使用小寫字母)。
- 序列化問題得到解決
- 在 tokenizers 上使用 return_tensors 參數(shù)時(shí),可以創(chuàng)建 NumPy tensors。
- 引入了一個新的枚舉 TensorType 來映射我們支持的所有可能的張量后端:TensorType.TENSORFLOW, TensorType.PYTORCH, TensorType.NUMPY。
- Tokenizers 現(xiàn)在接受 encode(...)、encode_plus(...)、batch_encode_plus(...) tokenizer 方法的 return_tensors 參數(shù)的 TensorType enum。
- BatchEncoding 新增的屬性 is_fast 表示 BatchEncoding 是來自 Python(slow)tokenizer 還是 Rust(fast)tokenizer。
- slow和fast tokenizer 現(xiàn)在是可挑選的。它們的輸出也是如此,即 dict 子類 BatchEncoding。
其他激動人心的改進(jìn)
針對TensorFlow的改進(jìn)
全新版本中,針對TensorFlow進(jìn)行了非常大的升級:
- TensorFlow模型現(xiàn)在可以自己計(jì)算損失,使用TFPretrainedModel.compute_loss方法。
- 現(xiàn)在可以在TensorFlow中調(diào)整token嵌入的大小
- Cleaning TensorFlow model
新增MobileBERT
《MobileBERT: a Compact Task-Agnostic BERT for Resource-Limited Devices 》中的MobileBERT被添加到PyTorch和TensorFlow的庫中。
論文地址:
https://arxiv.org/abs/2004.02984
增加了一個單一的檢查點(diǎn):mobilebert-uncased,也就是按照我們的 API 轉(zhuǎn)換的 uncased_L-24_H-128_B-512_A-4_F-4_OPT 檢查點(diǎn)。
增強(qiáng)examples/seq2seq內(nèi)容
全新版本中,將舊的 examples/summarization和 examples/translation文件夾整合到了一個新的examples/seq2seq文件夾中。
- Finetuning在summarization時(shí)效果不錯,不過翻譯時(shí)需要更多的實(shí)驗(yàn)。Finetuning可以在多gpu上工作,在驗(yàn)證過程中保存rouge分?jǐn)?shù),并提供--freeze_encoder和--freeze_embeds選項(xiàng)。這些選項(xiàng)使得BART在cnn/dailymail數(shù)據(jù)集上的精調(diào)速度提高了5倍。
- 在distillation.py中添加了Distillbart代碼。目前,它只支持匯總。
- 評估對于summarization和翻譯都很好用。
- 新增權(quán)重和偏差共享任務(wù),用于XSUM總結(jié)任務(wù)的協(xié)作。
Distilbart
- Distilbart模型是bart-large-cnn和bart-large-xsum的較小版本,它們可以使用BartForConditionalGeneration.from_pretrained('sshleifer/distilbart-xsum-12-6')來加載
- 重現(xiàn)的命令可以在examples/seq2seq文件夾中找到。
新增BERT Loses Patience
基準(zhǔn)
對基準(zhǔn)腳本進(jìn)行了整合,并增加了一些功能。
針對Tensorflow增加推理:CPU、GPU、GPU+XLA、GPU+急切模式、CPU+急切模式、TPU。
針對PyTorch增加了推理和訓(xùn)練:
- 推理:CPU, CPU + torchscript, GPU, GPU + torchscript, GPU + 混合精度, Torch/XLA TPU
- 訓(xùn)練:CPU、GPU、GPU+混合精度、Torch/XLA TPU。
分享題目:GitHub超3萬星:Transformer3發(fā)布,BERT被一分為二
標(biāo)題URL:http://www.dlmjj.cn/article/ccoccji.html


咨詢
建站咨詢
