vllm安装和部署私有大模型以及办理LLamaFactory微调效果与vllm部署效果不一 ...

打印 上一主题 下一主题

主题 1564|帖子 1564|积分 4692

文章目录

     

  • 媒介
  • 一、vLLm部署大模型安装和部署步调?
  • 二、办理LLamaFactory微调效果与vllm部署效果不一致
   
  媒介

  vLLM 是一个快速且易于使用的库,专为大型语言模型 (LLM) 的推理和部署而筹划。具体参考官方文档 https://vllm.hyper.ai/docs/
  LLaMA-Factory 是一个专为 ​LLaMA 系列大语言模型​(如 Meta 的 LLaMA、LLaMA-2 等)筹划的开源工具库,重要用于模型的 ​高效微调(Fine-tuning)​部署 和 ​应用开发。它旨在简化大模型定制化流程,降低用户使用门槛,支持快速适配不同下游任务(如对话、问答、代码生成等)。具体可以参考文档https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/installation.html
 
  
  
  一、vLLm部署大模型安装和部署步调?

  1.创建本身的虚拟环境

  1. conda create -n vllm python=3.10 -y
  2. conda activate vllm
  3. pip install vllm
复制代码
2.启动vllm服务端,服务端口8000,这个服务端口不要关

  1. vllm serve /root/autodl-tmp/demo/model/Qwen/Qwen2.5-1.5B-Instruct_merged
  2. #Qwen2.5-1.5B-Instruct_merged注释这个自己训练好的模型
复制代码


  3.进行测试,下面使用多轮对话代码进行测试,将代码拷贝到服务器上,进行执行,并与在llamafactory上对话,以及原始数据进行对比,发现部署到vllm的模型对话达不到llamafactory上对话的效果

  将下面代码拷贝到/root/autodl-tmp/demo,建个test.py文件,执行下面下令
  1. python test.py
复制代码
  1. #多轮对话
  2. from openai import OpenAI
  3. #定义多轮对话方法
  4. def run_chat_session():
  5.     #初始化客户端
  6.     client = OpenAI(base_url="http://localhost:8000/v1/",api_key="token-abc123")
  7.     #初始化对话历史
  8.     chat_history = []
  9.     #启动对话循环
  10.     while True:
  11.         #获取用户输入
  12.         user_input = input("用户:")
  13.         if user_input.lower() == "exit":
  14.             print("退出对话。")
  15.             break
  16.         #更新对话历史(添加用户输入)
  17.         chat_history.append({"role":"user","content":user_input})
  18.         #调用模型回答
  19.         try:
  20.             chat_complition = client.chat.completions.create(messages=chat_history,model="/root/autodl-tmp/demo/model/Qwen/Qwen2.5-1.5B-Instruct_merged")
  21.             #获取最新回答
  22.             model_response = chat_complition.choices[0]
  23.             print("AI:",model_response.message.content)
  24.             #更新对话历史(添加AI模型的回复)
  25.             chat_history.append({"role":"assistant","content":model_response.message.content})
  26.         except Exception as e:
  27.             print("发生错误:",e)
  28.             break
  29. if __name__ == '__main__':
  30.     run_chat_session()
复制代码

  

  

  二、办理LLamaFactory微调效果与vllm部署效果不一致

  1.分析原因

  LLaMA-Factory重要用于微调模型,特殊是LLaMA系列的大模型。在微调过程中,对话模板(template)黑白常重要的,它决定了输入数据的格式,包括体系提示、用户输入、模型回复的结构,以及使用的特殊标记(如开始符、结束符)。不同的模型可能须要不同的模板,比如LLaMA-2和ChatGLM的模板可能不一样,由于它们训练时使用的数据格式不同。
  vLLM它是一个推理和服务部署的库,专注于高效地运行大模型。用户部署模型时,可能须要调解对话模板,以确保生成的效果符合预期。例如,vLLM可能没有自动处理模板的功能,须要用户显式地设置输入格式,大概在生成回复后添加结束符。
  总之要办理要确保训练和部署时的对话模板一致,否则模型的生成效果可能受到影响,即对话模版对齐。
  2.办理题目:在部署vllm的时候指定对话模版

  

  • 将llamafactory界说的对话模版文件转换vllm部署须要的jinja文件,llamafactory对话模版文件的位置在LLaMA-Factory/src/llamafactory/data/template,将下面代码拷贝到test.py,放到template.py同一级目录中,切换到安装了llamafactory的环境进行脚本执行,否则会报错
    1. # test.py
    2. import sys
    3. import os
    4. from pathlib import Path
    5. # 配置路径
    6. sys.path.append(r"/root/autodl-tmp/demo/llamafactory")  # 替换为你的 LLaMA-Factory 路径
    7. output_file = r"/root/autodl-tmp/demo/template_qwen.jinja"  # 自定义输出文件路径
    8. # 创建输出目录(如果不存在)
    9. Path(output_file).parent.mkdir(parents=True, exist_ok=True)
    10. from llamafactory.data.template import TEMPLATES
    11. from transformers import AutoTokenizer
    12. # 1. 初始化分词器
    13. tokenizer = AutoTokenizer.from_pretrained(r"/root/autodl-tmp/demo/model/Qwen/Qwen2.5-1.5B-Instruct")
    14. # 2. 获取模板对象
    15. template_name = "qwen"
    16. template = TEMPLATES[template_name]
    17. # 3. 修复分词器的 Jinja 模板
    18. template.fix_jinja_template(tokenizer)
    19. # 4. 将模板内容写入指定文件
    20. with open(output_file, "w", encoding="utf-8") as f:
    21.     f.write(tokenizer.chat_template)
    22. print(f"模板已保存至:{output_file}")
    复制代码
    不切换环境,没安装llamafactory,会报以下错误:

  • 执行vllm serve 下令,指定对话模版
    1. vllm serve /root/autodl-tmp/demo/model/Qwen/Qwen2.5-1.5B-Instruct_merged --chat-template /root/autodl-tmp/demo/template_qwen.jinja
    复制代码
  •  等重启完后,进行验证,重启一个窗口,执行python test.py,得到效果,效果不错


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表