輕鬆在 Amazon SageMaker 上部署 Hugging Face 模型

Hugging Face 與 Amazon SageMaker 推出了全新的推論深度學習容器(DLC)以及專屬的推論工具套件,讓使用者能以最少的程式碼將已訓練的 Transformer 模型或 Hugging Face Model Hub 上超過 10,000 個模型部署至可投入生產的 AWS 端點。

使用推論 DLC 簡化模型部署

Amazon SageMaker 現已支援 Hugging Face 推論深度學習容器(DLC),這些容器提供完整測試、最佳化的深度學習環境,免除手動安裝或設定的需求。透過這些容器,可快速建立可於 AWS 環境中擴展的生產級端點,且內建監控與企業功能。

使用者可以透過 SageMaker Python SDK 中的 HuggingFaceModel 類別部署模型。部署流程被簡化,只需額外一行程式碼,即可將已訓練的模型部署以供推論。

SageMaker Hugging Face 推論工具套件

為進一步降低部署阻礙,Hugging Face 開發了 SageMaker Hugging Face 推論工具套件。此套件利用 transformers 套件中的 pipelines,實現「零程式碼」部署,使用者無需為前處理或後處理撰寫自訂程式碼。

API 與請求結構

推論工具套件使用類似 Hugging Face Accelerated Inference API 的介面。請求必須在 inputs 鍵中定義輸入,且可透過 parameters 鍵加入可選的 pipeline 參數。

範例請求結構包括:

  • 文字分類(Text Classification): 包含 inputs 字串的 JSON 主體。
  • 問答(Question Answering): 包含 questioncontext 鍵的 inputs 物件。
  • 零樣本分類(Zero-Shot Classification): 包含 inputs 字串以及包含 candidate_labelsparameters 物件。

客製化與「自備程式碼」

雖然零程式碼部署是主要功能,推論工具套件仍支援「自備程式碼」的方式。開發者可覆寫預設方法,以實作自訂的推論邏輯。

部署工作流程

部署 Transformer 模型至 Amazon SageMaker 有三種主要工作流程:

1. 訓練後直接部署

使用 Estimator 類別在 SageMaker 中訓練模型時,可在 .fit() 方法完成後立即部署模型。此方式確保 SageMaker 模型容器的中繼資料保有從訓練作業到部署模型的完整血統。

2. 從預訓練檢查點部署

對於已訓練且儲存於 Amazon S3 上的模型,可使用 HuggingFaceModel 類別,指定 model_data 參數(模型的 S3 路徑)、IAM 角色,以及所使用的 transformerspytorch 版本。

3. 從 Hugging Face Model Hub 部署

使用者可透過在 HuggingFaceModel 設定中定義兩個環境變數,直接將 Model Hub 上超過 10,000 個公開模型部署至 SageMaker:

  • HF_MODEL_ID:來自 huggingface.co/models 的特定模型 ID。
  • HF_TASK:與 Transformers pipeline 相關的 NLP 任務(例如 question-answering)。

技術規格與相容性

  • 支援模型: 系統支援在 SageMaker(或其他相容平台)訓練的任何 Transformer 模型、Hugging Face Model Hub 上的任何公開模型,以及在付費 Hugging Face 帳號中託管的私有模型。
  • 支援任務: 推論工具套件與 DLC 支援 transformers pipelines 所提供的任何任務。
  • 部署工具: 雖然 SageMaker Python SDK 為主要介面,Hugging Face DLC 亦可透過其他工具部署,包括 AWS CLI、boto3、Terraform 與 CloudFormation 範本。
  • 安全性: 部署透過 AWS 機制保護,包括靜止與傳輸中的加密、虛擬私有雲 (VPC) 連線,以及身分與存取管理 (IAM)。

Sources