使用 Hugging Face Inference Endpoints 部署 LLMs
Hugging Face Inference Endpoints 提供一種受管理的 SaaS 解決方案,用於將開源大型語言模型(LLM)部署為生產就緒的 API。此服務消除了對手動基礎設施管理和 MLOps 的需求,使開發者能夠高效地部署如 Falcon、(Open-)LLaMA、X-Gen、StarCoder 和 RedPajama 等模型。
Inference Endpoints 的核心功能
Inference Endpoints 透過以下幾項關鍵技術特性,簡化從模型選擇到生產部署的過程:
- 簡化部署: 模型可以透過幾次點擊部署為 API,移除管理底層基礎設施的複雜性。
- 成本最佳化: 該服務包含自動「scale-to-zero」功能,當端點未使用時透過縮減基礎設施來降低成本。使用者根據端點的運行時間付費。
- 企業級安全: 端點可以部署為僅能透過直接 VPC 連線存取的安全離線實例。該服務已取得 SOC2 Type 2 認證,並提供 BAA 與 GDPR 資料處理協議。
- LLM 特定優化: 為確保高吞吐量和低延遲,該服務使用 Text Generation Inference (TGI),該技術融合了 Paged Attention 與 Flash Attention,並搭配自訂的 transformers 程式碼。
- 廣泛任務支援: 平台內建支援 🤗 Transformers、Sentence-Transformers 與 Diffusers,同時允許為如說話者分離等進階任務進行客製化。
部署與測試 LLMs
部署模型(例如 tiiuae/falcon-40b-instruct)時,需要選擇模型儲存庫、雲端供應商與區域。雖然系統會根據模型大小建議實例類型(例如 4x NVIDIA T4 GPU),但使用者也可以手動選擇較高效能的硬體,例如單顆 NVIDIA A100 GPU,以獲得最佳效能。
部署後,可以使用內建的 Inference Widget 進行手動請求測試,或透過 cURL 指令進行測試。為控制文字生成的行為,API 在 payload 中支援廣泛的參數,包括:
- Temperature: 控制隨機性(預設 1.0)。
- max_new_tokens: 設定要生成的最大 token 數(預設 20,上限 512)。
- repetition_penalty: 控制 token 重複的可能性。
- top_k 和 top_p: 管理詞彙過濾與 nucleus 抽樣。
- do_sample: 在取樣與貪婪解碼之間切換(預設 false)。
- stop: 一組觸發生成結束的 token 列表。
實作回應串流
為了透過降低感知延遲來提升使用者體驗,Inference Endpoints 支援在生成時串流傳送 token。這可以透過不同語言的特定函式庫來實現:
Python 實作
使用 huggingface_hub 函式庫與 InferenceClient,開發者可以在 text_generation 方法中設定 stream=True。這使得應用程式可以遍歷生成的 token,並即時將其產出給使用者,同時過濾掉特殊 token 或在定義的停止序列處停止。
JavaScript 實作
使用 @huggingface/inference 函式庫與 HfInferenceEndpoint 類別,開發者可以使用 textGenerationStream 方法。此方法採用非同步迭代器 (for await...of) 來處理並顯示從端點接收到的 token。