github地址:https://github.com/huggingface/transformers
Transformers 提供了數以千計的預訓練模型,支持 100 多種語言的文本分類、信息抽取、問答、摘要、翻譯、文本生成。它的宗旨是讓NLP 技術人易用。
Transformers 提供了便于快速下載和使用的API,可以把預訓練模型用在給定文本、在自己的數據集上微調然后,通過?model hub?與社區共享。同時,每個定義的 Python 模塊都是完全獨立的,便于修改和快速進行研究實驗。
Transformers 支持三個最熱門的深度學習庫:?Jax,?PyTorch?以及?TensorFlow?,并與之無縫整合。可以直接使用一個框架訓練模型,然后用另一個加載和推理。
目錄
在線演示
快速上手
為什么要用 transformers?
什么情況下我不該用 transformers?
安裝
模型架構
更多
在線演示
可以直接在模型頁面上測試大多數?model hub?上的模型。
提供了?私有模型托管、模型版本管理以及推理API。
這里是一些例子:
用 BERT 做掩碼填詞
用 Electra 做命名實體識別
用 GPT-2 做文本生成
用 RoBERTa 做自然語言推理
用 BART 做文本摘要
用 DistilBERT 做問答
用 T5 做翻譯
Write With Transformer,由Hugging Face團隊打造,是一個文本生成的官方 demo。
快速上手
為快速使用模型提供了?pipeline?(流水線)API。流水線聚合了預訓練模型和對應的文本預處理。下面是一個快速使用流水線去判斷正負面情緒的例子:
>>> from transformers import pipeline# 使用情緒分析流水線
>>> classifier = pipeline('sentiment-analysis')
>>> classifier('We are very happy to introduce pipeline to the transformers repository.')
[{'label': 'POSITIVE', 'score': 0.9996980428695679}]
第二行代碼下載并緩存了流水線使用的預訓練模型,而第三行代碼則在給定的文本上進行了評估。這里的答案“正面” (positive) 具有 99 的置信度。
許多的 NLP 任務都有開箱即用的預訓練流水線。比如說,可以輕松的從給定文本中抽取問題答案:
>>> from transformers import pipeline# 使用問答流水線
>>> question_answerer = pipeline('question-answering')
>>> question_answerer({
... 'question': 'What is the name of the repository ?',
... 'context': 'Pipeline has been included in the huggingface/transformers repository'
... })
{'score': 0.30970096588134766, 'start': 34, 'end': 58, 'answer': 'huggingface/transformers'}
除了給出答案,預訓練模型還給出了對應的置信度分數、答案在詞符化 (tokenized) 后的文本中開始和結束的位置。可以從這個教程了解更多流水線API支持的任務。
要在自己的任務上下載和使用任意預訓練模型也很簡單,只需三行代碼。這里是 PyTorch 版的示例:
>>> from transformers import AutoTokenizer, AutoModel>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = AutoModel.from_pretrained("google-bert/bert-base-uncased")>>> inputs = tokenizer("Hello world!", return_tensors="pt")
>>> outputs = model(**inputs)
這里是等效的 TensorFlow 代碼:
>>> from transformers import AutoTokenizer, TFAutoModel>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = TFAutoModel.from_pretrained("google-bert/bert-base-uncased")>>> inputs = tokenizer("Hello world!", return_tensors="tf")
>>> outputs = model(**inputs)
詞符化器 (tokenizer) 為所有的預訓練模型提供了預處理,并可以直接對單個字符串進行調用(比如上面的例子)或對列表 (list) 調用。它會輸出一個可以在下游代碼里使用或直接通過?**?解包表達式傳給模型的詞典 (dict)。
模型本身是一個常規的?Pytorch?nn.Module?或?TensorFlow?tf.keras.Model,可以常規方式使用。?這個教程解釋了如何將這樣的模型整合到經典的 PyTorch 或 TensorFlow 訓練循環中,或是如何使用?Trainer?訓練器API 來在一個新的數據集上快速微調。
為什么要用 transformers?
1便于使用的先進模型:
NLU 和 NLG 上表現優越
對教學和實踐友好且低門檻
高級抽象,只需了解三個類
對所有模型統一的API
2 更低計算開銷:
研究人員可以分享已訓練的模型而非每次從頭開始訓練
工程師可以減少計算用時和生產環境開銷
數十種模型架構、兩千多個預訓練模型、100多種語言支持
3 對于模型生命周期的每一個部分都面面俱到:
訓練先進的模型,只需 3 行代碼
模型在不同深度學習框架間任意轉移,隨你心意
為訓練、評估和生產選擇最適合的框架,銜接無縫
4 為你的需求輕松定制專屬模型和用例:
為每種模型架構提供了多個用例來復現原論文結果
模型內部結構保持透明一致
模型文件可單獨使用,方便魔改和快速實驗
什么情況下我不該用 transformers?
本庫并不是模塊化的神經網絡工具箱。模型文件中的代碼特意呈若璞玉,未經額外抽象封裝,以便研究人員快速迭代魔改而不致溺于抽象和文件跳轉之中。
Trainer?API 并非兼容任何模型,只為本庫之模型優化。若是在尋找適用于通用機器學習的訓練循環實現,請另覓他庫。
盡管已盡力而為,examples 目錄中的腳本也僅為用例而已。對于特定問題,它們并不一定開箱即用,可能需要改幾行代碼以適之。
安裝
使用 pip
這個倉庫已在 Python 3.9+、Flax 0.4.1+、PyTorch 2.0+ 和 TensorFlow 2.6+ 下經過測試。
可以在虛擬環境中安裝Transformers,?如果還不熟悉 Python 的虛擬環境,請閱此用戶說明。
首先,用打算使用的版本的 Python 創建一個虛擬環境并激活。
然后,需要安裝 Flax、PyTorch 或 TensorFlow 其中之一。關于在使用的平臺上安裝這些框架,請參閱?TensorFlow 安裝頁,?PyTorch 安裝頁?或?Flax 安裝頁。
當這些后端之一安裝成功后, Transformers 可依此安裝:
pip install transformers
如果想要試試用例或者想在正式發布前使用最新的開發中代碼,從源代碼安裝。
使用 conda
conda install conda-forge::transformers
筆記:?從?huggingface?渠道安裝?transformers?已被廢棄。
要通過 conda 安裝 Flax、PyTorch 或 TensorFlow 其中之一,請參閱它們各自安裝頁的說明。
模型架構
所有的模型檢查點由用戶和組織上傳,均與 huggingface.co?model hub?無縫整合。目前的數量:?
Transformers 目前支持如下的架構: 模型概述請閱這里.
要檢查某個模型是否已有 Flax、PyTorch 或 TensorFlow 的實現,或其是否在Tokenizers 庫中有對應詞符化器(tokenizer),參閱此表。
這些實現均已于多個數據集測試(請參看用例腳本)并應于原版實現表現相當。可以在用例文檔的此節中了解表現的細節。
更多
章節 | 描述 |
---|---|
文檔 | 完整的 API 文檔和教程 |
任務總結 | 🤗 Transformers 支持的任務 |
預處理教程 | 使用?Tokenizer ?來為模型準備數據 |
訓練和微調 | 在 PyTorch/TensorFlow 的訓練循環或?Trainer ?API 中使用 🤗 Transformers 提供的模型 |
快速上手:微調和用例腳本 | 為各種任務提供的用例腳本 |
模型分享和上傳 | 和社區上傳和分享你微調的模型 |
遷移 | 從?pytorch-transformers ?或?pytorch-pretrained-bert ?遷移到 🤗 Transformers |
論文:論文
至此,本文的內容就結束啦。