您的位置:首頁 > 軟件教程 > 教程 > TGI 多-LoRA: 部署一次,搞定 30 個模型的推理服務(wù)

TGI 多-LoRA: 部署一次,搞定 30 個模型的推理服務(wù)

來源:好特整理 | 時間:2024-08-13 10:15:55 | 閱讀:178 |  標(biāo)簽: a T TG LOR 搞定 服務(wù)   | 分享到:

你是否已厭倦管理多個 AI 模型所帶來的復(fù)雜性和高成本? 那么, 如果你可以部署一次就搞定 30 個模型推理服務(wù)會如何? 在當(dāng)今的 ML 世界中,哪些希望充分發(fā)揮其數(shù)據(jù)的價值的組織可能最終會進(jìn)入一個“微調(diào)的世界”。在這個世界,各個組織會構(gòu)建大量模型,其中每個模型都針對特定任務(wù)進(jìn)行了高度特化。但是,如

你是否已厭倦管理多個 AI 模型所帶來的復(fù)雜性和高成本? 那么, 如果你可以部署一次就搞定 30 個模型推理服務(wù)會如何? 在當(dāng)今的 ML 世界中,哪些希望充分發(fā)揮其數(shù)據(jù)的價值的組織可能最終會進(jìn)入一個“微調(diào)的世界”。在這個世界,各個組織會構(gòu)建大量模型,其中每個模型都針對特定任務(wù)進(jìn)行了高度特化。但是,如何處理為每個細(xì)分應(yīng)用部署模型所帶來的麻煩和成本呢?多-LoRA 服務(wù)提供了一個有潛力的答案。

動機(jī)

對組織而言,基于微調(diào)構(gòu)建多個模型是有意義的,原因有多重:

  • 性能 - 有 足夠證據(jù) 表明: 在目標(biāo)任務(wù)上,較小的專用模型表現(xiàn)優(yōu)于較大的通用模型。Predibase 的結(jié)果 [5] 表明,針對特定任務(wù)對 mistralai/Mistral-7B-v0.1 基礎(chǔ)模型進(jìn)行 LoRA 微調(diào)可以獲得比 GPT-4 更好的性能。
  • 適應(yīng)性 - Mistral 或 Llama 等模型的用途極其廣泛,你可以選擇其中之一作為基礎(chǔ)模型,然后針對 各種下游任務(wù) 微調(diào)出各種專用模型。還有一個好處是,你不會被某個模型鎖定,因為你可以輕松換掉該基礎(chǔ)模型,然后用你的數(shù)據(jù)對另一個基礎(chǔ)模型進(jìn)行微調(diào) (稍后會詳細(xì)介紹)。
  • 獨立性 - 對不同任務(wù),不同的團(tuán)隊可以獨立進(jìn)行不同的微調(diào),從而在數(shù)據(jù)準(zhǔn)備、配置、評估標(biāo)準(zhǔn)和模型更新節(jié)奏方面保持獨立和并行。
  • 隱私 - 專用模型提供了很大的靈活性,使得我們可以根據(jù)隱私要求對訓(xùn)練數(shù)據(jù)進(jìn)行隔離,不需要將所有數(shù)據(jù)都暴露成基礎(chǔ)模型的訓(xùn)練數(shù)據(jù)。此外,由于模型的本地運行愈顯重要,微調(diào)使得在本地設(shè)備上運行的小模型有能力執(zhí)行特定任務(wù)。

總之,微調(diào)使組織能夠釋放其數(shù)據(jù)的價值,當(dāng)它們使用其獨有的、高度專業(yè)化的數(shù)據(jù)時,這種優(yōu)勢變得尤為重要,甚至足以改變游戲規(guī)則。

看上去前景光明,有啥問題嗎?有的!部署大語言模型 (LLM) 服務(wù)提出了多方面的挑戰(zhàn)。部署單個模型的成本和操作復(fù)雜性已經(jīng)夠讓人頭疼了,更不用說 n 個模型了。這意味著,雖然微調(diào)有萬般好,但是它讓 LLM 的部署和服務(wù)變得更復(fù)雜了也是鐵的事實。

如何解決“既要又要”的問題,及時雨就應(yīng)時而現(xiàn)了。TGI 最近推出了新功能 - 多-LoRA 服務(wù) (???)。

LoRA 背景知識

LoRA 即 低階適配 ,是一種對預(yù)訓(xùn)練大模型進(jìn)行高效微調(diào)的技術(shù)。其核心思想是無需重新訓(xùn)練整個模型,僅需訓(xùn)練一小部分稱為適配器的參數(shù),就可使預(yù)訓(xùn)練大模型適應(yīng)特定任務(wù)。這些適配器的大小與預(yù)訓(xùn)練 LLM 相比,通常僅增加約 1% 的存儲和內(nèi)存開銷,就能達(dá)到與全模型微調(diào)的模型相當(dāng)?shù)男Ч?

LoRA 的明顯好處是,它通過減少內(nèi)存需求來降低微調(diào)成本。它還可以 緩解災(zāi)難性遺忘 ,且在 小數(shù)據(jù)集 上效果更好。

TGI 多-LoRA: 部署一次,搞定 30 個模型的推理服務(wù)
圖 1:LoRA 詳解

在訓(xùn)練過程中,LoRA 會凍結(jié)原模型權(quán)重 W ,并對兩個小矩陣 A B 進(jìn)行微調(diào),這使得微調(diào)更加高效。知道這一點后,你就能比較容易理解圖 1 中 LoRA 模型推理的工作原理了。我們從預(yù)訓(xùn)練模型 Wx 中獲取輸出,并將其與低階適配項 BAx 相加 [6] 。

多-LoRA 推理服務(wù)

了解了 LoRA 的低階適配的基本思想后,我們可以深入研究一下多-LoRA 服務(wù)了。這個概念很簡單: 給定一個基礎(chǔ)預(yù)訓(xùn)練模型和一些任務(wù),你可以針對這些任務(wù)微調(diào)特定的 LoRA,多-LoRA 服務(wù)是一種根據(jù)傳入請求動態(tài)選擇所需 LoRA 的機(jī)制。

TGI 多-LoRA: 部署一次,搞定 30 個模型的推理服務(wù)
圖 2:多-LORA 詳解

圖 2 展示了這種動態(tài)路由的工作原理。每個用戶請求都包含輸入 x 以及該請求對應(yīng) LoRA 的 id (我們稱為同批異構(gòu)用戶請求)。LoRA id 信息使得 TGI 得以憑此選擇正確的 LoRA 適配器。

多-LoRA 服務(wù)讓我們僅需部署一個基礎(chǔ)模型。而且由于 LoRA 適配器很小,所以你可以加載多個適配器,而不用擔(dān)心內(nèi)存問題。請注意,具體能加載多少個適配器取決于你的可用 GPU 資源以及你部署的模型。最終效果實際上相當(dāng)于在一次部署中支持了多個經(jīng)過微調(diào)的模型。

LoRA 權(quán)重的大小依秩和量化方法的不同而不同,但它們通常都非常小。這邊給大家一個直觀印象: predibase/magicoder 為 13.6MB,不到 mistralai/Mistral-7B-v0.1 尺寸 (14.48GB) 的 1/1000。相對而言,將 30 個適配器加載到 RAM 中只會讓 VRAM 增加 3%,這對于大多數(shù)部署來說都不成問題。因此,我們可以一次部署多個模型。

如何使用

收集 LoRA 權(quán)重

首先,你需要訓(xùn)練 LoRA 模型并導(dǎo)出適配器權(quán)重。你可以在此處找到 LoRA 微調(diào)相關(guān)的 指南 。請注意,當(dāng)你將微調(diào)后的模型推送到 Hub 時,只需推送適配器,無需推送完整的合并模型。從 Hub 加載 LoRA 適配器時,會從適配器模型卡推斷出基礎(chǔ)模型并將其單獨加載。如需更深入的支持,可以試試我們的 專家支持計劃 。當(dāng)你為特定用例創(chuàng)建自己的 LoRA 時,真正的價值才會顯現(xiàn)。

低代碼團(tuán)隊

對某些組織而言,為自己的用例訓(xùn)練一個 LoRA 可能比較困難,因為它們可能缺乏相應(yīng)的專業(yè)知識或其他資源。即使選好了基礎(chǔ)模型并準(zhǔn)備好了數(shù)據(jù),后面還需要跟上最新技術(shù),探索超參空間,找到最佳硬件資源,編寫代碼,然后進(jìn)行評估。這項任務(wù),即使對于經(jīng)驗豐富的團(tuán)隊來說,也不可謂不艱巨。

AutoTrain 可幫助顯著降低這一門檻。AutoTrain 是一種無代碼解決方案,只需單擊幾下鼠標(biāo)即可訓(xùn)練機(jī)器學(xué)習(xí)模型。我們提供了多種使用 AutoTrain 的方法。除了 本地安裝 外,我們還支持:

AutoTrain 環(huán)境 硬件配置 編碼量 備注
Hugging Face Space 多種 GPU 及其它硬件 無代碼 靈活易用
DGX 云 最高 8xH100 GPU 無代碼 更適宜大模型
Google Colab 單張 T4 GPU 低代碼 適宜小模型以及量化后的模型

部署

本文以 Predibase 的 LoRA Land 為例,主要使用如下兩個 LoRA 適配器:

  • predibase/customer_support ,其是在 Gridspace-Stanford Harper Valley 語音數(shù)據(jù)集 上微調(diào)而得,增強(qiáng)了準(zhǔn)確理解和響應(yīng)交互性客服工單的能力,改善了模型在語音識別、情緒檢測和對話管理等任務(wù)中的表現(xiàn),有助于促成更高效、更富同理心的客戶支持。
  • predibase/magicoder ,其是在 ise-uiuc/Magicoder-OSS-Instruct-75K 上微調(diào)而得,這是一個合成的代碼指令數(shù)據(jù)集。

TGI

TGI 文檔 中已有很多關(guān)于如何部署 TGI 的有用信息。這里,我們僅提醒一些要點:

  1. 使用 v2.1.1 或更新版本的 TGI
  2. 部署基礎(chǔ)模型: mistralai/Mistral-7B-v0.1
  3. 在部署期間,添加 LORA_ADAPTERS 環(huán)境變量
  • 示例: LORA_ADAPTERS=predibase/customer_support,predibase/magicoder
model=mistralai/Mistral-7B-v0.1
# share a volume with the Docker container to avoid downloading weights every run
volume=$PWD/data

docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data \
    ghcr.io/huggingface/text-generation-inference:2.1.1 \
    --model-id $model \
    --lora-adapters=predibase/customer_support,predibase/magicoder

推理終端 GUI

推理終端 支持多種 GPU 或其他 AI 加速卡 ,只需點擊幾下即可跨 AWS、GCP 以及 Azure 部署!使用 GUI 部署相當(dāng)容易。其后端默認(rèn)使用 TGI 進(jìn)行文本生成 (你也可以 選擇 使用自己的 docker 鏡像)。

要在推理終端上使用多-LoRA 服務(wù),你只需跳轉(zhuǎn)至 控制臺 ,然后:

  1. 選擇基礎(chǔ)模型: mistralai/Mistral-7B-v0.1
  2. 選擇 | 地區(qū) | 硬件
  • 例如: AWS | us-east-1 | Nvidia L4
  1. 選擇高級配置
  • 你應(yīng)該看到已經(jīng)選擇了 文本生成
  • 可根據(jù)自己的需求進(jìn)行配置
  1. 在環(huán)境變量中添加 LORA_ADAPTERS=predibase/customer_support,predibase/magicoder
  2. 最后 創(chuàng)建端點

請注意,以上只是最少配置,你可以根據(jù)需要對其他設(shè)置進(jìn)行配置。

TGI 多-LoRA: 部署一次,搞定 30 個模型的推理服務(wù)
圖 3:多-LoRA 推理終端
TGI 多-LoRA: 部署一次,搞定 30 個模型的推理服務(wù)
圖 4:多-LoRA 推理終端 2

推理終端代碼

有些人可能有點 怕老鼠 ,因此不想使用鼠標(biāo),我們對此不做評判 [?]。此時,僅用鍵盤也可通過代碼自動執(zhí)行上述操作,非常簡單。

from huggingface_hub import create_inference_endpoint

# Custom Docker image details
custom_image = {
    "health_route": "/health",
    "url": "ghcr.io/huggingface/text-generation-inference:2.1.1", # This is the min version
    "env": {
        "LORA_ADAPTERS": "predibase/customer_support,predibase/magicoder", # Add adapters here
        "MAX_BATCH_PREFILL_TOKENS": "2048", # Set according to your needs
        "MAX_INPUT_LENGTH": "1024", # Set according to your needs
        "MAX_TOTAL_TOKENS": "1512", # Set according to your needs
        "MODEL_ID": "/repository"
    }
}

# Creating the inference endpoint
endpoint = create_inference_endpoint(
    name="mistral-7b-multi-lora",
    repository="mistralai/Mistral-7B-v0.1",
    framework="pytorch",
    accelerator="gpu",
    instance_size="x1",
    instance_type="nvidia-l4",
    region="us-east-1",
    vendor="aws",
    min_replica=1,
    max_replica=1,
    task="text-generation",
    custom_image=custom_image,
)
endpoint.wait()

print("Your model is ready to use!")

部署此配置大約需要 3 分 40 秒。請注意,其他模型可能需要更長的時間。如果你遇到加載時長的問題,請在 GitHub 上提交 問題 !

使用

當(dāng)使用推理終端時,你需要指定 adapter_id 。下面給出了一個 cURL 示例:

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"
  }
}'

這里還有一個使用 InferenceClient 的示例,該示例來自 Hugging Face Hub Python 庫 。請確保你用的是 huggingface-hub>=0.24.0 ,在必要情況下,你還需 登錄 hub。

from huggingface_hub import InferenceClient

tgi_deployment = "127.0.0.1:3000"
client = InferenceClient(tgi_deployment)
response = client.text_generation(
    prompt="Hello who are you?",
    max_new_tokens=40,
    adapter_id='predibase/customer_support',
)

實際考量

成本

正如 下文 所討論的,我們并不是第一個吃螃蟹的。請務(wù)必閱讀一下 LoRAX 背后的團(tuán)隊 Predibase 發(fā)表的這篇出色 博文 ,因為本節(jié)內(nèi)容主要基于他們的工作。

TGI 多-LoRA: 部署一次,搞定 30 個模型的推理服務(wù)
圖 5:多-LoRA 成本 我們用 TGI 在英偉達(dá) L4 上部署了 mistralai/Mistral-7B-v0.1 基礎(chǔ)模型,其 推理終端 成本 為 0.8 美元/小時。每秒可完成 75 個請求,平均每個請求有 450 個輸入詞元、234 個輸出詞元,并與相應(yīng)配置的 GPT3.5 Turbo 成本進(jìn)行了對比。

多-LoRA 服務(wù)的一大好處是, 無需為多個模型進(jìn)行多次部署 ,因此要便宜得多。這與直覺相符,因為多模型部署要加載所有權(quán)重,而不僅僅是小小的適配器。如圖 5 所示,當(dāng)使用 TGI 多-LoRA 時,即使添加更多模型,每個詞元的成本也是相同的。但如果不使用多-LoRA,每多部署一個微調(diào)模型,TGI 的成本就會隨之線性增加。

使用模式

TGI 多-LoRA: 部署一次,搞定 30 個模型的推理服務(wù)
圖 6:多-LoRA 服務(wù)模式

當(dāng)部署多個模型時,一個現(xiàn)實的挑戰(zhàn)是每個模型的使用模式有很大差異: 某些模型的使用率可能較低; 有些模型的使用模式可能是陣發(fā)的,有些可能是高頻的。這使得擴(kuò)展變得非常困難,尤其是當(dāng)每個模型相互獨立部署的時候。當(dāng)你必須加一個 GPU 時,會出現(xiàn)很多“舍入”誤差,而且這種誤差會快速累積,最終導(dǎo)致巨大的浪費。在理想情況下,你需要最大限度地提高每個 GPU 的利用率,盡量不使用任何額外資源。你需要確保有足夠的 GPU,同時深知有些 GPU 會閑置,太難了!

當(dāng)使用多-LoRA 方案時,情況就平穩(wěn)多了。如圖 6,我們可以看到多-LoRA 服務(wù)模式非常平穩(wěn),盡管其中某些 LoRA 自身的使用模式并不穩(wěn)定。通過整合多個 LoRA,整體使用模式會更平穩(wěn),且擴(kuò)展會更容易。請注意,以上僅提供了一個例子,你自己的工作負(fù)載的使用模式如何以及多-LoRA 如何能幫上忙,需要你自己認(rèn)真分析。我們的目標(biāo)是,僅需考慮 1 個模型的擴(kuò)展,而無需考慮 30 個模型的擴(kuò)展!

換一個基礎(chǔ)模型

AI 發(fā)展日新月異,現(xiàn)實世界應(yīng)當(dāng)如何應(yīng)對?如果你想選擇另一個或更新的模型作為基礎(chǔ)模型,應(yīng)該怎么辦?雖然我們的例子使用了 mistralai/Mistral-7B-v0.1 作為基礎(chǔ)模型,但其實還可以選擇別的,如 Mistral v0.3 支持 函數(shù)調(diào)用 ; 更別提還有其他系列的模型了,如 Llama 3。總的來說,我們樂見更高效、性能更好的新基礎(chǔ)模型不斷出現(xiàn)。

但不用擔(dān)心!只要你有 足夠的理由 更換基礎(chǔ)模型,重新訓(xùn)練 LoRA 相對比較容易,訓(xùn)練也相對比較便宜,事實上, Predibase 發(fā)現(xiàn) 訓(xùn)練一個 LoRA 僅需約 8.00 美元。使用現(xiàn)代框架和常用工程實踐,需要的代碼改動也很少;咀龇ㄈ缦:

  • 保留模型訓(xùn)練的 notebook / 代碼
  • 對數(shù)據(jù)集進(jìn)行版本控制
  • 記錄下所使用的每個配置
  • 用新模型、新配置更新服務(wù)

總結(jié)

多-LoRA 服務(wù)是 AI 模型部署的革命性方案,為解決和管理多個專用模型部署的成本和復(fù)雜性問題提供了解決方案。通過利用單一基礎(chǔ)模型并動態(tài)應(yīng)用微調(diào)適配器,可以顯著降低組織的運營開銷,同時保持甚至增強(qiáng)各任務(wù)的性能。 我們呼吁 AI 總監(jiān)們大膽采納該“基礎(chǔ)模型 + 多-LoRA” 應(yīng)用范式 ,從而擁抱由其帶來的簡單性和成本節(jié)約紅利。讓多-LoRA 成為你 AI 戰(zhàn)略的基石,確保你的組織在快速發(fā)展的技術(shù)領(lǐng)域始終保持領(lǐng)先地位。

致謝

實現(xiàn)多-LoRA 服務(wù)可能非常棘手,但是由于 punica-ai 和 lorax 團(tuán)隊開發(fā)了優(yōu)化的算子和框架,該過程已經(jīng)很高效了。TGI 利用這些優(yōu)化來為多個 LoRA 模型提供快速高效的推理。

特別感謝 Punica、LoRAX 和 S-LoRA 團(tuán)隊在多-LoRA 服務(wù)方面所做的出色及開放的工作。

參考文獻(xiàn)

  • [1] : Dan Biderman, Jose Gonzalez Ortiz, Jacob Portes, Mansheej Paul, Philip Greengard, Connor Jennings, Daniel King, Sam Havens, Vitaliy Chiley, Jonathan Frankle, Cody Blakeney, John P. Cunningham, LoRA Learns Less and Forgets Less , 2024
  • [2] : Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen, LoRA: Low-Rank Adaptation of Large Language Models , 2021
  • [3] : Sourab Mangrulkar, Sayak Paul, PEFT: Parameter-Efficient Fine-Tuning of Billion-Scale Models on Low-Resource Hardware , 2023
  • [4] : Travis Addair, Geoffrey Angus, Magdy Saleh, Wael Abid, LoRAX: The Open Source Framework for Serving 100s of Fine-Tuned LLMs in Production , 2023
  • [5] : Timothy Wang, Justin Zhao, Will Van Eaton, LoRA Land: Fine-Tuned Open-Source LLMs that Outperform GPT-4 , 2024
  • [6] : Punica: Serving multiple LoRA finetuned LLM as one: https://github.com/punica-ai/punica

英文原文: https://hf.co/blog/multi-lora-serving

原文作者: Derek Thomas,Diego Maniloff,David Holtz

譯者: Matrix Yao (姚偉峰),英特爾深度學(xué)習(xí)工程師,工作方向為 transformer-family 模型在各模態(tài)數(shù)據(jù)上的應(yīng)用及大規(guī)模模型的訓(xùn)練推理。

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點或證實其描述。

a 1.0
a 1.0
類型:休閑益智  運營狀態(tài):正式運營  語言:中文   

游戲攻略

游戲禮包

游戲視頻

游戲下載

游戲活動

《alittletotheleft》官網(wǎng)正版是一款備受歡迎的休閑益智整理游戲。玩家的任務(wù)是對日常生活中的各種雜亂物

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)