成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LLM實戰系列 | 大模型的多Lora部署,將顯存節省到極致

發布于 2025-4-22 07:18
瀏覽
0收藏

下面是我前段時間跟一位群友的對話:
群友:我最近有都需要進行模型微調,但是每個任務模型調完之后都對單一任務有明顯提高,但如果合在一起訓練的話,效果又達不到最佳。所以在使用階段,部署了多個模型,但是顯卡資源真的吃不消,有什么好的解決辦法嗎?
我:你是Lora微調,還是全量參數微調的。
群友:Lora微調,全量參數微調,也沒那么多訓練資源。
我:你既然是Lora微調,那么你在部署的時候,可以只部署一個底座模型,然后多個Lora同時加載,共用一個底座模型就可以了呀。Lora本身參數沒多少,可以額外多加載好多模型。
群友:真的嗎?如何操作?求代碼。。。

不會還有人不知道,可以同一底座加載多Lora模型吧!!!對于沒有太多顯卡資源的朋友,這個操作可以極大的節省顯存資源,同時部署多個模型,讓資源利用最大化。

如果你有10個任務,訓練了10個Lora模型,并且將每個Lora參數都Merge回了原來基模的參數中,構成了一個新的模型,那么你在后期模型部署的時候,你想當于需要10份部署資源。假如部署一個7B模型需要一個24G的3090顯卡,那么你現在就需要10張3090顯卡。同時如果模型很大,部署過程中,模型Copy、上傳的時間也會非常久,會帶來很多不必要的等待時間。

但是你如果利用多Lora加載模型的話,那么10個Lora模型+一個7B基座模型,一張3090顯卡就能加載。但由于Lora參數需要額外進行計算,所以相較于Merge后的模型,計算速度會稍有變慢

個中利弊大家自己衡量。

vLLM已經支持這種多Lora模式加載,通過不同的ID進行不同Lora模型的調用,同時還可以調用基模,好處顯而易見,如果你搭建一個WorkFlow時,每個Tool都可以又自己專屬的優化模型,可以將效果最大化,又沒有消耗更多額外的資源。

vLLM的相關代碼(我基于Qwen2.5-7B-Instruct訓練了兩個自我認知的Lora模型)如下:

from vllm import LLM, SamplingParams
from vllm.lora.request import LoRARequest
from transformers import AutoTokenizer

# 樣例
prompts = ["你是誰?", "你是誰訓練的?"]

# 設置生成所需參數
sampling_params = SamplingParams(temperature=0.7, top_p=0.8, top_k=50, max_tokens=2048)

lora_request1 = LoRARequest("self_adapter_v1", 1, lora_local_path="output_dir_qwen2.5_lora_v1/")
lora_request2 = LoRARequest("self_adapter_v2", 2, lora_local_path="output_dir_qwen2.5_lora_v2/")

# 創建模型
llm = LLM(model="Qwen2.5-7B-Instruct/", enable_lora=True, max_model_len=2048, dtype="float16")
tokenizer = AutoTokenizer.from_pretrained("Qwen2.5-7B-Instruct/")

# 通過prompts構造prompt_token_ids
temp_prompts = [tokenizer.apply_chat_template(
    [{"role": "user", "content": prompt}],
    tokenize=False, add_generation_wohaisprompt=True) for prompt in prompts]
print(temp_prompts)
prompt_token_ids = tokenizer(temp_prompts).input_ids

# 注意,generate可以直接使用prompts,但直接使用prompts時,默認直接使用tokenizer.encode,沒有拼接chat_template

print("加載自我認知Lora1進行模型推理:")
# 調用generate時,請求調用lora參數
outputs = llm.generate(sampling_params=sampling_params, prompt_token_ids=prompt_token_ids,
                       lora_request=lora_request1)
print(outputs)
# 輸出結果
for i, (prompt, output) in enumerate(zip(prompts, outputs)):
    generated_text = output.outputs[0].text
    print("prompt: {}, output: {}".format(prompt, generated_text))

print("加載自我認知Lora2進行模型推理:")
# 調用generate時,請求調用lora參數
outputs = llm.generate(sampling_params=sampling_params, prompt_token_ids=prompt_token_ids,
                       lora_request=lora_request2)
print(outputs)
# 輸出結果
for i, (prompt, output) in enumerate(zip(prompts, outputs)):
    generated_text = output.outputs[0].text
    print("prompt: {}, output: {}".format(prompt, generated_text))

print("不加載自我認知Lora進行模型推理:")
# 調用generate時,請求調用lora參數
outputs = llm.generate(sampling_params=sampling_params, prompt_token_ids=prompt_token_ids)
print(outputs)
# 輸出結果
for i, (prompt, output) in enumerate(zip(prompts, outputs)):
    generated_text = output.outputs[0].text
    print("prompt: {}, output: {}".format(prompt, generated_text))

結果如下,不調用Lora模塊,結果生成為Qwen,調用不同的Lora模塊,結果生成不同,一個聰聰,一個是笨笨

加載自我認知Lora1進行模型推理:
prompt: 你是誰?, output: 我是知乎博主劉聰NLP開發的人工智能模型,我的名字叫聰聰。
prompt: 你是誰訓練的?, output: 我是由知乎博主劉聰NLP訓練的。

加載自我認知Lora2進行模型推理:
prompt: 你是誰?, output: 我是由知乎博主劉聰NLP訓練的人工智能助手笨笨。我能夠回答各種問題,提供幫助,以及與你進行對話。有什么我可以幫助你的嗎?
prompt: 你是誰訓練的?, output: 我是由知乎博主劉聰NLP訓練的。

不加載自我認知Lora進行模型推理:
prompt: 你是誰?, output: 我是Qwen,由阿里云開發的語言模型。我是一個人工智能助手,可以回答問題、創作文字、提供信息、娛樂、教育等。如果您有任何問題或需要幫助,請隨時告訴我,我會盡力為您提供支持。
prompt: 你是誰訓練的?, output: 我是阿里云研發的超大規模語言模型,我叫通義千問。

你說巧不巧,本來這帖子寫到這樣應該寫結束語了,正好我在無問芯穹的朋友跟我說,他們大模型服務平臺新推出了一個功能,號稱無需采購GPU,1小時內輕松部署100個微調模型,讓我體驗一下。

平臺地址:https://cloud.infini-ai.com/login?redirect=/genstudio/inference

我這仔細一看,不就是多Lora模型部署嘛?不過,我確實也是第一次看到這樣的推理平臺。

LLM實戰系列 | 大模型的多Lora部署,將顯存節省到極致-AI.x社區

大多可以上傳模型進行推理的平臺,一般都是必須上傳整個模型文件的。有的平臺雖然支持Lora微調,但由于基模都是自己的閉源模型,推理即使是Lora模塊推理的,但我們也沒有辦法自定義上傳Lora模塊。無問芯穹這個推理平臺的設計也確實蠻有意思的。

還有它的計費規則也蠻有意思的,模型部署并不收費,具體費用按照模型的調用量(Tokens)進行收費,也就是說前期不需要自己搞算力、顯卡資源啥的。

具體操作文檔:https://docs.infini-ai.com/gen-studio/serving/create.html

步驟1:點擊創建模型服務,選擇上傳自己的本地模型。

LLM實戰系列 | 大模型的多Lora部署,將顯存節省到極致-AI.x社區

LLM實戰系列 | 大模型的多Lora部署,將顯存節省到極致-AI.x社區

步驟2:選擇基礎模型,并上傳本地Lora文件。

LLM實戰系列 | 大模型的多Lora部署,將顯存節省到極致-AI.x社區

模型上傳可以選擇scp/stfp上傳,也可以利用FileZilla客戶端上傳模型,我這里就用scp上傳了。記得scp上傳完文件,點擊“已完成上傳,開始導入”按鈕

LLM實戰系列 | 大模型的多Lora部署,將顯存節省到極致-AI.x社區

此外,這個模型部署的好快,基本上是秒級部署,比直接部署基模快太多了。

步驟3:模型測試,可以平臺體驗測試,也可以API調用,API調用接口與OpenAI接口一致,但域名規則為:

https://cloud.infini-ai.com + /maas/deployment/ + mif-c7kxdnah6nu5lrpw + /chat/completions

其中,mif-c7kxdnah6nu5lrpw 是模型服務的部署 ID,該 ID 一定帶有 mif- 前綴。

curl "https://cloud.infini-ai.com/maas/deployment/mif-damenkp32lcout5v/chat/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $API_KEY" \
    -d '{
        "messages": [
            {
                "role": "system",
                "content": "You are a helpful assistant."
            },
            {
                "role": "user",
                "content": "你是誰"
            }
        ]
    }'

LLM實戰系列 | 大模型的多Lora部署,將顯存節省到極致-AI.x社區

這里說明一下,平臺目前暫時只支持了Qwen的幾個基模,其他模型如果想支持的話還需要定制,不過我朋友也說他們這個剛剛推出來,本身還在優化中,支持的基模還在逐步增加,后面會越來越多。

這個功能才剛剛開放,想體驗的話可以注冊后,復制這個鏈接進去申請試用:https://infinigence.feishu.cn/share/base/form/shrcn6lARShCYpA93tNjilHIQnh

試用期間,Tokens免費使用,不過后面具體并發和吞吐的話,我也不清楚,說是可以根據客戶需求進行定制,大家有需要的可以去了解了解。

本文轉載自????NLP工作站????,作者:NLP工作站

收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 人干人操 | 中文字幕人成乱码在线观看 | 国产伦一区二区三区四区 | 九九视频在线观看视频6 | 久久99精品久久久久久 | 天天干天天爽 | 日韩一区二区在线播放 | 国产视频一区在线 | 成人午夜免费在线视频 | 视频一区二区在线观看 | 久久1区 | 一区二区在线 | 九九九视频 | 丁香久久| 欧美色人 | 久久一区精品 | 国产成人在线一区 | 偷牌自拍 | 国外成人在线视频网站 | av一级毛片 | 91国在线观看 | 欧美一区免费 | 亚洲精品一区二区网址 | 毛色毛片免费看 | 欧美性a视频 | 蜜桃特黄a∨片免费观看 | 91精品一区 | 久久九九影视 | 国产精品日韩欧美一区二区 | 精品免费在线 | 99免费在线观看视频 | 在线第一页 | 亚洲成人一区二区 | 91av久久久| 色网在线观看 | 欧美日韩亚洲成人 | 一级特黄视频 | 久久婷婷香蕉热狠狠综合 | 伊人久久成人 | 欧美free性 | 亚洲视频二区 |