text-generation-inference 文件

LoRA (低秩自適應)

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

LoRA (低秩自適應)

什麼是 LoRA?

LoRA 是一種技術,它允許高效地微調模型,而只需更新模型權重的一小部分。當您有一個在大型資料集上預訓練的大型模型,但希望在較小的資料集上或針對特定任務進行微調時,這非常有用。

LoRA 的工作原理是向模型新增少量額外的權重,這些權重用於使模型適應新的資料集或任務。這些額外的權重在微調過程中學習,而模型的其餘權重保持固定。

如何使用?

LoRA 的使用方式多種多樣,社群總是在發現新的使用方法。以下是一些您可以使用 LoRA 的示例

技術上,LoRA 可用於在小資料集上微調大型語言模型。然而,這些用例可以涵蓋廣泛的應用,例如:

  • 在小型資料集上微調語言模型
  • 在領域特定資料集上微調語言模型
  • 在標籤有限的資料集上微調語言模型

使用 LoRA 最佳化推理

LoRA 可以在推理過程中使用,方法是在每個指定層將介面卡權重與模型權重相乘。這個過程計算成本可能很高,但得益於 punica-ailorax 團隊的出色工作,已經開發出最佳化的核心和框架,使這個過程更加高效。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 上更新

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