Text Generation Inference 文件
LoRA (低秩自適應,Low-Rank Adaptation)
並獲得增強的文件體驗
開始使用
LoRA (低秩適應)
什麼是 LoRA?
LoRA 是一種能夠高效微調模型,同時僅更新模型權重中一小部分的技術。這對於擁有一個已在大型數據集上預訓練過的大型模型,但您希望在較小的數據集上或針對特定任務對其進行微調時非常有用。
LoRA 的運作方式是為模型添加少量的額外權重,這些權重用於使模型適應新的數據集或任務。這些額外權重是在微調過程中學習的,而模型其餘的權重則保持不變。
如何使用它?
LoRA 的使用方式多種多樣,社群也不斷在發掘新的應用方法。以下是一些使用 LoRA 的範例:
從技術上講,LoRA 可以用於在小型數據集上微調大型語言模型。然而,這些用例可以涵蓋廣泛的應用場景,例如:
- 在小型數據集上微調語言模型
- 在特定領域的數據集上微調語言模型
- 在標註數據有限的情況下微調語言模型
使用 LoRA 優化推論
LoRA 可以在推論階段使用,方法是在每個指定的層級將適配器 (adapter) 權重與模型權重相乘。此過程在計算上可能非常昂貴,但多虧了 punica-ai 和 lorax 團隊的出色工作,目前已經開發出優化的核心與框架來提升此過程的效率。TGI 利用了這些優化,以便在多個 LoRA 模型的情況下提供快速且高效的推論。
使用 TGI 服務多個 LoRA 適配器
一旦 LoRA 模型訓練完成,它就可以像普通語言模型一樣用於生成文字或執行其他任務。然而,由於模型是在特定數據集上進行微調的,它在該數據集上的表現可能會優於未經過微調的模型。
在實務中,擁有多個 LoRA 模型通常非常有用,每個模型都在不同的數據集上微調或針對不同的任務進行訓練。這使您可以根據特定任務或數據集選擇最適合的模型。
Text Generation Inference (TGI) 現已支援在啟動時載入多個 LoRA 模型,並可用於生成請求。此功能從 ~2.0.6 版本開始提供,並且與使用 peft 函式庫訓練的 LoRA 模型相容。
指定 LoRA 模型
要在 TGI 中使用 LoRA,當啟動伺服器時,您可以使用 LORA_ADAPTERS 環境變數指定要載入的 LoRA 模型清單。例如:
LORA_ADAPTERS=predibase/customer_support,predibase/dbpedia
若要指定模型修訂版本 (revision),請使用 adapter_id@revision,如下所示:
LORA_ADAPTERS=predibase/customer_support@main,predibase/dbpedia@rev2
若要使用儲存在本地的 LoRA 適配器,請使用 adapter-name=/path/to/adapter,如下所示。當您想要使用此適配器時,請設定 "parameters": {"adapter_id": "adapter-name"}
LORA_ADAPTERS=myadapter=/some/path/to/adapter,myadapter2=/another/path/to/adapter
注意:可以混合使用 adapter_ids 與 adapter_id=adapter_path,例如:
LORA_ADAPTERS=predibase/dbpedia,myadapter=/path/to/dir/
在伺服器日誌中,您將會看到以下訊息:
Loading adapter weights into model: predibase/customer_support Loading adapter weights into model: predibase/dbpedia
生成文字
然後,您可以在生成請求中透過指定 lora_model 參數來使用這些模型。例如:
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"
}
}'如果您正在使用儲存在本地的 LoRA 適配器,且設定方式如下:LORA_ADAPTERS=myadapter=/some/path/to/adapter,以下是一個請求負載 (payload) 範例:
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": "myadapter"
}
}'注意:LoRA 功能是新的且仍在持續改進中。如果您遇到任何問題或有任何意見回饋,請透過在 GitHub 儲存庫開啟 issue 來告知我們。此外,後續將會發布更多文件及更完善的客戶端函式庫。
更新後的教學與詳細範例即將發布。敬請期待!
在 GitHub 上更新