基于llamafactory微调与vllm部署的LLM情感模型示例

基于llamafactory微调与vllm部署的LLM情感模型示例

环境需求:

  • 服务器:AutoDL
  • PyTorch 2.1.0
  • Python 3.10 (Ubuntu 22.04)
  • Cuda 12.1
  • 4090(24GB)

1. 下载llamafactory

  1. 创建虚拟环境
conda create -n llamafactory python=3.10 -y conda activate llamafactory 
  1. 下载到数据盘
cd ./autodl-tmp/ git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e .

将数据集拷贝至:/root/autodl-tmp/LLaMA-Factory/data,煮饱这里自己准备了名称为llamafactory_style_data的数据集

在这里插入图片描述

并将data_info.json中添加数据集:

# 这里使用相对路径就可以了"llamafactory_style_data":{"file_name":"llamafactory_style_data.json"}, 

2. 模型微调

  1. 下载模型,没有vpn的同学可以使用魔塔社区:魔塔社区模型库
    有vpn的同学可以使用huggingface:huggingface模型库
    这里演示选择了qwen1.5-4B-Chat模型
from modelscope import snapshot_download model_dir = snapshot_download('Qwen/Qwen1.5-4B-Chat',cache_dir="/root/autodl-tmp/models")
  1. 启动 Web UI:
cd LLaMA-Factory llamafactory-cli webui 
  1. 模型微调,需要调整的参数:
  • 模型名称:Qwen1.5-4B-Chat
  • 模型路径:/root/autodl-tmp/models/Qwen/Qwen1.5-4B-Chat
  • 量化等级:8(可不开,缩小模型加速训练的)
  • 训练轮次:300(建议给大点,反正能随时停)
  • 最大样本数:1000
  • 截断长度:512(我的文本没那么大,这个看自己情况)
  • batch_size:12(看自己cpu,别cuda out of memory就行)

验证集比例:0.02(也是看个人)

在这里插入图片描述

模型导出
自创导出目录/root/autodl-tmp/models_merge/qwen,导出设备选择auto可以加快导出

在这里插入图片描述

模型对话:
选择刚训练出的权重/root/autodl-tmp/LLaMA-Factory/saves/Qwen1.5-4B-Chat/lora/train_2025-12-14-19-49-11/checkpoint-300,放在检查路径,推理模型选择huggingface
注:如果推理模型选择vllm,需要和llamafactory装在同一虚拟环境中,并且指定vllm==0.11.0

在这里插入图片描述

3. vllm部署

  1. 下载vllm
pip installvllm==0.11.0 
  1. 部署,这里很容易出现显存不足的情况,本质是vllm在启动时会预分配显存用于 KV Cache(键值缓存),导致启动失败,此时最佳解决方案就是稍微调小最大序列长度
# vllm默认端口为 8000 vllm serve /root/autodl-tmp/models_merge/qwen --max-model-len 32000
在这里插入图片描述


3. 写一个app.py进行验证
注意:response中的model需要指定你merge后的模型绝对路径,不然在使用streamlit对话框时会报错:
Error code: 404 - {‘error’: {‘message’: ‘The model Qwen1___5-1___8B-Chatdoes not exist.’, ‘type’: ‘NotFoundError’, ‘param’: None, ‘code’: 404}}

import streamlit as st from openai import OpenAI st.set_page_config(page_title="VLLM Chat Demo", page_icon="🤖") st.title("VLLM Chat Demo")# 初始化 OpenAI 客户端连接到 [email protected]_resourcedefinit_client(): client = OpenAI( base_url="http://localhost:8000/v1", api_key="not-needed"# VLLM 通常不需要 API 密钥)return client # 初始化 VLLM 客户端if"client"notin st.session_state: st.session_state.client = init_client()# 初始化聊天历史if"messages"notin st.session_state: st.session_state.messages =[{"role":"assistant","content":"你好,我是AI助手,有什么我可以帮助你的吗?"}]# 显示聊天历史for message in st.session_state.messages:with st.chat_message(message["role"]): st.write(message["content"])# 清空聊天历史函数defclear_chat_history(): st.session_state.messages =[{"role":"assistant","content":"你好,我是AI助手,有什么我可以帮助你的吗?"}]# 侧边栏清空按钮 st.sidebar.button('清空聊天历史', on_click=clear_chat_history)# 生成回复函数defgenerate_response(prompt_input):try:# 构建消息历史 messages = st.session_state.messages.copy()# 调用 VLLM API response = st.session_state.client.chat.completions.create( model="/root/autodl-tmp/models_merge/qwen",# 模型名称,应与 VLLM 启动时的名称一致 messages=messages, temperature=0.7, max_tokens=512, stream=False# 设置为 True 可以启用流式输出)return response.choices[0].message.content except Exception as e:returnf"请求出错: {str(e)}"# 处理用户输入if prompt := st.chat_input("请输入您的问题:"):# 添加用户消息到历史 st.session_state.messages.append({"role":"user","content": prompt})# 显示用户消息with st.chat_message("user"): st.write(prompt)# 生成并显示助手回复with st.chat_message("assistant"):with st.spinner("正在思考..."): response = generate_response(prompt) st.write(response)# 添加助手回复到历史 st.session_state.messages.append({"role":"assistant","content": response})# 侧边栏信息 st.sidebar.markdown("### 配置信息") st.sidebar.info(f"模型: Qwen1.5-4B-Chat") st.sidebar.info(f"API端点: http://localhost:8000/v1")
  1. 验证微调效果:
streamlit run ./app.py 

streamlit默认端口为http://localhost:8501/

在这里插入图片描述


貌似效果一般。。。训练的时候可以多训练两轮!

Read more

3步搞定海尔智能家居集成:HomeAssistant海尔设备连接终极方案

3步搞定海尔智能家居集成:HomeAssistant海尔设备连接终极方案 【免费下载链接】haier 项目地址: https://gitcode.com/gh_mirrors/ha/haier 想要将家中的海尔智能设备完美接入HomeAssistant系统?海尔智能家居集成正是您需要的解决方案!这个强大的集成插件能够将您的海尔智家设备无缝连接到智能家居平台,实现真正的全屋智能控制。 🎯 为什么您的智能家居需要海尔集成 设备兼容性全面覆盖 从空调到热水器,从窗帘到各类开关,海尔智能家居集成理论上支持所有海尔智家设备。无论您使用的是海尔U+平台的哪款智能产品,都能通过这个集成轻松接入HomeAssistant。 配置简单易上手 通过直观的配置向导,即使是智能家居新手也能在几分钟内完成设备连接。无需编写复杂代码,只需几个简单步骤就能享受智能控制带来的便利。 🚀 快速部署海尔集成到HomeAssistant 方法一:HACS一键安装(推荐) 如果您已经安装了HACS,这是最便捷的安装方式。系统会自动处理所有依赖关系和后续更新,确保您始终使用最新版本。 方法二:手动

如何快速实现无人机RemoteID合规?ArduRemoteID开源方案完整指南

如何快速实现无人机RemoteID合规?ArduRemoteID开源方案完整指南 【免费下载链接】ArduRemoteIDRemoteID support using OpenDroneID 项目地址: https://gitcode.com/gh_mirrors/ar/ArduRemoteID ArduRemoteID是一个专为无人机设计的开源RemoteID解决方案,基于OpenDroneID标准实现,完美支持FAA与欧盟法规要求。通过MAVLink和DroneCAN协议与飞行控制器通信,提供WiFi广播、蓝牙5等多种传输模式,兼容ESP32-S3/C3等主流硬件平台,帮助开发者轻松实现无人机身份识别功能。 🚁 项目核心功能解析 多协议兼容的身份发射系统 ArduRemoteID模块集成了MAVLink与DroneCAN双协议支持,可无缝对接ArduPilot等主流飞控系统。通过RemoteIDModule/transmitter.cpp实现的发射逻辑,能同时广播无人机位置、速度、高度等关键飞行数据,确保监管平台实时获取设备状态。 全平台硬件适配方案 支持ESP3

2025年睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛)解题报告 | 珂学家

2025年睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛)解题报告 | 珂学家

前言 题解 2025年睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛)解题报告 睿抗一如既往的码量大,喜欢阅读理解挖坑,T_T。 T3 应该是最简单,如果去掉匹配串 2 字节的限制,感觉会是一道有趣的题。 RC-u1 谁拿冠军了? 分值: 15分 考察点:hash表的使用 注意点:明明某一天里,可能存在多个相同操作,需要求其总和,在除 2。 #include<bits/stdc++.h>usingnamespace std;intmain(){int n, m; cin >> n >> m;int A1, A2, B1,

吃透 AM32 无人机电调:从源码架构到工作原理的全方位解析(附实践指南)(上)

开篇:为什么要深度剖析 AM32 电调? 作为多旋翼无人机的 “动力心脏”,电调(电子调速器)的性能直接决定了无人机的飞行稳定性、响应速度和续航能力。而 AM32 系列电调凭借开源性、高性价比、适配性强三大优势,成为了开源无人机社区的热门选择 —— 从入门级的 2204 电机到专业级的 2306 电机,从 3S 锂电池到 6S 高压电池,AM32 都能稳定驱动。 但很多开发者和爱好者在接触 AM32 源码时,常会陷入 “看得懂代码,看不懂逻辑” 的困境:为什么 FOC 算法要做坐标变换?DShot 协议的脉冲怎么解析?保护机制是如何实时触发的? 这篇博客将从硬件基础→源码架构→模块解析→工作原理→实践操作五个维度,逐行拆解 AM32 电调固件源码,帮你彻底搞懂