TGI Multi-LoRA:一次部署,服務 30 個模型

Hugging Face 在文本生成推理(TGI)中引入了 Multi-LoRA 服務,使得可以部署單一基礎模型,動態提供多個專門微調的適配器。此方式消除了為每個特定任務模型維持獨立部署的需求,顯著降低 VRAM 開銷與營運成本。

專門模型的案例

對較小且專門的模型進行微調,往往在特定任務上比使用較大、通用的模型表現更佳。根據 Hugging Face 引用的研究,使用如 Mistral-7B-v0.1 作為基礎的特定任務 LoRA 在某些任務上可超越 GPT-4。

除了效能之外,專門模型還提供多項組織層面的優勢:

  • 適應性: 單一基礎模型(例如 Mistral 或 Llama)即可用於構建眾多針對不同下游任務的專門模型。
  • 獨立性: 各團隊可自行管理資料準備、評估與更新節奏,互不干擾。
  • 隱私性: 專門模型可更好地將訓練資料分離,並根據隱私需求設定存取限制。

技術基礎:低秩適配(LoRA)

LoRA(低秩適配)是一種參數高效的微調技術,能在不重新訓練全部參數的情況下調整大型預訓練模型。它會凍結原始權重,僅訓練兩個小矩陣(A 與 B)。

相較於完整模型,這些適配器通常僅增加約 1% 的儲存與記憶體開銷。例如,predibase/magicoder 適配器大小為 13.6MB,僅為 mistralai/Mistral-7B-v0.1 基礎模型(14.48GB)大小的千分之一以下。將 30 個此類適配器載入 RAM,VRAM 僅會增加約 3%。

Multi-LoRA 服務的運作方式

Multi-LoRA 服務允許單一 TGI 部署根據傳入請求動態選擇相應的 LoRA 適配器。每個使用者請求都包含輸入文字與特定的 adapter_id。TGI 會利用此 ID 為該請求挑選正確的適配器,從而以單一基礎模型處理異質的請求批次。

部署需求

要實作 Multi-LoRA 服務,使用者必須符合以下條件:

  • TGI 版本: v2.1.1 或更新版本。
  • 基礎模型: 相容的基礎模型(例如 mistralai/Mistral-7B-v0.1)。
  • 設定: 必須將 LORA_ADAPTERS 環境變數設為以逗號分隔的適配器 ID 列表(例如 LORA_ADAPTERS=predibase/customer_support,predibase/magicoder)。

透過 API 使用

在呼叫端點時,必須在請求參數中指定 adapter_id

Example cURL request:

curl 127.0.0.1:3000/generate \
    -X POST \
    -H 'Content-Type: application/json' \
    -d '{
  "inputs": "Hello who are you?",
  "parameters": {
    "max_new_tokens": 40,
    "adapter_id": "predibase/customer_support"
  }
}'

營運與成本影響

成本效益

Multi-LoRA 服務在每個 token 的成本上保持恆定,無論服務多少適配器,因為它避免了多個完整模型部署的需求。相較之下,為每個微調模型單獨部署會使成本隨模型數量線性增加。

擴展與使用模式

將多個模型整合於單一部署可穩定 GPU 使用率。雖然單一專門模型的使用模式可能波動或突發,但多個適配器的總需求往往較為平滑,從而使擴展更易管理,GPU 效率也更高。

更新基礎模型

由於 LoRA 訓練成本相對低廉——Predibase 報告每個適配器的成本低至約 $8.00——組織可以在新版、更高效的基礎模型(如 Mistral v0.3 或 Llama 3)發布時更新其基礎模型。此過程需要維護版本控制的資料集與訓練設定,以便快速在新基礎模型上重新訓練適配器。

致謝

TGI 的 Multi-LoRA 實作利用了 Punica、LoRAX 與 S-LoRA 團隊開發的最佳化核心與框架,以確保高效推論。

Sources