快速对QWen2.5大模型进行微调

先看看训练结果:
在这里插入图片描述

目录

  • 前言
  • 什么是LLaMA-Factory?
  • 安装LLaMA-Factory
  • 准备数据集
  • 配置微调参数
  • 运行微调脚本
  • 评估和保存模型
  • 使用微调后的模型
  • 可视化微调大模型
  • 总结

前言

在当今人工智能领域,大模型(如LLaMA、GPT等)的微调已成为提升模型性能和适应特定任务的关键技术。LLaMA-Factory是一个强大的工具,可以帮助开发者高效地进行大模型的微调。本文将详细介绍如何使用LLaMA-Factory快速进行大模型的微调。

什么是LLaMA-Factory?

LLaMA-Factory是一个开源的工具集,旨在简化大模型的微调过程。它提供了丰富的功能和灵活的配置选项,使得即使是初学者也能轻松地进行模型微调。LLaMA-Factory支持多种大模型架构,并且集成了数据预处理、模型训练、评估和部署等功能。

安装LLaMA-Factory

首先,你需要安装LLaMA-Factory。你可以通过以下命令使用pip进行安装:

pip install llama-factory

确保你的环境中已经安装了必要的依赖项,如PyTorch和Transformers。

准备数据集

微调大模型的第一步是准备数据集。数据集应该包含输入和输出的配对,格式可以是JSON或CSV。以下是一个简单的JSON数据集示例:

[{"input": "你好,最近过的好吗?", "output": "我最近过得还好,谢谢关心。"},{"input": "你有几个孩子?", "output": "我有三个儿子和一个女儿。"}
]

将你的数据集保存为data.json文件。

配置微调参数

接下来,你需要配置微调参数。LLaMA-Factory提供了一个配置文件模板,你可以根据需要进行修改。以下是一个示例配置文件config.yaml:

model:name: "meta-llama/Llama-2-7b-hf"tokenizer: "meta-llama/Llama-2-7b-hf"data:train_file: "data.json"validation_file: "data.json"max_length: 512training:output_dir: "./results"learning_rate: 2e-5per_device_train_batch_size: 4per_device_eval_batch_size: 4num_train_epochs: 3weight_decay: 0.01evaluation_strategy: "epoch"

运行微调脚本

使用LLaMA-Factory提供的脚本进行微调。以下是一个示例脚本finetune.py:

from llama_factory import LLaMAFactory# 加载配置文件
config_path = "config.yaml"# 创建LLaMAFactory实例
factory = LLaMAFactory(config_path)# 进行微调
factory.finetune()

将上述脚本保存为finetune.py,然后运行它:

python finetune.py

评估和保存模型

微调完成后,你可以评估模型的性能,并保存微调后的模型。以下是一个示例脚本evaluate_and_save.py:

from llama_factory import LLaMAFactory# 加载配置文件
config_path = "config.yaml"# 创建LLaMAFactory实例
factory = LLaMAFactory(config_path)# 评估模型
factory.evaluate()# 保存模型
factory.save_model("./fine_tuned_llama")

将上述脚本保存为evaluate_and_save.py,然后运行它:

python evaluate_and_save.py

使用微调后的模型

加载并使用微调后的模型进行推理。以下是一个示例脚本inference.py:

from transformers import AutoModelForCausalLM, AutoTokenizermodel_name = "./fine_tuned_llama"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)prompt = "你好,最近过的好吗?"
messages = [{"role": "system", "content": "你是一个年过七旬的男性老人,性格内向,有三个儿子,一个女儿,他们经常不在身边"},{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)generated_ids = model.generate(**model_inputs,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)

将上述脚本保存为inference.py,然后运行它:

python inference.py

可视化微调大模型

运行下面命令,启动webui可视化页面:

 llamafactory-cli webui

会自动打开如下界面
在这里插入图片描述
选择需要微调的大模型和相应文件路径:
在这里插入图片描述
选择预先准备的数据集:
在这里插入图片描述
设置训练参数:
在这里插入图片描述
点击开始按钮,开始训练模型:
在这里插入图片描述
正在训练:
在这里插入图片描述
训练完成:
在这里插入图片描述
测试训练好的模型,选择之前训练好的模型,选择chat,提问一些测试问题:
在这里插入图片描述
在这里插入图片描述
可以看到大模型的生成的内容已经发生改变。

总结

通过本文的介绍,可以快速使用LLaMA-Factory进行大模型的微调。LLaMA-Factory提供了一套完整的工具和流程,使得微调过程更加简单和高效。希望这篇文章对你有所帮助,让你在大模型微调的道路上更加顺利!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解linux中的文件(下)

目录 一、语言级缓冲区和内核级缓冲区 二、C语音中的FILE* fp fopen(“./file.txt”,"w"): 四、理解磁盘结构: 物理结构 逻辑结构 五、未被打开的文件: 六、更加深入理解inode编号怎么找到文件: 七、对路径结构进行…

自动化测试、压力测试、持续集成

因为项目的原因,前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api。下面将研究的成果展示给大家,希望对需要的人有所帮助。 SoapUI 是什么? SoapUI 是一个开源测试工具,通过 soap/http 来检查、调用、实现 Web Service 的…

BUU28 [GXYCTF2019]BabySQli1

常规万能密码,发现登不上去 过滤掉了or,,当尝试了n种方法以后,最关键的是发现()居然也被过滤了 哈哈,那玩个淡, 再搜wp!! 当输入admin的时候,提示密码错误&#xff0…

Zenoh在工业物联网场景中的性能研究

论文标题 中文标题:Zenoh在工业物联网场景中的性能研究 英文标题:On the performance of Zenoh in Industrial IoT Scenarios 作者信息 Miguel Barn, Luis Diez, Mihail Zverev, Jos R. Jurez, Ramn Agero Miguel Barn:Ikerlan技术研究中心…

一次奇怪的空指针问题分析:事务、死锁与隐式回滚

最近我们在排查一个诡异的 空指针异常,整个分析过程可以说是跌宕起伏,最终的结论也颇具隐蔽性。今天就把这个问题分享出来,希望对大家有所帮助。 问题现象 在系统中,我们有 单据 B,它通过一个 关联 ID 字段与 上级单…

掌握API和控制点(从Java到JNI接口)_37 JNI开发与NDK 05

*.so的入口函数&#xff1a;JNI_OnLoad() 执行System.loadLibrary()函数时&#xff0c; VM会反向调用*.so里的JNI_OnLoad()函数。用途有二&#xff1a; 1. VM询问此*.so使用的JNI版本编号。 2. VM要求*.so做一些初期设定工作(Initialization)&#xff0c;例如登记<函…

MySQL数据库 (三)- 函数/约束/多表查询/事务

目录 一 函数 (一 字符串函数 (二 数值函数 (三 日期函数 (四 流程函数 二 约束 (一 概述 (二 约束演示 (三 外键约束 三 多表查询 (一 多表关系 1 一对多&#xff08;多对一&#xff09; 2 多对多 3 一对一 (二 多表查询概述 (三 内连接 1 查询语法 2 代码实…

EGO-Planner文章解读(一)——论文原理和算法实现

在fastplanner中&#xff0c;ESDF 对于评估梯度大小和方向至关重要。然而轨迹优化过程只覆盖了 ESDF 更新范围的非常有限的子空间&#xff0c;计算全图的ESDF是非常冗余的。除此之外&#xff0c;在建图的时候只能看见障碍物的表面&#xff0c;看不见障碍物的后面/内部&#xff…

C语言——深入理解指针(1)

深入理解指针 内存和地址内存究竟该如何理解编址呢&#xff1f; 指针变量和地址取地址操作符&#xff08;&&#xff09;指针变量和解引用操作符&#xff08;*&#xff09;指针变量如何拆解指针类型解引用操作符 指针变量的大小 指针变量类型的意义指针的解引用指针-整数voi…

人人皆可创建自己的AI应用:DigitalOcean GenAI平台正式上线

近日海外知名云平台DigitalOcean宣布&#xff0c;DigitalOcean GenAI 平台现已全面开放——这是一个强大且易用的解决方案&#xff0c;将彻底改变团队创建和部署人工智能应用的方式。 这一新平台延续了 DigitalOcean 普及 AI 开发的使命&#xff0c;让独立开发者到大型团队都能…

4.攻防世界 unseping

进入题目页面如下 直接给出源码&#xff0c;开始代码审计 <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;方便调试和查看代码结构 highlight_file(__FILE__);// 定义一个名为 ease 的类 class ease {// 定义私有属性 $method&#xff0c;用于存储要调用的方法名priv…

Llama最新开源大模型Llama3.1

Meta公司于2024年7月23日发布了最新的开源大模型Llama 3.1&#xff0c;这是其在大语言模型领域的重要进展。以下是关于Llama 3.1的详细介绍&#xff1a; 参数规模与训练数据 Llama 3.1拥有4050亿&#xff08;405B&#xff09;参数&#xff0c;是目前开源领域中参数规模最大的…

1-R语言概述

1.认识R语言 1.1 选择R语言的依据 免费的软件编程方便&#xff0c;语言灵活&#xff0c;图形功能强大优秀的内在帮助系统高质量、广泛的统计分析、数据挖掘平台国际上R语言已然是专业数据分析领域的标准 1.2 R的来源 ​ R是S语言的一种实现。S语言是由 AT&T贝尔实验室…

oracle ORA-27054报错处理

现象 在oracle执行expdp&#xff0c;rman备份&#xff0c;xtts的时候,由于没有足够的本地空间&#xff0c;只能使用到NFS的文件系统但有时候会出现如下报错 ORA-27054: NFS file system where the file is created or resides is not mounted with correct options根据提示信…

【数据结构】(6) LinkedList 链表

一、什么是链表 1、链表与顺序表对比 不同点LinkedListArrayList物理存储上不连续连续随机访问效率O(N)O(1&#xff09;插入、删除效率O(1)O(N) 3、链表的分类 链表根据结构分类&#xff0c;可分为单向/双向、无头结点/有头节点、非循环/循环链表&#xff0c;这三组每组各取…

.net8.0使用EF连接sqlite数据库及使用Gridify实现查询的简易实现

EF Core EF Core 是一个流行的对象关系映射&#xff08;ORM&#xff09;框架&#xff0c;它简化了与数据库的交互&#xff0c;提供了一个高效、灵活且易于使用的数据访问层。 Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技…

【FPGA】 MIPS 12条整数指令 【3】

实现乘除 修改框架 EX&#xff1a;实现带符号乘除法和无符号乘除法 HiLo寄存器&#xff1a;用于存放乘法和除法的运算结果。Hi、Lo为32bit寄存器。电路描述与实现RegFile思想一致 仿真 代码 DataMem.v include "define.v"; module DataMem(input wire clk,input…

【回溯+剪枝】单词搜索,你能用递归解决吗?

文章目录 79. 单词搜索解题思路&#xff1a;回溯&#xff08;深搜&#xff09; 剪枝 79. 单词搜索 79. 单词搜索 ​ 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 …

【蓝桥杯—单片机】第十届省赛真题代码题解题笔记 | 省赛 | 真题 | 代码题 | 刷题 | 笔记

第十届省赛真题代码部分 前言赛题代码思路笔记竞赛板配置内部振荡器频率设定键盘工作模式跳线扩展方式跳线连接频率测量功能的跳线帽 建立模板明确初始状态显示功能部分频率显示界面第一部分第二部分第三部分 电压显示界面第一部分第二部分第三部分 按键功能部分S4&#xff1a;…

使用DeepSeek的技巧笔记

来源&#xff1a;新年逼自己一把&#xff0c;学会使用DeepSeek R1_哔哩哔哩_bilibili 前言 对于DeepSeek而言&#xff0c;我们不再需要那么多的提示词技巧&#xff0c;但还是要有两个注意点&#xff1a;你需要理解大语言模型的工作原理与局限,这能帮助你更好的知道AI可完成任务…