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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…