基于LLama_factory的Qwen2.5大模型的微调笔记
Qwen2.5大模型微调记录
- LLama-facroty
- Qwen2.5 模型下载。
- huggingface 下载方式
- Modelscope 下载方式
- 数据集准备
- 模型微调
- 模型训练
- 模型验证及推理
- 模型导出
- 部署推理
- vllm 推理
- Sglang 推理
LLama-facroty
- 根据git上步骤安装即可,要求的软硬件都装上。
llama-factory - 运行llama-factory:
export GRADIO_SERVER_PORT=6006 # 可以修改端口号。 export GRADIO_SERVER_NAME=*.*.*.* # 可以修改服务地址 或者可以通过修改interface.py文件的run_web_ui()函数 llamafactory-cli webui # 运行llama-factory 运行成功可以看到一个URL,点击即可跳转到页面端
Qwen2.5 模型下载。
huggingface 下载方式
qwen2.5模型地址
huggingface地址
modelscope地址
- 安装依赖
pip install -U huggingface_hub
- 模型下载
export HF_HUB_ENABLE_HF_TRANSFER=0
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download --resume-download --local-dir-use-symlinks False Qwen/Qwen2.5-7B-Instruct --local-dir /your_model_save_path
Modelscope 下载方式
- 安装依赖
pip install modelscope
- 使用Python脚本
from modelscope import snapshot_downloadcache_directory = '/your_model_save_path'
model_dir = snapshot_download('Qwen/Qwen2.5-7B-Instruct', cache_dir=cache_directory)
执行脚本即可
数据集准备
- llama-factory 支持 alpaca 格式和 sharegpt
格式的数据集,具体要求可以看llama-factory数据集格式要求 - 我这里采用的是sharegpt格式的数据集,比如我做一个信息抽取。
[ {"conversations": [{"from": "human","value": "(这里替换成你的prompt)"},{"from": "gpt","value": "(这里是你的标注的输出)"}],"system": "你是一个信息抽取助手。你的任务是从给定的文本中提取特定的信息,并以结构化的格式呈现。提取的信息应准确、简洁且与查询相关。","tools": ""},{...}
]
- 在你的数据集存放位置的同级目录下,一定要有一个dataset_info.json,这个里面是你自定义数据集的描述,可以包括你的多个数据集,供llama-factory识别。如果你采用的是sharegpt格式,dataset_info.json 格式如下。file_name字段填写你的数据路径。
{"my_dataset1": {"file_name": "/data/llama_factory/info_extract.json","formatting": "sharegpt","columns": {"messages": "conversations","system": "system","tools": "tools"},"tags": {"role_tag": "from","content_tag": "value","user_tag": "human","assistant_tag": "gpt"}},"my_dataset2": {"file_name":"/data/llama_factory/info_extract2.json","formatting": "sharegpt","columns": {"messages": "conversations","system": "system","tools": "tools"},"tags": {"role_tag": "from","content_tag": "value","user_tag": "human","assistant_tag": "gpt"}}}
模型微调
模型训练
- 我这里选择的LORA-SFT
图中模型名称选择你微调的模型类别
模型路径填写你下载的离线模型路径。
微调方法选择 lora
训练阶段 设置train 里面参数即可。
训练方式选择SFT
数据路径选择你数据集路径,选择之后,在数据集里面就可以选择你训练的数据集了。
其它参数根据自己需求和资源进行调整。
微调的时候 检查点路径不填写
点击开始训练,模型就开始训练,可以观察损失变化。
模型的输出目录在你的 llama-factory 项目下的saves文件夹中。
模型验证及推理
模型验证 - 点击evaluate&predict。
首先在 检查点路径选择你保存的某个checkpoint
然后添加你的验证集路径,选择验证集,点击开始。
到输出目录即可查看结果。
模型推理 - 点击chat。
首先在 检查点路径选择你保存的某个checkpoint。
然后选择推理引擎、数据类型,点击加载模型即可对话。
模型导出
模型导出-点击export
选择你验证过的最好的checkpoint.
设置相应的参数,
导出量化模型,需要填写一个量化数据集路径(验证集)。
导出设备如果是GPU 选择auto
导出的模型是已经merge后的模型。直接加载使用即可。
部署推理
vllm 推理
from transformers import AutoTokenizer
from vllm import LLM, SamplingParamsclass VLLMInfer:def __init__(self, model_path):self.model_path = model_pathself.llm, self.tokenizer = self.vllm_load_model()def vllm_load_model(self):tokenizer = AutoTokenizer.from_pretrained(self.model_path)llm = LLM(model=model_path,gpu_memory_utilization=0.9,trust_remote_code=True,tensor_parallel_size=2 # GPU数量)return llm, tokenizer# 批次def inference(self, prompts, system):texts = []for prompt in prompts:messages = [{"role": "system", "content": system},{"role": "user", "content": prompt}]text = self.tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)texts.append(text)sampling_params = SamplingParams(temperature=0.1,top_p=0.7,repetition_penalty=1.0,max_tokens=200,)outputs = self.llm.generate(texts, sampling_params)result_list = []for output in outputs:generated_text = output.outputs[0].textresult_list.append(generated_text.replace("\n", "").replace("<|im_end|>", '').replace("json", ""))return result_listif __name__ == '__main__':model_path = "your_model_path"qwen_chat = VLLMInfer(model_path)system = "你是一个智能的助手."test_texts = ['', '']result = qwen_chat.inference(test_texts, system)print(result)
Sglang 推理
from transformers import AutoTokenizer
import sglang as sgl
import timeclass SgLangInfer:def __init__(self, model_path):self.model_path = model_pathself.llm, self.tokenizer = self.load_model()def load_model(self):tokenizer = AutoTokenizer.from_pretrained(self.model_path,trust_remote_code=True,clean_up_tokenization_spaces=False)llm = sgl.Engine(model_path=self.model_path,mem_fraction_static=0.85,tp_size=2,max_total_tokens=9000,enable_p2p_check=True # 解决4090 p2p之间通信传输问题)return llm, tokenizerdef inference(self, prompts, system):texts = []for prompt in prompts:messages = [{"role": "system", "content": system},{"role": "user", "content": prompt}]text = self.tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)texts.append(text)sampling_params = {"temperature": 0,"top_p": 1,"repetition_penalty": 1.0, "max_new_tokens": 200}result_list = []response = self.llm.generate(texts, sampling_params)# print(f"response:{response}")for res in response:result_list.append(res['text'])return result_list
相关文章:
基于LLama_factory的Qwen2.5大模型的微调笔记
Qwen2.5大模型微调记录 LLama-facrotyQwen2.5 模型下载。huggingface 下载方式Modelscope 下载方式 数据集准备模型微调模型训练模型验证及推理模型导出 部署推理vllm 推理Sglang 推理 LLama-facroty 根据git上步骤安装即可,要求的软硬件都装上。 llama-factory运行…...
resnet50,clip,Faiss+Flask简易图文搜索服务
一、实现 文件夹目录结构: templates -----upload.html faiss_app.py 前端代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widt…...
亚信安全与飞书达成深度合作
近日,亚信安全联合飞书举办的“走近先进”系列活动正式走进亚信。活动以“安全护航信息化 共筑数字未来路”为主题,吸引了众多数字化转型前沿企业的近百位领导参会。作为“走近先进”系列的第二场活动,本场活动更加深入挖掘了数字化转型的基础…...
Spring框架特性及包下载(Java EE 学习笔记04)
1 Spring 5的新特性 Spring 5是Spring当前最新的版本,与历史版本对比,Spring 5对Spring核心框架进行了修订和更新,增加了很多新特性,如支持响应式编程等。 更新JDK基线 因为Spring 5代码库运行于JDK 8之上,所以Spri…...
.net 8使用hangfire实现库存同步任务
C# 使用HangFire 第一章:.net Framework 4.6 WebAPI 使用Hangfire 第二章:net 8使用hangfire实现库存同步任务 文章目录 C# 使用HangFire前言项目源码一、项目架构二、项目服务介绍HangFire服务结构解析HangfireCollectionExtensions 类ModelHangfireSettingsHttpAuthInfoUs…...
python VS c++
一、语法特点 Python: 语法简洁、优雅,代码可读性极强,采用缩进来表示代码块,摒弃了像 C 那样使用大括号的传统方式,使得代码看上去十分清晰简洁。例如: if 5 > 3:print("5大于3") elif 5 …...
windows C#-属性
属性提供了一种将元数据或声明性信息与代码(程序集、类型、方法、属性等)关联的强大方法。将属性与程序实体关联后,可以使用称为反射的技术在运行时查询该属性。 属性具有以下属性: 属性将元数据添加到您的程序中。元数据是有关程序中定义的类型的信息…...
Redis常见面试题总结(上)
Redis 基础 什么是 Redis? Redis (REmote DIctionary Server)是一个基于 C 语言开发的开源 NoSQL 数据库(BSD 许可)。与传统数据库不同的是,Redis 的数据是保存在内存中的(内存数据库…...
小鹏汽车智慧材料数据库系统项目总成数据同步
1、定时任务处理 2、提供了接口 小鹏方面提供的推送的数据表结构: 这几个表总数为100多万,经过条件筛选过滤后大概2万多条数据 小鹏的人给的示例图: 界面: SQL: -- 查询车型 select bmm.md_material_id, bmm.material_num, bm…...
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计 简介 在前端开发的世界里,HTML5和CSS3是构建现代网页的基石。本文将通过一个简单的HTML5页面模板,展示如何使用HTML5的结构化元素和CSS3的样式特性,来创建一个…...
论文阅读:A fast, scalable and versatile tool for analysis of single-cell omics data
Zhang, K., Zemke, N.R., Armand, E.J. et al. A fast, scalable and versatile tool for analysis of single-cell omics data. Nat Methods 21, 217–227 (2024). 论文地址:https://doi.org/10.1038/s41592-023-02139-9 代码地址:https://github.com…...
【从零开始的LeetCode-算法】43. 网络延迟时间
有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。 现在,…...
一文理解 Python 编程语言中的 .strip() 方法
🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ Python 中的 strip() 方法:初学者友好指南 在 Python 中,strip() 是一个极为实用的字符串方法,主要用于移除字符串首尾的特定字符。默认情况下,它会清除…...
solr 远程命令执行 (CVE-2019-17558)
漏洞描述 Apache Velocity是一个基于Java的模板引擎,它提供了一个模板语言去引用由Java代码定义的对象。Velocity是Apache基金会旗下的一个开源软件项目,旨在确保Web应用程序在表示层和业务逻辑层之间的隔离(即MVC设计模式)。 Apa…...
【cocos creator】下拉框
https://download.csdn.net/download/K86338236/90038176 const { ccclass, property } cc._decorator;type DropDownOptionData {optionString?: string,optionSf?: cc.SpriteFrame } type DropDownItemData {label: cc.Label,sprite: cc.Sprite,toggle: cc.Toggle }cccl…...
从 Llama 1 到 3.1:Llama 模型架构演进详解
编者按: 面对 Llama 模型家族的持续更新,您是否想要了解它们之间的关键区别和实际性能表现?本文将探讨 Llama 系列模型的架构演变,梳理了 Llama 模型从 1.0 到 3.1 的完整演进历程,深入剖析了每个版本的技术创新&#…...
电话机器人的最佳应用
电话机器人的最佳应用 作者:开源呼叫中心系统 FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc 电话机器人在多个领域中都展现出了其独特的优势和广泛的应用前景。以下是对电话机器人最佳应用的详细归纳: 一、销售与营…...
[面试]-golang基础面试题总结
文章目录 panic 和 recover**注意事项**使用 pprof、trace 和 race 进行性能调试。**Go Module**:Go中new和make的区别 Channel什么是 Channel 的方向性?如何对 Channel 进行方向限制?Channel 的缓冲区大小对于 Channel 和 Goroutine 的通信有…...
Fakelocation Server服务器/专业版 ubuntu
前言:需要Ubuntu系统 Fakelocation开源文件系统需求 Ubuntu | Fakelocation | 任务一 任务一 更新Ubuntu(安装下载不再赘述) sudo -i # 提权 sudo apt update # 更新软件包列表 sudo apt upgrade # 升级已安装的软…...
Node.js的http模块:创建HTTP服务器、客户端示例
新书速览|Vue.jsNode.js全栈开发实战-CSDN博客 《Vue.jsNode.js全栈开发实战(第2版)(Web前端技术丛书)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 要使用http模块,只需要在文件中通过require(http)引入即可。…...
Jackson 对象与json数据互转工具类JacksonUtil
下面是一个基于 Jackson 的工具类 JacksonUtil,用于在 Java 项目中实现对象与 JSON 数据之间的互相转换。该工具类具有简洁、易用、通用的特点。 package com.fy.common.util;import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core…...
【ArcGISPro】根据yaml构建原始Pro的conda环境
使用场景 我们不小心把原始arcgispro-py3的conda环境破坏了,我们就可以使用以下方法进行修复 查找文件 在arcgis目录下找到yaml文件 如果没找到请复制以下内容到新的yaml文件 channels: - esri - defaults dependencies: - anyio=4.2.0=py311haa95532_0 - appdirs=1.4.4=p…...
对撞双指针(七)三数之和
15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组…...
反向代理服务器的用途
代理服务器在网络中扮演着重要的角色,它们可以优化流量、保护服务器以及提高安全性。在代理服务器中,反向代理服务器是一种特殊类型,常用于Web服务器前,它具备多种功能,能够确保网络流量的顺畅传输。那么,让…...
一些好的AI技术学习平台和资料(动态更新)
1. 大模型 1.1 提示词(Prompt) 目前,大模型技术已经深入到工作生活的方方面面,各技术大厂的大模型也层出不穷,从开始的OpenAI一家独大,到当今世界的“百模大战”。从一些日常使用的角度来说,模…...
wireshark抓包分析HTTP协议,HTTP协议执行流程,
「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 使用WireShark工具抓取「HTTP协议」的数据包&#…...
路由缓存后跳转到新路由时,上一路由中的tip信息框不销毁问题解决
上一路由tip信息框不销毁问题解决 路由缓存篇问题描述及截图解决思路关键代码 路由缓存篇 传送门 问题描述及截图 路由缓存后跳转新路由时,上一个路由的tip信息框没销毁。 解决思路 在全局路由守卫中获取DOM元素,通过css去控制 关键代码 修改文…...
【Angular】async详解
在 Angular 中,async 关键字用于定义异步函数,通常与 await 一起使用来处理 Promise。这使得异步代码看起来更像同步代码,从而更容易理解和维护。 基本用法 定义异步函数:使用 async 关键字。等待 Promise 解析:使用…...
springboot/ssm综合小区管理系统Java社区物业停车缴费系统web物业源码
springboot/ssm综合小区管理系统Java社区物业停车缴费系统web物业源码 基于springboot(可改ssm)htmlvue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&…...
【51单片机】程序实验56.独立按键-矩阵按键
主要参考学习资料:B站【普中官方】51单片机手把手教学视频 前置知识:C语言 单片机套装:普中STC51单片机开发板A4标准版套餐7 码字不易,求点赞收藏加关注(•ω•̥) 有问题欢迎评论区讨论~ 目录 独立按键按键介绍实验5 独立按键 矩…...
SAP 零售方案 CAR 系统的介绍与研究
前言 当今时代,零售业务是充满活力和活力的业务领域之一。每天,由于销售运营和客户行为,它都会生成大量数据。因此,公司迫切需要管理数据并从中检索见解。它将帮助公司朝着正确的方向发展他们的业务。 这就是为什么公司用来处理…...
2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略 完整参考论文(2)
5.2 问题一模型的建立与求解 5.2.1 分析发展情况 为了更好地理解数据的变化趋势,利用matlab通过六个子图对宠物行业中的关键变量进行了可视化展示。 图 1. 宠物数量变化展示了 猫数量、狗数量 和 总宠物数量 在 2019-2023 年间的变化趋势。结果显示:猫的数量呈逐年上升的趋…...
嵌入式的C/C++:深入理解 static、const 与 volatile 的用法与特点
目录 一、static 1、static 修饰局部变量 2、 static 修饰全局变量 3、static 修饰函数 4、static 修饰类成员 5、小结 二、const 1、const 修饰普通变量 2、const 修饰指针 3、const 修饰函数参数 4. const 修饰函数返回值 5. const 修饰类成员 6. const 与 #defi…...
【数据库设计】软件系统需要同时设计注册日志表和登录日志表吗
是的,通常情况下,注册日志表和登录日志表是分别设计的,分别记录不同类型的事件信息。 注册日志表 记录用户的注册信息、注册方式以及是否成功等内容。登录日志表 记录用户每次登录的时间、IP 地址、设备信息、登录状态等内容。 尽管这两者看…...
vim 一次注释多行 的几种方法
在 Vim 中一次注释多行是一个常见操作。可以使用以下方法根据你的具体需求选择合适的方式: 方法 1:手动插入注释符 进入正常模式: 按 Esc 确保进入正常模式。 选择需要注释的多行: 移动到第一行,按下 Ctrlv 进入可视块…...
手机无法连接服务器1302什么意思?
你有没有遇到过手机无法连接服务器,屏幕上显示“1302”这样的错误代码?尤其是在急需使用手机进行工作或联系朋友时,突然出现的连接问题无疑会带来不少麻烦。那么,什么是1302错误,它又意味着什么呢? 1302错…...
Git(一)基本使用
目录 一、使用git -v 查看安装git版本 二、使用mkdir 创建一个文件,并使用 git init 在该目录下创建一个本地仓库, 三、通过git clone命令接入线上仓库 四、使用git status查看仓库状态信息 五、利用echo写入一个文件 并使用cat进行查看 【Linux】e…...
sklearn中常用数据集简介
scikit-learn库中提供了包括分类、回归、聚类、降维等多种机器学习任务所需的常用数据集,方便进行实验和研究,它们主要被封装在sklearn.datasets中,本文对其中一些常用的数据集进行简单的介绍。 1.Iris(鸢尾花)数据集…...
LRU缓存
什么是LRU缓存? LRU(Least Recently Used)是最近最少使用算法,是操作系统中用于分页置换的算法,如果要向内存中添加分页,并且内存分页已满的情况下,就选出最近一段时间最不常用的分页进行置换(…...
.net6 使用 FreeSpire.XLS 实现 excel 转 pdf - docker 部署
FreeSpire.XLS && Aspose.Cells包都可以实现。实现过程中发现如下问题: 本地测试通过, docker部署服务器后报错: The type initializer for Spire.Xls.Core.Spreadsheet.XlsPageSetupBase threw an exception. 由于缺少依赖…...
HttpServletRequest req和前端的关系,req.getParameter详细解释,req.getParameter和前端的关系
HttpServletRequest 对象在后端和前端之间起到了桥梁的作用,它包含了来自客户端的所有请求信息。通过 HttpServletRequest 对象,后端可以获取前端发送的请求参数、请求头、请求方法等信息,并根据这些信息进行相应的处理。以下是对 HttpServle…...
[Python3] Sanic 框架构建高并发的 Web 服务
在 Python3 中使用 Sanic 框架来构建高并发的 Web 服务时,Sanic 因其异步和基于事件驱动的架构能够很好地处理高并发请求。下面是如何使用 Sanic 的一些要点和示例代码。 1. 安装 Sanic 首先确保你安装了 Sanic,可以通过以下命令安装: pip…...
5.5 W5500 TCP服务端与客户端
文章目录 1、TCP介绍2、W5500简介2.1 关键函数socketlistensendgetSn_RX_RSRrecv自动心跳包检测getSn_SR 1、TCP介绍 TCP 服务端: 创建套接字[socket]:服务器首先创建一个套接字,这是网络通信的端点。绑定套接字[bind]:服务器将…...
【Flutter】搭建Flutter开发环境,安卓开发
Flutter是谷歌开源的一个跨平台开发的框架,方便好用,这里以Windows 上构建 Flutter Android 应用为例,记录下我搭建环境时碰到的一些问题以及解决。 第一步:参考官网:开发 Android 应用 | Flutter 中文文档 - Flutter …...
【机器学习】——朴素贝叶斯模型
💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux…...
k8s rainbond centos7/win10 -20241124
参考 https://www.rainbond.com/ 国内一站式云原生平台 对centos7环境支持不太行 [lighthouseVM-16-5-centos ~]$ curl -o install.sh https://get.rainbond.com && bash ./install.sh 2024-11-24 09:56:57 ERROR: Ops! Docker daemon is not running. Start docke…...
ctfshow单身杯2024wp
文章目录 ctfshow单身杯2024wp签到好玩的PHPezzz_sstiez_inject ctfshow单身杯2024wp 签到好玩的PHP 考点:序列化反序列化 <?phperror_reporting(0);highlight_file(__FILE__);class ctfshow {private $d ;private $s ;private $b ;private $ctf ;public …...
深入解密 K 均值聚类:从理论基础到 Python 实践
1. 引言 在机器学习领域,聚类是一种无监督学习的技术,用于将数据集分组成若干个类别,使得同组数据之间具有更高的相似性。这种技术在各个领域都有广泛的应用,比如客户细分、图像压缩和市场分析等。聚类的目标是使得同类样本之间的…...
【代码pycharm】动手学深度学习v2-08 线性回归 + 基础优化算法
课程链接 线性回归的从零开始实现 import random import torch from d2l import torch as d2l# 人造数据集 def synthetic_data(w,b,num_examples):Xtorch.normal(0,1,(num_examples,len(w)))ytorch.matmul(X,w)bytorch.normal(0,0.01,y.shape) # 加入噪声return X,y.reshape…...
Python绘制太极八卦
文章目录 系列目录写在前面技术需求1. 图形绘制库的支持2. 图形绘制功能3. 参数化设计4. 绘制控制5. 数据处理6. 用户界面 完整代码代码分析1. rset() 函数2. offset() 函数3. taiji() 函数4. bagua() 函数5. 绘制过程6. 技术亮点 写在后面 系列目录 序号直达链接爱心系列1Pyth…...