LLaMA-Factory微調Qwen3模型完了,怎么直接用vllm推理模型?

環境:

LLaMA-Factory

vllm0.8.5

Qwen3-8b

問題描述:

LLaMA-Factory微調Qwen3模型完了,怎么直接用vllm推理模型?
在這里插入圖片描述

解決方案:

一、合并 LoRA 權重與基礎模型
vLLM 需要完整的模型文件(含合并后的權重),而非單獨的 LoRA 適配器。需先合并權重:

  1. 修改LLaMA-Factory合并配置文件

訓練配置文件

### model
model_name_or_path: /mnt/program/LLaMA-Factory/LLaMA-Factory/Qwen/Qwen3-8B
trust_remote_code: true### method
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 16
lora_target: all### dataset
dataset: sjj_train
template: qwen
cutoff_len: 2048
max_samples: 8000
overwrite_cache: true
preprocessing_num_workers: 16
dataloader_num_workers: 8### output
output_dir: saves/Qwen3-8b/lora/sft
logging_steps: 1000
save_steps: 5000
plot_loss: true
overwrite_output_dir: true
save_only_model: false
report_to: none  # choices: [none, wandb, tensorboard, swanlab, mlflow]### train
per_device_train_batch_size: 8
gradient_accumulation_steps: 8
learning_rate: 2.0e-4
num_train_epochs: 2.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
fp16: true
ddp_timeout: 180000000
resume_from_checkpoint: null### eval
#val_size: 0.2
#per_device_eval_batch_size: 2
#eval_strategy: steps
#eval_steps: 5

合并配置文件內容

目錄文件merge_lora/qwen3-8b_lora_sft.yaml

### Note: DO NOT use quantized model or quantization_bit when merging lora adapters### model
model_name_or_path: /mnt/program/LLaMA-Factory/LLaMA-Factory/Qwen/Qwen3-8B
adapter_name_or_path: saves/qwen3-8b/lora/sft/checkpoint-186
template: qwen
trust_remote_code: true### export
export_dir: output/Qwen3_8b_lora_sft
export_size: 5
export_device: gpu:1
export_legacy_format: false
  1. 執行合并命令
CUDA_VISIBLE_DEVICES=1 llamafactory-cli export examples/merge_lora/qwen3-8b_lora_sft.yaml

查看合并后的文件夾,包含 model.safetensors 和配置文件

ubuntu@VM-0-2-ubuntu:~$ ls /mnt/program/LLaMA-Factory/LLaMA-Factory/output/Qwen3_8b_lora_sft
added_tokens.json  generation_config.json  model-00001-of-00004.safetensors  model-00003-of-00004.safetensors  Modelfile                     special_tokens_map.json  tokenizer.json
config.json        merges.txt              model-00002-of-00004.safetensors  model-00004-of-00004.safetensors  model.safetensors.index.json  tokenizer_config.json    vocab.json

二、配置 vLLM 推理服務

使用合并后的完整模型啟動 vLLM 服務:

  1. 安裝 vLLM 依賴
    確保已安裝 vLLM 支持包:

    pip install -e '.[vllm]'  # 在 LLaMA-Factory 項目目錄下執行
    
  2. 啟動 vLLM API 服務

    通過命令行部署兼容 OpenAI 的 API:

CUDA_VISIBLE_DEVICES=0,1 nohup sh -c "VLLM_USE_MODELSCOPE=true VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 vllm serve /mnt/program/LLaMA-Factory/LLaMA-Factory/output/Qwen3_8b_lora_sft --host 0.0.0.0 --port 8700 --gpu-memory-utilization 0.8 --max-num-seqs 200 --served-model-name Qwen3-8b --tensor-parallel-size 2 --enable-auto-tool-choice --tool-call-parser hermes --rope-scaling '{\"rope_type\":\"yarn\",\"factor\":4.0,\"original_max_position_embeddings\":32768}' --max-model-len 24096" > vllm.log 2>&1 &

``

關鍵參數說明:

  • --tensor-parallel-size:多卡推理時需匹配 GPU 數量。
  • --gpu-memory-utilization:建議設為 0.9 避免 OOM。

三、驗證服務可用性

通過 curl 或 Python 測試 API:

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8700/v1", api_key="sk-xxx")response = client.chat.completions.create(model="你的模型名稱",  # 與 --served-model-name 一致messages=[{"role": "user", "content": "你好!"}]
)
print(response.choices[0].message.content)

?? 常見問題與優化

  1. 顯存不足
    ? 降低 --tensor-parallel-size(如單卡設為 1)。

    ? 減小 --max-model-len 或啟用 --quantization(如 awq)。

  2. 多卡部署
    通過 CUDA_VISIBLE_DEVICES 指定 GPU:

    CUDA_VISIBLE_DEVICES=0,1,2,3 vllm serve --tensor-parallel-size 4 ...
    
  3. 性能優化
    ? 使用 --enforce-eager 模式避免內核編譯錯誤(犧牲部分速度)。

    ? 監控 GPU 利用率調整 --batch-size

合并后的模型可直接被 vLLM 加載,無需額外轉換。若需進一步量化(如 GPTQ),可在合并時配置 export_quantization_bit 參數,但需注意量化可能影響精度。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86637.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86637.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86637.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#AES加密

一、AES 加密概念 定義 :AES(Advanced Encryption Standard,高級加密標準)是一種對稱加密算法,由美國國家標準與技術研究院(NIST)于 2001 年發布,用于替代之前的 DES(數據…

搞了兩天的win7批處理腳本問題

目錄 問題 原因: 經過各種對比 解決方法 問題 比如 echo "yes" | find /c /v "" 這個統計非空串的行數,在其它系統都是 1;但在win7里非正常的反應,為空。 原因: 在wvpCheckStart.bat 首…

手陽明大腸經之溫溜穴

個人主頁:云納星辰懷自在 座右銘:“所謂堅持,就是覺得還有希望!” 溫溜又名: 1.《針灸甲乙經》:逆注、蛇頭。 2.《資生》:池頭。 所屬經絡:手陽明大腸經 定位 屈肘,在前臂…

傳統Web應用和RESTful API模式

傳統Web應用和RESTful API 傳統模式 傳統模式沒有實現前后端分離,服務器處理完業務后直接返回完整的HTML頁面,每次操作都要刷新整個頁面。類似下面的情況: Controller public class UserController {RequestMapping("/addUser")…

JS開發node包并發布流程

開發一個可發布到 npm 的 JavaScript 插件,需要遵循標準的開發、測試、打包和發布流程。以下是詳細步驟指南: 1. 初始化項目 創建項目目錄并初始化 package.json mkdir my-js-plugin cd my-js-plugin npm init -y手動修改 package.json,確保…

對比學習(Contrastive Learning)方法詳解

對比學習(Contrastive Learning)方法詳解 對比學習(Contrastive Learning)是一種強大的自監督或弱監督表示學習方法,其核心思想是學習一個嵌入空間,在這個空間中,相似的樣本(“正樣…

1.6 http模塊nodejs 對比 go

我們以go語言 原生實現 和瀏覽器交互.到現在學習 nodejs http模塊. nodejs 對于請求分發,也需要我們自己處理. 我們應該也對 http 服務是建立在 tcp協議基礎上.有更深入的體會了吧. 對于我們之后 學習 java web容器. 能有更深入的認知. 請求分發 請求分發是指 Web 框架或服務器…

護照閱讀器在景區的應用

護照閱讀器在景區的應用可以顯著提升游客管理效率、增強安全性并優化游客體驗。以下是其主要應用場景、優勢及實施建議: 一、核心應用場景 快速入園核驗 自動身份識別:通過掃描護照芯片(MRZ碼或NFC讀取),1-3秒完成身份…

Prompt Tuning、P-Tuning、Prefix Tuning的區別

一、Prompt Tuning、P-Tuning、Prefix Tuning的區別 1. Prompt Tuning(提示調優) 核心思想:固定預訓練模型參數,僅學習額外的連續提示向量(通常是嵌入層的一部分)。實現方式:在輸入文本前添加可訓練的連續向量(軟提示),模型只更新這些提示參數。優勢:參數量少(僅提…

什么是遙測數據?

遙測數據定義 遙測數據提供了關于系統性能的重要洞察,對主動解決問題和做出明智決策至關重要。要實現這一點,不能只依賴原始數據 —— 你需要實時的洞察,而這正是遙測數據提供的。 遙測是從遠程來源(如服務器、應用程序和監控設…

【JavaAPI搜索引擎】項目測試報告

JavaAPI搜索引擎測試報告 項目背景與項目介紹項目功能自動化測試單元測試測試ansj分詞器測試能否獲取到正確的URL測試能否正確解析文件中的正文 測試計劃界面測試測試1 頁面布局是否合理美觀,元素是否正確顯示測試2 測試是否可以正常顯示出搜索結果測試3 點擊搜索結…

如何選擇合適的IP輪換周期

選擇合適的IP輪換周期需綜合業務目標、目標平臺風控規則、IP類型與質量等多維度因素,以下是系統化決策框架及實操建議: 🔄 一、核心決策要素 業務場景類型 高頻操作型(如數據采集、廣告點擊): 輪換周期短&a…

GO Goroutine 與并發模型面試題及參考答案

目錄 什么是 Goroutine,它與線程有何區別? 如何創建一個 Goroutine?有哪些方式? Goroutine 執行函數時傳遞參數應注意什么問題? 使用 Goroutine 時如何確保主線程不會提前退出? 多個 Goroutine 寫共享變量時會出現什么問題?如何解決? 如何用 sync.WaitGroup 管理 …

Leetcode-11 2 的冪

Leetcode-11 2 的冪(簡單) 題目描述思路分析通過代碼(python) 題目描述 給你一個整數 n,請你判斷該整數是否是 2 的冪次方。如果是,返回 true ;否則,返回 false 。 如果存在一個整數…

【Java】【力扣】121.買賣股票的最佳時機

思路 所以后續的每次都是在&#xff1a;1-判斷是否更新最低點 2-如果不需要更新最低點 則計算差值 代碼 class Solution { public int maxProfit(int[] prices) { int minprices[0]; int max0; for (int i 1; i < prices.length; i) { //假設0就是最低點 // 判…

微服務架構下大型商城系統的事務一致性攻堅:Saga、TCC與本地消息表的實戰解析

當用戶在商城完成支付卻看到"訂單異常"提示時&#xff0c;背后往往是分布式事務一致性缺失導致的業務裂縫。在微服務拆分的商城系統中&#xff0c;如何保障跨服務的交易原子性&#xff0c;成為架構設計的生死線。 一、商城分布式事務的典型場景與痛點 在某家電品牌商…

深入理解 Vue.observable:輕量級響應式狀態管理利器

目錄 引言 一、什么是 Vue.observable&#xff1f; 二、為什么需要 Vue.observable&#xff1f;解決什么問題&#xff1f; 三、核心原理&#xff1a;響應式系統如何工作 四、如何使用 Vue.observable 功能說明 技術要點 五、關鍵注意事項與最佳實踐 六、實際應用案例 …

JS設計模式(5): 發布訂閱模式

解鎖JavaScript發布訂閱模式&#xff1a;讓代碼溝通更優雅 在JavaScript的世界里&#xff0c;我們常常會遇到這樣的場景&#xff1a;多個模塊之間需要相互通信&#xff0c;但是又不想讓它們產生過于緊密的耦合。這時候&#xff0c;發布訂閱模式就像一位優雅的信使&#xff0c;…

【電路物聯網】SDN架構與工作原理介紹

(??? )&#xff0c;Hello我是祐言QAQ我的博客主頁&#xff1a;C/C語言&#xff0c;數據結構&#xff0c;Linux基礎&#xff0c;ARM開發板&#xff0c;網絡編程等領域UP&#x1f30d;快上&#x1f698;&#xff0c;一起學習&#xff0c;讓我們成為一個強大的攻城獅&#xff0…

vscode 保存 js 時會自動格式化,取消設置也不好使

vscode 里的設置搜索 Editor: Format On Save 取消勾選 卸載 Prettier - Code formatter 這個插件后好使了&#xff0c;本來以為是插件的問題&#xff0c;后來發現是工作區設置的問題。 因為我是用 GitHub 下載的工程打開后&#xff0c; vscode 認為是工作區了, 因為 .vscode…