- Hugging Face 是一家在 NLP 和 AI 領域具有重要影響力的科技公司,他們的開源工具和社區建設為NLP研究和開發提供了強大的支持。它們擁有當前最活躍、最受關注、影響力最大的 NLP 社區,最新最強的 NLP 模型大多在這里發布和開源。該社區也提供了豐富的教程、文檔和示例代碼,幫助用戶快速上手并深入理解各類 Transformer 模型和 NLP 技術
- Transformers 庫是 Hugging Face 最著名的貢獻之一,它最初是 Transformer 模型的 pytorch 復現庫,隨著不斷建設,至今已經成為 NLP 領域最重要,影響最大的基礎設施之一。該庫提供了大量預訓練的模型,涵蓋了多種語言和任務,成為當今大模型工程實現的主流標準,換句話說,如果你正在開發一個大模型,那么按 Transformer 庫的代碼格式進行工程實現、將 check point 打包成 hugging face 格式開源到社區,對于推廣你的工作有很大的助力作用。本系列文章將介紹 Transformers 庫的基本使用方法
文章目錄
- 1. 常見自然語言處理任務
- 2. 自然語言處理的幾個發展階段
- 3. Transformers簡單介紹
- 4. Transformers及相關庫
1. 常見自然語言處理任務
-
目前常見的 NLP 任務主要可以歸納為
任務 描述 1 情感分析 (sentiment-analysis) 對給定的文本分析其情感極性 2 文本生成 (text-generation) 根據給定的文本進行生成 3 命名實體識別 (ner) 標記句子中的實體 4 閱讀理解 (question-answering) 給定上下文與問題,從上下文中抽取答案 5 掩碼填充 (fill-mask) 填充給定文本中的掩碼詞 6 文本摘要 (summarization) 生成一段長文本的摘要 7 機器翻譯 (translation) 將文本翻譯成另一種語言 8 特征提取 (feature-extraction) 生成給定文本的張量表示 9 對話機器人 (conversional) 根據用戶輸入文本,產生回應,與用戶對話 -
稍早時(17年 Transformer 發表到 20 年 GPT 3 發布),研究人員大多使用源自 CV 的 “特征預訓練 + 下游任務微調” 模式,這時不同任務有各自適合的模型
- 7 是原生 Transformer 模型(Encoder-Decoder結構)的目標任務
- 5 是 BERT 模型(Transformer Encoder)的預訓練任務之一
- 8 過去經常用 BERT 模型完成
- 1 過去經常用 BERT 模型完成,基本可以看作 8 之后接一個分類或者回歸頭
- 2、3、4、6、9 都可以用 GPT 模型完成(Transformer Decoder)
-
自從 20 年 GPT3 驗證了增大參數量帶來的規模效應(Scaling Law)后,GPT 類模型越來越受到重視,至今已逐漸實現了各種任務的大一統
2. 自然語言處理的幾個發展階段
- 第一階段(傳統機器學習思路):統計模型+數據(特征工程)
- 特征提取:TF-IDF、BOW…
- 使用經典統計模型:決策樹、SVM、HMM、CRF…
- 第二階段(深度學習思路):神經網絡+數據
- 特征提取:Word2vec、Glove…
- 使用深度學習模型:MLP、CNN、RNN/LSTM/GRU、Transformer…
- 第三階段(預訓練微調思路):預訓練+(少量)數據微調思路
- 特征提取:BERT 類 Transformer Encoder 模型(同時有很多工作直接端到端)
- 使用 Transformer 類序列模型:GPT、BERT/RoBERTa/ALBERT、BART/T5
- 第四階段(大模型思路):神經網絡+更大的預訓練模型+Prompt
- 基本沒有明確的特征提取階段,或者說用 GPT 提取前驅序列特征
- 基于 GPT 的各種序列生成模型:ChatGPT、Bloom、LLaMA、Alpaca、Vicuna、MOSS…
3. Transformers簡單介紹
- HuggingFace 出品,當下最熱、最常使用的自然語言處理工具包之一,不夸張的說甚至沒有之一,官方網址
- 實現了大量的基于 Transformer 架構的主流預訓練模型,不局限于自然語言處理模型,還包括圖像、音頻以及多模態的模型
- 提供了海量的預訓練模型與數據集,同時支持用戶自行上傳,社區完善,文檔全面,三兩行代碼便可快速實現模型訓練推理,上手簡單
4. Transformers及相關庫
-
Transformers 庫包含以下核心組件
組件 描述 Transformers 核心庫,模型加載、模型訓練、流水線等 Tokenizer 分詞器,對數據進行預處理,文本到 token 序列的互相轉換 Datasets 數據集庫,提供了數據集的加載、處理等方法 Evaluate 評估函數,提供各種評價指標的計算函數 PEFT 高效微調模型的庫,提供了幾種高效微調的方法,小參數量撬動大模型 Accelerate 分布式訓練,提供了分布式訓練解決方案,包括大模型的加載與推理解決方案 Optimum 優化加速庫,支持多種后端,如Onnxruntime、OpenVino等 Gradio 可視化部署庫,幾行代碼快速實現基于Web交互的算法演示系統 -
安裝方法:目前(2024.7.6)最新版本需要 python 3.8+ 和 PyTorch 1.11+,如下使用 pip 或 conda 安裝
pip install transformers conda install conda-forge::transformers
如果你想要測試用例或者想在正式發布前使用最新的開發中代碼,你得從源代碼安裝
-
部分官方文檔
章節 描述 文檔 完整的 API 文檔和教程 任務總結 🤗 Transformers 支持的任務 預處理教程 使用 Tokenizer
來為模型準備數據訓練和微調 在 PyTorch/TensorFlow 的訓練循環或 Trainer
API 中使用 🤗 Transformers 提供的模型快速上手:微調和用例腳本 為各種任務提供的用例腳本 模型分享和上傳 和社區上傳和分享你微調的模型 遷移 從 pytorch-transformers
或pytorch-pretrained-bert
遷移到 🤗 Transformers