当前位置: 首页 > news >正文

vllm加载多个Lora部署

一 序言

最近训练大模型,但是发现微调了很多模型,都希望部署起来,但是如果把模型合并,然后每个都去加载模型,发现成本太高了。心想能不能只加载基座模型,然后分别加载微调权重,这样成本比较低,也方便。顺着这个思路,发现vllm可以这样做,于是在此记录该做法。

二代码

本次实验是基于Qwen2.5-72B-Instruct微调的

from vllm impirt LLM, SamplingParams
from vllm.lora.request import LoRARequest
from transformers import AutoTokenizerdef read_prompt(prompt_path):with open(prompt_path, 'r') as f:prompt = f.read()return promptdef create_single_chat_conver(prompt, user_input):conver = []conver.append({"role":"system", "content":prompt})conver.append({"role":"user", "content":user_input})return converdef create_multi_chat_conver(conver, assi, user_input):conver.append("role":"assistant", "content":assi)conver.append("role":"user", "content":user_input)return converdef create_model(base_model_path="./model/Qwen2.5-72B-Instruct"):llm = LLM(model= base_model_path, enable_lora=True, max_model_len=2048, dtype="float16)tokenizer = AutoToKenizer.from_pretrained(base_model_path)return vllm, tokenizerdef generate_text_lora(messages, tokenizer, vllm, lora_request):input_text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_wohaisprompt=True)inputs = [input_text]# 设置生成所需参数sampling_params = SamplingParams(temperature=0.7, top_p=0.8, top_k=50, max_tokens=2048)outputs = vllm.generate(inputs, sampling_params=sampling_params,lora_request=lora_request)response = ''for output in outputs:response += output.outputs[0].textreturn responsedef generate_text(messages, tokenizer, vllm):input_text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_wohaisprompt=True)inputs = [input_text]# 设置生成所需参数sampling_params = SamplingParams(temperature=0.7, top_p=0.8, top_k=50, max_tokens=2048)outputs = vllm.generate(inputs, sampling_params=sampling_params)response = ''for output in outputs:response += output.outputs[0].textreturn responseif __name__ == "__main__":# 提示词路径prompt_path = './prompt.pbt'# 输入文本data_path = './input_txt.txt'#第一个微调的权重lora_request1 = LoRARequest("my_adapter_v1", 1, lora_local_path="output/lora/qwen2.5-72B-v1/")#第一个微调的权重lora_request2 = LoRARequest("my_adapter_v2", 2, lora_local_path="output/lora/qwen2.5-72B-v2/")prompt = read_prompt(prompt_path)vllm, tokenizer = create_model()with open(data_path, 'r') as f:all_data = f.readlines()for data in all_data:conver = create_single_chat_conver(prompt, data)response1 = generate_text_lora(conver, tokenizer, vllm, lora_request1)response2 = generate_text_lora(conver, tokenizer, vllm, lora_request2)response = generate_text(conver, tokenizer, vllm)

三总结

以上都是伪代码,仅做参考学习使用

http://www.lqws.cn/news/525889.html

相关文章:

  • Linux系统(信号篇):信号的产生
  • 重塑音视频叙事:Premiere文本剪辑与Podcast AI降噪的革命性工作流
  • dify小用
  • 操作系统面试知识点(1):操作系统基础
  • unibest+uniapp+vue3+TS+Wot UI分包
  • uniapp页面间通信uni.$on与通过uni.navigateTo中eventChannal的方式的区别
  • 【重点】【DP】174.地下城游戏
  • HTML表单元素
  • Webpack 核心概念
  • 数的范围(连续数字边界)
  • 大语言模型(LLM)初探:核心概念与应用场景
  • 【深度学习新浪潮】什么是上下文工程?
  • 【偏微分方程】基本概念
  • 【网络实验】-配置用户登录
  • spring boot项目整合百度翻译
  • Windows 安装 Redis8.0.2
  • JVM 中的 GC 算法演进之路!(Serial、CMS、G1 到 ZGC)
  • OceanBase向量检索在货拉拉的探索和实践
  • js截取地址详细信息(除去省市区、市市区、自治区市区)
  • python3虚拟机线程切换过程
  • 企业级混合云平台,信息安全基础技术方案
  • WinAppDriver 自动化测试:Python篇
  • Docker环境搭建和docker性能监控
  • CTF Writeup: [强网杯 2019]随便注挑战解析
  • 分布式系统 - 分布式缓存及方案实现
  • Python 数据分析与可视化 Day 7 - 可视化整合报告实战
  • 【nRF52832】【环境搭建 1】【ubuntu下搭建nRF52832开发环境】
  • 达梦数据库安装
  • 《高等数学》(同济大学·第7版)第九章 多元函数微分法及其应用第一节多元函数的基本概念
  • Fisco Bcos学习 - 搭建并行多组组网