Hugging Face Transformers:開源機器學習新手指南

Hugging Face 已發布一份針對初學者的指南,旨在為非技術使用者解開開源機器學習(ML)的神祕面紗。該指南提供了實作步驟,說明如何使用 Hugging Face Transformers 函式庫在託管環境中執行大型語言模型(LLM),此處以 Microsoft 的 Phi-2 為例。

了解 Hugging Face 生態系統

Hugging Face 生態系統由多個相互連結的工具組成,簡化了預訓練模型的部署與使用。

Hugging Face Transformers 函式庫

Transformers 函式庫是一個開源的 Python 函式庫,提供數千個用於自然語言處理(NLP)、電腦視覺與音訊任務的預訓練模型。它抽象化了底層機器學習框架(如 PyTorch、TensorFlow、JAX)的複雜性,讓使用者無需從頭撰寫程式碼即可實作模型。

Hugging Face Hub

Hub 作為協作平台,類似於機器學習領域的 GitHub,社群在此託管開源模型與資料集。Transformers 函式庫可直接與 Hub 整合以下載與部署模型。

Hugging Face Spaces

Spaces 是 Hub 上的服務,允許使用者建立與部署在網路上託管的機器學習示範與應用程式。它支援使用 Docker 模板——預先定義的軟體環境藍圖——快速部署一致的應用程式,例如 JupyterLab 筆記本。

執行 LLM 的技術需求

執行大型語言模型需要特定的硬體與軟體配置,以確保效能與相容性。

GPU 加速

雖然 CPU 能處理部分應用程式,但 LLM 需要圖形處理單元(GPU)的平行計算能力才能高效運作。例如,執行 Phi-2 模型需要具備足夠記憶體的 GPU,如配備 24GB VRAM 的 NVIDIA A10G。

軟體相依性

要透過 Transformers 函式庫執行模型,使用者必須安裝該函式庫本身以及支援的框架。由於 Transformers 函式庫是建立在其他框架之上,它需要安裝 PyTorch、TensorFlow 或 JAX 才能運作。

核心機器學習概念

本指南定義了與開源模型互動所需的多項基礎程式設計與機器學習概念。

類別與物件

在 Python 中,類別(Classes)充當「配方」以建立物件(Objects)。本指南使用類別建立兩個重要物件:model 物件與 tokenizer 物件。這使得屬性與函式得以聚合,簡化程式撰寫流程。

斷詞與解碼

模型無法直接處理原始文字;它們只能理解數值。斷詞器(tokenizer)是一種工具,將句子切分為更小的單位(tokens),並為每個單位分配數值輸入 ID,此過程稱為編碼(encoding)。為了讓模型的數值輸出可被人類閱讀,斷詞器必須執行相反的過程,即解碼(decoding)。

基礎模型 vs. 指令微調模型

不同模型對提示的回應方式存在關鍵差異:

  • 基礎模型:本質上是巨大的自動補全引擎。它們根據訓練資料預測最可能的下一個 token。Microsoft 的 Phi-2 為基礎模型,意味著它可能不會以對話式方式回應直接指令。
  • 指令微調模型:這些是經過進一步訓練的基礎模型,能理解並回應特定使用者指令或提示,使其更適合聊天式互動。

實作工作流程

要對 Phi-2 等模型執行推論,指南概述了以下技術工作流程:

  1. 環境設定:使用 JupyterLab Docker 模板與 NVIDIA A10G GPU 建立 Hugging Face Space。
  2. 安裝:使用 !pip install 安裝 torch(PyTorch)與 transformers 函式庫。
  3. 載入:使用 AutoModelForCausalLMAutoTokenizer 類別,透過特定的 model_id(例如 "microsoft/phi-2")從 Hub 載入模型與斷詞器。
  4. 處理:使用斷詞器將輸入文字編碼為 input_ids
  5. 生成:對模型物件使用 .generate 方法產生數值輸出。
  6. 輸出:使用斷詞器的 .decode 方法將數值輸出解碼回文字。

SUMMARY: Hugging Face 提供了完整的入門指南,說明如何使用 Transformers 函式庫與 Hub 部署與執行開源機器學習模型,例如 Microsoft 的 Phi-2。

TITLE: Hugging Face Transformers:開源機器學習新手指南

Sources