text-generation-inference 文件
LoRA (低秩自適應)
並獲得增強的文件體驗
開始使用
LoRA (低秩自適應)
什麼是 LoRA?
LoRA 是一種技術,它允許高效地微調模型,而只需更新模型權重的一小部分。當您有一個在大型資料集上預訓練的大型模型,但希望在較小的資料集上或針對特定任務進行微調時,這非常有用。
LoRA 的工作原理是向模型新增少量額外的權重,這些權重用於使模型適應新的資料集或任務。這些額外的權重在微調過程中學習,而模型的其餘權重保持固定。
如何使用?
LoRA 的使用方式多種多樣,社群總是在發現新的使用方法。以下是一些您可以使用 LoRA 的示例
技術上,LoRA 可用於在小資料集上微調大型語言模型。然而,這些用例可以涵蓋廣泛的應用,例如:
- 在小型資料集上微調語言模型
- 在領域特定資料集上微調語言模型
- 在標籤有限的資料集上微調語言模型
使用 LoRA 最佳化推理
LoRA 可以在推理過程中使用,方法是在每個指定層將介面卡權重與模型權重相乘。這個過程計算成本可能很高,但得益於 punica-ai 和 lorax 團隊的出色工作,已經開發出最佳化的核心和框架,使這個過程更加高效。TGI 利用這些最佳化,以便為多個 LoRA 模型提供快速高效的推理。
使用 TGI 服務多個 LoRA 介面卡
一旦 LoRA 模型被訓練好,它就可以像普通語言模型一樣用於生成文字或執行其他任務。然而,由於模型已經在特定資料集上進行了微調,它在該資料集上的表現可能比未經過微調的模型更好。
在實踐中,擁有多個 LoRA 模型通常很有用,每個模型都在不同的資料集上或為不同的任務進行微調。這使您能夠使用最適合特定任務或資料集的模型。
文字生成推理 (TGI) 現在支援在啟動時載入多個 LoRA 模型,這些模型可用於生成請求。此功能從 ~2.0.6
版本開始提供,並與使用 peft
庫訓練的 LoRA 模型相容。
指定 LoRA 模型
要在 TGI 中使用 LoRA,在啟動伺服器時,您可以使用 LORA_ADAPTERS
環境變數指定要載入的 LoRA 模型列表。例如:
LORA_ADAPTERS=predibase/customer_support,predibase/dbpedia
要指定模型版本,請使用 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
,以下是一個示例有效負載:
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 倉庫 中提交問題告知我們。此外,文件和改進的客戶端庫將很快釋出。
包含詳細示例的更新教程將很快釋出。敬請期待!
< > 在 GitHub 上更新