微调Qwen2大语言模型加入领域知识

news2024/9/24 19:26:04

这里写自定义目录标题

  • 试用Qwen2做推理
  • 安装LLaMA-Factory
  • 使用自有数据集微调Qwen2
  • 验证微调效果

试用Qwen2做推理

参考:https://qwen.readthedocs.io/en/latest/getting_started/quickstart.html

from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # the device to load the model onto

# Now you do not need to add "trust_remote_code=True"
model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen2-7B-Instruct",
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-7B-Instruct")

# Instead of using model.chat(), we directly use model.generate()
# But you need to use tokenizer.apply_chat_template() to format your inputs as shown below
prompt = "Give me a short introduction to large language model."
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)

# Directly use generate() and tokenizer.decode() to get the output.
# Use `max_new_tokens` to control the maximum output length.
generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=512
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)

执行此操作后模型会缓存到如下目录
/root/.cache/huggingface/hub/models–Qwen–Qwen2-7B-Instruct/

安装LLaMA-Factory

参考:https://github.com/hiyouga/LLaMA-Factory

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

使用自有数据集微调Qwen2

参考:https://qwen.readthedocs.io/en/latest/training/SFT/llama_factory.html

启动web ui 界面来进行微调

llamafactory-cli webui

在这里插入图片描述
数据集选择提前准备好的自有数据集
按照自己需求配置训练参数,所有的参数都配置好之后,点一下“预览命令”,确认命令没有问题之后,就可以点击“开始”进行训练了。训练的过程中可以看到 loss的变化曲线、训练耗时等。

参考:https://blog.csdn.net/u012505617/article/details/137864437

验证微调效果

在webui 界面训练好模型之后点击“Export”选项卡,然后,在“模型路径”中输入原始模型路径,然后在“检查点路径”中选择自己微调得到的 checkpoint路径,然后在“最大分块大小(GB)”中设置为4,同时设置一下导出目录,最后点击“开始导出”,就可以看到输出的模型了

本地部署模型,并做推理测试
参考:https://qwen.readthedocs.io/en/latest/run_locally/llama.cpp.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1915113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

短视频矩阵系统多账号搭建技术源码(saas开发者技术独立搭建)

在构建云服务环境以部署虚拟机方面,以Amazon Web Services(AWS)为示例,需采购并配置适当数量的EC2实例以及相关网络设施。 接下来,根据业务需求,应创建多个社交媒体平台如抖音和快手的官方账户,…

便宜SSL证书有哪些平台推荐 域名SSL证书作用

在数字化时代,网络安全已成为我们日常生活和工作中不可或缺的一部分。 申请便宜SSL证书步骤 1、登录来此加密网站,输入域名,可以勾选泛域名和包含根域。 2、选择加密方式,一般选择默认就可以了,也可以自定义CSR。 3…

css 自定义变量 var()

现在新版本的UI框架,基本使用CSS变量 css的一个函数:var(),此函数在有些场景下能优化不少代码量。 var() 介绍 借用下W3C的定义: var() 函数用于插入自定义的属性值,如果一个属性值在多处被使用,该方法就…

MySQL--函数、约束、多表查询

函数 函数指一段可以直接被另一段程序调用的程序或代码 字符串函数、数值函数、日期函数、流程函数 字符串函数 数值函数 日期函数 datediff(date1,date2):date1-date2 流程函数 约束 概念:约束是作用于表中字段上的规则&…

半导体硅太阳能电池基板的湿化学处理及电子界面特性

硅(Si)在半导体器件制造中的大多数技术应用都是基于这种材料的特定界面性能。二氧化硅(二氧化硅)可以通过简单的氧化方法在硅表面制备,其特点是高化学和电稳定性。晶体硅在光伏应用占主导地位,全球近90%的太阳能电池生产是基于多晶…

携手并进 共创未来丨东软睿驰与中国移动上海产业研究院达成战略合作

2024年7月10日,东软睿驰与中国移动上海产业研究院(以下简称“上研院”)在沈阳隆重举行战略合作签约仪式。东软睿驰董事长兼CEO王勇峰、高级副总裁邢志刚与上研院董事长王建中、副总经理黄刚等领导出席签约仪式。 图为东软睿驰与上研院战略合作签约仪式现场 东软睿驰…

新手小白的pytorch学习第一弹-------张量

1 导入pytorch包 import torch2 创建张量(tensor) scalar标量 scalar torch.tensor(7) scalartensor(7)scalar.ndim查看scalar的维度,因为scalar是标量,所以维度为0 0scalar.shapetorch.Size([])torch.item()7vector&#xf…

Qt http网络编程

学习目标:Qt HTTP网络编程 学习内容 1、Http就是超文本传输协议(Hypertext Transfer Protocol)的缩写,它定义了浏览器和网页服务器之间的通信规范。是一个简单的请求一响应协议,它通常运行在 TCP 之上。 作用:规定 WWW 服务器与浏览器之间信息传递规范…

【卡尔曼滤波器】DR_CAN 2 学习笔记:_数据融合_协方差矩阵_状态空间方程_观测器问题

【卡尔曼滤波器】2_数学基础_数据融合_协方差矩阵_状态空间方程_观测器问题 非常重要1 数据融合 data fusion 有俩秤,各自有自己的正态分布:俩秤是相互独立的:俩秤都不准,但标准差都符合正态分布 正态分布又叫做高斯分布 向左、向右 都是2, 标准差是2覆盖了68.4 %的可能:…

Oracle RMAN增量备份

1、查询哪部分的增量 sql>set line 500 pages 0 sql>select sequence#,applied,first_change#||,next_change#||,to_char(completion_time,yyyy-mm-dd hh24:MI:SS) from v$archived_log where completion_time>sysdate-1; 2、rman备份(并行保存到指定路径) run{all…

GitLab CI/CD实现项目自动化部署

1 GitLab CI/CD介绍 GitLab CI/CD 是 GitLab 中集成的一套用于软件开发的持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)工具。这套系统允许开发团队…

org.springframework.boot.autoconfigure.EnableAutoConfiguration=XXXXX的作用是什么?

org.springframework.boot.autoconfigure.EnableAutoConfigurationXXXXXXX 这一配置项在 Spring Boot 项目中的作用如下: 自动配置类的指定: 这一配置将 EnableAutoConfiguration 设置为 cn.geek.javadatamanage.config.DataManageAutoConfiguration&…

react学习——25redux实现求和案例(完整版)

1、目录结构 2、count/index.js import React, {Component} from "react"; //引入store,用于获取数据 import store from ../../redux/store //引入actionCreator 专门创建action对象 import {createDecrementAction,createIncrementAction} from ../../redux/coun…

Linux基础知识(十六)shell脚本编程

一、简介 用户通过shell向计算机发送指令计算机通过shell给用户返回指令的执行结果 1.1 通过shell编程可以达到的效果 提高工作效率可以实现自动化 1.2 需要学习的内容 Linuxshell的语法规范 1.3 编写shell的流程 第一步:用vi/vim创建一个.sh的文件第二步&am…

利用原生JavaScript实现匹配搜索结果的网页内容高亮

昨天在用Anki的时候,复习笔记时想在笔记的解析里快速查找内容,于是探索了一下将匹配的搜索结果高亮。开始想不用第三方库直接实现,结果匹配的文本被HTML标签隔断时不能成功匹配,后来用到了jquery的mark.js库才简单实现。事后我想看…

vue中v-if与v-show的区别

在 Vue.js 中,v-if 和 v-show 都是用来控制元素显示与隐藏的指令,但它们之间有几个关键的区别: 直接上图 一. 条件渲染方式不同 v-if: 真正的条件渲染:v-if 指令会根据表达式的真假来销毁或重新创建 DOM 元素及其…

拟合衰减振动模型,估算阻尼比和阻尼系数

拟合衰减振动模型,估算阻尼比和阻尼系数 flyfish 衰减振动模型 在自由振动系统中,阻尼振动可以用以下公式描述: x ( t ) x 0 e − ζ ω n t cos ⁡ ( ω d t ϕ ) x(t) x_0 e^{-\zeta \omega_n t} \cos(\omega_d t \phi) x(t)x0​e−…

数据结构与算法-动态规划-三角形最小路径和

三角形最小路径和 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说,如果正位于当前行的下标 i &…

JUC并发编程-05:线程高级部分-源码解读

线程高级部分-源码解读 多线程高并发底层锁机制与优化最佳实践深入JDK源码理解LongAdder的分段CAS优化机制 公平锁和非公平锁原理解析 多线程高并发底层锁机制与优化最佳实践 深入JDK源码理解LongAdder的分段CAS优化机制 多个线程进入,为了防止空转,所…

Android11 窗口动画

窗口进入动画 应用端窗口绘制完成之后,调用finshDraw告知WMS,WMS这边最后就会调用WindowSurfacePlacer的performSurfacePlacement方法,最终调用到 WindowStateAnimator的commitFinishDrawingLocked方法 //frameworks/base/services/core/jav…