使用 Hugging Face 推理終端部署 Embedding 模型

釋出於 2023 年 10 月 24 日
在 GitHub 上更新

像 ChatGPT 這樣的生成式 AI 和大語言模型(LLM)的興起,增加了人們對 Embedding 模型的興趣和其在各種任務中的重要性,尤其是在檢索增強生成 (RAG) 方面的應用,例如搜尋或與你的資料聊天。Embedding 非常有用,因為它們將句子、影像、單詞等表示為數值向量,這使我們能夠對映語義相關的專案並檢索有用的資訊。這有助於我們為 Prompt 提供相關上下文,從而提高生成內容的質量和特異性。

與 LLM 相比,Embedding 模型的尺寸更小,推理速度更快。這一點非常重要,因為在你更改模型或透過微調改進模型後,需要重新建立 Embedding。此外,為了提供良好的使用者體驗,整個檢索增強過程應儘可能快。

在這篇博文中,我們將向你展示如何使用 文字 Embedding 推理 將開源 Embedding 模型部署到 Hugging Face 推理終端。我們的託管 SaaS 解決方案使模型部署變得簡單。此外,我們還將教你如何執行大規模的批次請求。

  1. 什麼是 Hugging Face 推理終端
  2. 什麼是文字 Embedding 推理
  3. 將 Embedding 模型部署為推理終端
  4. 向終端傳送請求並建立 Embedding

在開始之前,讓我們先回顧一下關於推理終端的知識。

1. 什麼是 Hugging Face 推理終端?

Hugging Face 推理終端 提供了一種簡單、安全的方式來部署用於生產環境的機器學習模型。推理終端讓開發人員和資料科學家能夠建立生成式 AI 應用而無需管理基礎設施:只需點選幾下即可簡化部署過程,包括透過自動伸縮處理大量請求,透過縮容至零降低基礎設施成本,並提供高級別的安全性。

以下是一些最重要的功能:

  1. 輕鬆部署:只需點選幾下,即可將模型部署為生產就緒的 API,無需處理基礎設施或 MLOps。
  2. 成本效益:受益於自動縮容至零的功能,在終端不使用時縮減基礎設施以降低成本,同時根據終端的執行時間付費,確保成本效益。
  3. 企業級安全:將模型部署在安全的離線終端中,只能透過直接的 VPC 連線訪問,擁有 SOC2 Type 2 認證支援,並提供 BAA 和 GDPR 資料處理協議,以增強資料安全性和合規性。
  4. LLM 最佳化:針對 LLM 進行最佳化,透過分頁注意力(Paged Attention)實現高吞吐量,並藉助文字生成推理(Text Generation Inference)支援的自定義 transformers 程式碼和 Flash Attention 實現低延遲。
  5. 全面的任務支援:開箱即支援 🤗 Transformers、Sentence-Transformers 和 Diffusers 的任務和模型,並易於定製以支援高階任務,如說話人分離或任何機器學習任務和庫。

你可以透過以下連結開始使用推理終端:https://ui.endpoints.huggingface.co/

2. 什麼是文字 Embedding 推理?

文字 Embedding 推理(TEI) 是一個專門為部署和服務開源文字 Embedding 模型而構建的解決方案。TEI 旨在實現高效能的特徵提取,支援最流行的模型。TEI 支援 海量文字 Embedding 基準 (MTEB) 排行榜 前 10 名的所有模型,包括 FlagEmbedding、Ember、GTE 和 E5。TEI 目前實現了以下效能最佳化特性:

  • 無模型圖編譯步驟
  • 小巧的 Docker 映象和快速的啟動時間。為真正的無伺服器做好準備!
  • 基於 token 的動態批處理
  • 使用 Flash AttentionCandlecuBLASLt 最佳化 transformers 推理程式碼。
  • 使用 Safetensors 載入權重。
  • 生產就緒(透過 Open Telemetry 進行分散式追蹤,Prometheus 指標)

這些特性使其在吞吐量和成本方面達到了行業領先的效能。在一項針對 BAAI/bge-base-en-v1.5 的基準測試中,我們在一個 Nvidia A10G 推理終端上,以 512 個 token 的序列長度和 32 的批處理大小,實現了超過 450 次請求/秒的吞吐量,成本為 0.00156 美元/百萬 token 或 0.00000156 美元/千 token。這比 OpenAI Embeddings (0.0001 美元/千 token) 便宜 64 倍。

Performance

3. 將 Embedding 模型部署為推理終端

要開始使用,你需要使用一個已繫結支付方式的使用者或組織帳戶登入(你可以在這裡新增),然後訪問推理終端:https://ui.endpoints.huggingface.co

然後,點選“新建終端”。選擇模型倉庫、雲服務商和區域,調整例項和安全設定,然後部署。在我們的例子中,模型是 BAAI/bge-base-en-v1.5

create-model

推理終端會根據模型大小建議一個例項型別,該型別應足以執行模型。這裡建議的是 Intel Ice Lake 2 vCPU。為了獲得我們基準測試中的效能,請將例項更改為 1x Nvidia A10G

注意:如果無法選擇例項型別,你需要聯絡我們並申請例項配額。

Select Instance

然後,你可以點選“建立終端”來部署你的模型。1-3 分鐘後,終端應該會線上並可以處理請求。

4. 向終端傳送請求並建立 Embedding

終端概覽頁面提供了推理小部件的訪問許可權,可用於手動傳送請求。這使你可以用不同的輸入快速測試你的終端,並與團隊成員分享。

Test Model

注意:TEI 目前不會自動截斷輸入。你可以在請求中設定 truncate: true 來啟用此功能。

除了小部件,概覽頁面還提供了 cURL、Python 和 Javascript 的程式碼片段,你可以用它們向模型傳送請求。程式碼片段展示瞭如何傳送單個請求,但 TEI 也支援批次請求,這使你可以同時傳送多個文件以提高終端的利用率。下面是一個示例,展示瞭如何傳送一個將截斷設定為 true 的批次請求。

import requests

API_URL = "https://l2skjfwp9punv393.us-east-1.aws.endpoints.huggingface.cloud"
headers = {
    "Authorization": "Bearer YOUR TOKEN",
    "Content-Type": "application/json"
}

def query(payload):
    response = requests.post(API_URL, headers=headers, json=payload)
    return response.json()
    
output = query({
"inputs": ["sentence 1", "sentence 2", "sentence 3"],
"truncate": True
})

# output [[0.334, ...], [-0.234, ...]]

結論

Hugging Face 推理終端上的 TEI 能夠以極快的速度和極低的成本高效部署最先進的 Embedding 模型。憑藉行業領先的每秒 450 多個請求的吞吐量和低至 0.00000156 美元/千 token 的成本,推理終端相比 OpenAI Embeddings 節省了 64 倍的成本。

對於利用文字 Embedding 實現語義搜尋、聊天機器人、推薦等功能的開發人員和公司來說,Hugging Face 推理終端消除了基礎設施開銷,以最低的成本提供高吞吐量,從而簡化了從研究到生產的整個流程。


感謝閱讀!如果你有任何問題,請隨時在 TwitterLinkedIn 上與我聯絡。

社群

註冊登入 發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.