Transformers 文件
理念
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
理念
🤗 Transformers 是一個面向以下使用者的精選庫:
- 希望使用、研究或擴充套件大型 Transformers 模型的機器學習研究人員和教育工作者。
- 希望微調這些模型或在生產中部署它們的實踐者,或兩者兼而有之。
- 只想下載預訓練模型並用它來解決給定機器學習任務的工程師。
該庫的設計考慮了兩個重要目標:
- 儘可能地易用和快速
- 我們嚴格限制了使用者需要學習的抽象數量。實際上,幾乎沒有抽象,只需要三個標準類來使用每個模型:配置、模型和預處理類(用於 NLP 的分詞器,用於視覺的影像處理器,用於音訊的特徵提取器,以及用於多模態輸入的處理器)。
- 所有這些類都可以透過使用通用的
from_pretrained()
方法從預訓練例項中以簡單統一的方式進行初始化。該方法會從 Hugging Face Hub 或您自己儲存的檢查點下載(如果需要)、快取並載入相關的類例項和關聯資料(配置的超引數、分詞器的詞彙表和模型的權重)。 - 除了這三個基礎類之外,該庫還提供了兩個 API:pipeline() 用於快速使用模型進行給定任務的推理,以及 Trainer 用於快速訓練或微調 PyTorch 模型(所有 TensorFlow 模型都與
Keras.fit
相容)。 - 因此,這個庫不是一個用於神經網路構建塊的模組化工具箱。如果您想擴充套件或基於該庫進行開發,只需使用常規的 Python、PyTorch、TensorFlow、Keras 模組,並從庫的基礎類繼承以重用模型載入和儲存等功能。如果您想了解更多關於我們模型編碼理念的資訊,請檢視我們的 重複自身 部落格文章。
- 提供最先進的模型,其效能儘可能接近原始模型
- 我們為每個架構至少提供一個示例,該示例再現了該架構官方作者提供的一個結果。
- 程式碼通常儘可能接近原始程式碼庫,這意味著一些 PyTorch 程式碼可能因為是從 TensorFlow 程式碼轉換而來,所以不如它本來應該的“PyTorch風格”,反之亦然。
其他幾個目標
儘可能一致地暴露模型內部結構
- 我們使用單一 API 訪問完整的隱藏狀態和注意力權重。
- 預處理類和基礎模型 API 都是標準化的,以便於在模型之間輕鬆切換。
納入對微調和研究這些模型的有前景工具的主觀選擇
- 一種簡單一致的方法,用於向詞彙表和嵌入中新增新標記以進行微調。
- 簡單的方法來遮蔽和修剪 Transformer 的注意力頭。
輕鬆切換 PyTorch、TensorFlow 2.0 和 Flax,允許使用一個框架進行訓練,並使用另一個框架進行推理。
主要概念
該庫圍繞每種模型的三種類型的類構建
- 模型類可以是 PyTorch 模型 (torch.nn.Module)、Keras 模型 (tf.keras.Model) 或 JAX/Flax 模型 (flax.linen.Module),它們與庫中提供的預訓練權重一起工作。
- 配置類儲存構建模型所需的超引數(例如層數和隱藏大小)。您不總是需要自己例項化這些。特別是,如果您正在使用未進行任何修改的預訓練模型,建立模型將自動處理配置的例項化(這是模型的一部分)。
- 預處理類將原始資料轉換為模型接受的格式。分詞器儲存每個模型的詞彙表,並提供將字串編碼和解碼為可饋送到模型的標記嵌入索引列表的方法。影像處理器預處理視覺輸入,特徵提取器預處理音訊輸入,以及處理器處理多模態輸入。
所有這些類都可以從預訓練例項中例項化、本地儲存並在 Hub 上共享,透過以下三種方法:
from_pretrained()
允許您從預訓練版本例項化模型、配置和預處理類,這些版本可以由庫本身提供(支援的模型可以在 模型中心 上找到)或由使用者本地(或在伺服器上)儲存。save_pretrained()
允許您在本地儲存模型、配置和預處理類,以便可以使用from_pretrained()
重新載入。push_to_hub()
允許您將模型、配置和預處理類共享到 Hub,以便所有人都可以輕鬆訪問。