Pytorch-Transformers 1.0 發布,支持六個預訓練框架,含 27 個預...

2020-12-07 雷鋒網

雷鋒網 AI 科技評論按:剛剛,在 Github 上發布了開源 Pytorch-Transformers 1.0,該項目支持 BERT, GPT, GPT-2, Transfo-XL, XLNet, XLM 等,並包含 27 個預訓練模型。

我們來看。

哪些支持

PyTorch-Transformers(此前叫做pytorch-pretrained-bert)是面向自然語言處理,當前性能最高的預訓練模型開源庫。

該開源庫現在包含了 PyTorch 實現、預訓練模型權重、運行腳本和以下模型的轉換工具:

1、谷歌的 BERT,論文:「BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding」,論文作者:Jacob Devlin, Ming-Wei Chang, Kenton Lee ,Kristina Toutanova

2、OpenAI 的GPT,論文:「 Improving Language Understanding by Generative Pre-Training」,論文作者:Alec Radford, Karthik Narasimhan, Tim Salimans , Ilya Sutskever

3、OpenAI 的 GPT-2,論文:「 Language Models are Unsupervised Multitask Learners」,論文作者:Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei,Ilya Sutskever

4、谷歌和 CMU 的 Transformer-XL ,論文:「 Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context」,論文作者:Zihang Dai*, Zhilin Yang*, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov.

5、谷歌和 CMU 的XLNet,論文:「XLNet: Generalized Autoregressive Pretraining for Language Understanding」,論文作者:Zhilin Yang*, Zihang Dai*, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le

6、Facebook的 XLM,論文:「 Cross-lingual Language Model Pretraining」,論文作者:Guillaume Lample,Alexis Conneau

這些實現都在幾個數據集(參見示例腳本)上進行了測試,性能與原始實現相當,例如 BERT中文全詞覆蓋在 SQuAD數據集上的F1分數為93 , OpenAI GPT 在 RocStories上的F1分數為88, Transformer-XL在 WikiText 103 上的困惑度為18.3, XLNet在STS-B的皮爾遜相關係數為0.916。

27個預訓練模型

項目中提供了27個預訓練模型,下面是這些模型的完整列表,以及每個模型的簡短介紹。

例子

BERT-base和BERT-large分別是110M和340M參數模型,並且很難在單個GPU上使用推薦的批量大小對其進行微調,來獲得良好的性能(在大多數情況下批量大小為32)。

為了幫助微調這些模型,我們提供了幾種可以在微調腳本中激活的技術 run_bert_classifier.py 和 run_bert_squad.py:梯度累積(gradient-accumulation),多GPU訓練(multi-gpu training),分布式訓練(distributed training )和16- bits 訓練( 16-bits training)。注意,這裡要使用分布式訓練和16- bits 訓練,你需要安裝NVIDIA的apex擴展。

作者在doc中展示了幾個基於BERT原始實現(https://github.com/google-research/bert/)和擴展的微調示例,分別為:

  • 九個不同GLUE任務的序列級分類器;

  • 問答集數據集SQUAD上的令牌級分類器;

  • SWAG分類語料庫中的序列級多選分類器;

  • 另一個目標語料庫上的BERT語言模型。

我們這裡僅展示GLUE的結果:

這裡是使用uncased BERT基礎模型在GLUE基準測試開發集上得到的結果。所有實驗均在批量大小為32的P100 GPU上運行。儘管比較原始,但結果看起來還不錯。

安裝

該項目是在Python 2.7和3.5+上測試(例子只在python 3.5+上測試)和PyTorch 0.4.1到1.1.0測試

pip 安裝:

pip install pytorch-transformers

測試:

python -m pytest -sv ./pytorch_transformers/tests/

python -m pytest -sv ./examples/

傳送門:

源碼:https://github.com/huggingface/pytorch-transformers

文檔:https://huggingface.co/pytorch-transformers/index.html

延伸閱讀

[深度]周明:自然語言處理的未來之路,https://www.leiphone.com/news/201907/djMxwOkOO5u4sf6O.html

多圖帶你讀懂 Transformers 的工作原理,https://www.leiphone.com/news/201903/ELyRKiBJOx8agF1Q.html

超越 BERT 和 GPT,微軟亞洲研究院開源新模型 MASS!https://www.leiphone.com/news/201906/21E6GehD0d9SHC2Q.html

一個續寫故事達到人類水平的AI,OpenAI大規模無監督語言模型GPT-2, https://www.leiphone.com/news/201902/wuK3G9qDcrf5dX0r.html    雷鋒網雷鋒網(公眾號:雷鋒網)

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 【注意力機制】transformers之轉換Tensorflow的Checkpoints
    注意:從2.3.0版本開始,轉換腳本現在已成為 transformers CLI(transformers-cli)的一部分,在任何transformers)=2.3.0的都可用。以下文檔反映了transformers-cli convert命令格式。
  • PyTorch 0.4:完全改變API,官方支持Windows
    新智元報導 來源:Pytorch 官網【新智元導讀】今天,PyTorch官方在GitHub發布0.4.0版本,最重要的改進是支持Windows系統。新版本完全改變了API,是本年度最重大的升級。今天,PyTorch官方在GitHub發布0.4.0版本,最重要的改進是支持Windows系統。PyTorch是在2017年1月由Facebook推出的。它是經典機器學習庫Torch框架的一個埠,Torch二進位文件包裝於GPU加速的Python。
  • PyTorch 1.7發布,支持CUDA 11、Windows分布式訓練
    機器之心報導參與:魔王、小舟昨日,PyTorch 團隊發布 PyTorch 1.7 版本。該版本增添了很多新特性,如支持 CUDA 11、Windows 分布式訓練、增加了支持快速傅立葉變換(FFT)的新型 API 等。
  • 中文最佳,哈工大訊飛聯合發布全詞覆蓋中文BERT預訓練模型
    而在中文領域,哈工大訊飛聯合實驗室也於昨日發布了基於全詞覆蓋的中文 BERT 預訓練模型,在多個中文數據集上取得了當前中文預訓練模型的最佳水平,效果甚至超過了原版 BERT、ERINE 等中文預訓練模型。基於 Transformers 的雙向編碼表示(BERT)在多個自然語言處理任務中取得了廣泛的性能提升。
  • PyTorch 0.2發布:更多NumPy特性,高階梯度、分布式訓練等
    李林 編譯整理量子位 報導 | 公眾號 QbitAIFacebook的機器學習框架(之一)PyTorch今天發布了新版本:0.2.0。這一版本引入了NumPy風格的Broadcasting、Advanced Indexing,增加了高階梯度和分布式PyTorch。
  • PyTorch框架歷史和特性更迭與安裝過程
    PyTorch框架歷史和特性更迭為了方便理解後續章節中對PyTorch的詳細闡述,這裡首先介紹一下PyTorch的發展歷史和一些特性的變化過程。截至本書寫作的時候,PyTorch的最新版本為1.3.0,所以本書敘述的歷史為PyTorch 1.3.0之前的特性更迭,本書後面的代碼將主要基於PyTorch 1.3.0。
  • OpenCV+深度學習預訓練模型,簡單搞定圖像識別 | 教程
    而OpenCV最近一次版本更新,為我們帶來了更好的深度學習支持,在OpenCV中使用預訓練的深度學習模型變得非常容易。pyimagesearch網站今天發布了一份用OpenCV+深度學習預訓練模型做圖像識別的教程,量子位編譯整理如下:最近,OpenCV 3.3剛剛正式發布,對深度學習(dnn模塊)提供了更好的支持,dnn模塊目前支持Caffe、TensorFlow、Torch、PyTorch等深度學習框架。
  • 怎樣預訓練GNN能實現更好的遷移效果?北郵等提出自監督預訓練策略
    儘管 GNN 可以從頭開始訓練,但近來一些研究表明:對 GNN 進行預訓練以學習可用於下遊任務的可遷移知識能夠提升 SOTA 性能。 但是,傳統的 GNN 預訓練方法遵循以下兩個步驟: 1)在大量未標註數據上進行預訓練; 2)在下遊標註數據上進行模型微調。
  • 7天8卡訓練32種語言,字節跳動推出多語言預訓練新範式mRASP
    ,其核心思想是打造「機器翻譯界的趙元任模型」,通過預訓練技術再在具體語種上微調即可達到領先的翻譯效果,其在 32 個語種上預訓練出的統一模型在 47 個翻譯測試集上取得了全面顯著地提升。作者還公布了研究數據、代碼和預訓練模型,參見文末 GitHub 地址。接下來我們從三個方面介紹分析 mRASP:1)機器翻譯預訓練的挑戰;2)mRASP 的動機和方法;3)mRASP 的實際效果和分析。機器翻譯預訓練的挑戰目前絕大多數 AI 任務都是建立在數據基礎之上的統計學習,模型的性能很大程度上依賴於數據的質量和數量。
  • NLP領域預訓練模型的現狀及分析
    二、Cross-lingual Language Model Pretraining(XLM)[7]在這項工作中,作者將預訓練方法擴展到多種語言並展示跨語言預訓練的有效性。筆者認為,這篇工作的創新點有兩個:設計了一個用於多語言分類的跨語種的語言模型訓練任務;將BERT作為模型初始化用到無監督機器翻譯上。
  • 新版PyTorch 1.2 已發布:功能更多、兼容更全、操作更快!
    (https://pytorch.org/docs/stable/jit.html)而現在,我們很高興地宣布我們已經成功開發了四個新版本,包括 PyTorch 1.2,torchvision 0.4,torchaudio 0.3 和 torchtext 0.4。
  • 超越BERT、GPT,微軟提出通用預訓練模型MASS
    屏蔽序列到序列預訓練MASS模型框架如上圖所示,編碼器端的第3-6個詞被屏蔽掉,然後解碼器端只預測這幾個連續的詞,而屏蔽掉其它詞,圖中「_」代表被屏蔽的詞。統一的預訓練框架MASS有一個重要的超參數k(屏蔽的連續片段長度),通過調整k的大小,MASS能包含BERT中的屏蔽語言模型訓練方法以及GPT中標準的語言模型預訓練方法,使MASS成為一個通用的預訓練框架。當k=1時,根據MASS的設定,編碼器端屏蔽一個單詞,解碼器端預測一個單詞,如下圖所示。
  • PTMs|2020最新NLP預訓練模型綜述
    用「兩層的Bi-LSTM」從「雙向語言模型任務BiLM」(包括1個前向的語言模型以及1個後向的語言模型)中預訓練一個「Bi-LSTM Encoder」。能夠顯著提升一系列NLP下遊任務的性能。不過除這些之外,截止至2020.11.27號,最新榜單[30] 裡頭,排名是這樣的,可以看出技術迭代速度之驚人。GLUE榜單:截止2020.11.272.4 預訓練的延伸方向預訓練模型延伸出了很多新的研究方向。
  • 中國最大AI預訓練模型發布:113億參數,北京智源研究院、阿里、清華...
    系統工程方面,採用的是阿里統一多種並行策略的分布式框架Whale,256卡訓練速度是8GPU的29.4倍,加速比接近線性;而基於中文百科、知乎、問答三類數據,則由搜狗提供。據介紹,「文匯」的部分應用即將合作上線,目前已有四個樣例應用可用於展示效果:基於上傳圖片的開放域問答:可以支持用戶上傳圖片後,針對圖片內容進行提問或生成圖片的一句話描述。Talk to Data:只需要一句自然語言的話,就可以實現數據的可視化自動統計與查詢。
  • Deep CARs:使用Pytorch學習框架實現遷移學習
    遷移學習法的優勢在於:學習過程更快、信息更準確,所需的訓練數據也更少。在遷移學習中,現有的這個模型稱為預訓練模型。大多數用於遷移學習的預訓練模型都是基於大型卷積神經網絡之上的。一些人使用的預訓練的模型有VGGNet、ResNet、DenseNet、谷歌的Inception等等。這些網絡大多是在ImageNet上訓練的。
  • 一文讀懂最強中文NLP預訓練模型ERNIE
    基於飛槳開源的持續學習的語義理解框架ERNIE 2.0,及基於此框架的ERNIE 2.0預訓練模型,在共計16個中英文任務上超越了BERT和XLNet, 取得了SOTA效果。本文帶你進一步深入了解ERNIE的技術細節。
  • 23個系列分類網絡,10萬分類預訓練模型,這是飛槳PaddleClas百寶箱
    基於 ImageNet1k 分類數據集,PaddleClas 提供 ResNet、ResNet_vd、Res2Net、HRNet、MobileNetV3 等 23 個系列的分類網絡結構的簡單介紹、論文指標復現配置以及在復現過程中積累的訓練技巧。同時,PaddleClas 還提供了與 23 個系列網絡結構相對應的 117 個預訓練模型,以及推理效果和性能評估。
  • 用Java實現目標檢測|PyTorch
    很多論文都選擇使用PyTorch去實現也證明了它在訓練方面的效率以及易用性。在PyTorch領域,儘管部署一個模型有很多選擇,可為Java開發人員準備的選項卻屈指可數。在過去,用戶可以用PyTorch C++ 寫JNI (Java Native Interface) 來實現這個過程。最近,PyTorch 1.4 也發布了試驗性的Java 前端。
  • 用Java實現目標檢測 | PyTorch
    最近,PyTorch 1.4 也發布了試驗性的Java 前端。可是這兩種解決方案都沒有辦法能讓Java開發者很好的使用:用戶需要從易於使用和易於維護中二選一。針對於這個問題,亞馬遜雲服務 (AWS)開源了 Deep Java Library (DJL),一個為Java開發者設計的深度學習庫。
  • GPT-GNN:圖神經網絡的生成式預訓練方法
    1GNN的預訓練通過預訓練,能夠使得圖神經網絡對於任意的一個沒有標註的圖數據,仍然能夠針對不同的下遊任務進行良好的初始化。而對於如何建立一個預訓練GNN的無監督學習的任務,作者採用了生成式的方法,通過生成圖的節點屬性和圖的結構信息,來提供無監督數據供GNN進行預訓練。