新手教程之使用LLaMa-Factory微调LLaMa3

文章目录

  • 为什么要用LLaMa-Factory
  • 什么是LLaMa-Factory
  • LLaMa-Factory环境搭建
  • 微调LLaMA3
  • 参考博文

为什么要用LLaMa-Factory

如果你尝试过微调大模型,你就会知道,大模型的环境配置是非常繁琐的,需要安装大量的第三方库和依赖,甚至需要接入一些框架。
但是大模型微调的方法又是非常类似的,那有没有一种工具可以统一这些操作,让大模型微调变成一个简单易上手的事情,LLaMa-Factory就是为了解决这个问题应运而生


什么是LLaMa-Factory

本来不想说这么多废话的,想来想去还是简单介绍一下,也加深自己的了解:
LLaMA Factory是一款支持多种LLM微调方式的工具,包括预训练、指令监督微调和奖励模型训练等。它支持LoRA和QLoRA微调策略,广泛集成了业界前沿的微调方法。特点在于支持多种LLM模型,提供了WebUI页面,使非开发人员也能方便进行微调工作。
代码地址:LLaMA-Factory


LLaMa-Factory环境搭建

  1. 克隆项目
git clone https://github.com/hiyouga/LLaMA-Factory.git
  1. 创建环境
conda create -n llama_factory python=3.10
conda activate llama_factory
  1. 安装依赖
cd LLaMA-Factory
pip install -e .[torch,metrics]
  1. 启动web UI界面
export CUDA_VISIBLE_DEVICES=0
python src/webui.py

启动成功之后,游览器会打开如下界面:
在这里插入图片描述


微调LLaMA3

  1. 准备模型

方法一:克隆我们要微调的模型到本地,然后将在web UI界面填入我们的模型名称和本地的模型地址

git clone https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git

方法二:直接去魔塔Meta-Llama-3-8B-Instruct地址复制对应的文件名和路径,微调时,程序会自动​去魔搭下载模型!
(这个方法小编浅浅试了一下,没成功,还是下载到本地靠谱)
在这里插入图片描述

  1. 准备数据集

LLaMA-Factory项目内置了丰富的数据集,统一存储于data目录下。
如果你想基于自己的数据集微调,你需要
(1)将你的数据集也放到data目录下
注意:你需要将你的数据集改为一样的格式,具体可参考data下内置数据集的格式
这里提供一个小编基于LooksJuicy/ruozhiba数据集改好的一个数据集:

https://pan.baidu.com/s/1FYYlBIXWy697xdagrHiIeg
提取码:2333

(2)修改data下的dataset_info.json文件,添加如下内容:
其中my_data.json是我自己的数据集文件,my_data是对应的数据集文件名

"my_data": {"file_name": "my_data.json"},

添加到第一层大括号内的第一个元素前,也就是identity前面

  1. 微调

这里我直接通过web ui界面进行微调
在这里插入图片描述

训练需要二十分钟左右,训练完成之后,会出现下述界面:
左下角会显示训练完毕,右边会出现训练过程中损失变化的一个可视化

在这里插入图片描述

  1. 与微调之后的模型对话

在这里插入图片描述
这样看来,使用LLaMa-Factory微调确实很简单方便!!!


参考博文

  • 在Ubuntu上安装部署LLaMA-Factory,及微调大模型测试
  • 使用LLaMA Factory微调LlaMA 3模型
  • llama3 微调教程之 llama factory 的 安装部署与模型微调过程,模型量化和gguf转换
  • 动手微调Llama3!纯本地+手把手!ORPO偏好微调,数据集工具指南!base到chat模型微调方案!day01
  • Llama3 中文版模型微调笔记,小白也能学会

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

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

相关文章

Kotlin协程中的作用域 `GlobalScope`、`lifecycleScope` 和 `viewModelScope`

Kotlin协程中的作用域 Kotlin协程提供了多种作用域来管理协程的生命周期,其中最常见的是 GlobalScope、lifecycleScope 和 viewModelScope。 1. GlobalScope GlobalScope 是一个全局作用域,不受任何其他生命周期的限制。这意味着在 GlobalScope 中启动…

【数据结构与算法 经典例题】链表的回文结构(图文详解)

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路 三、C语言代码实现 一、问题描述 二、解…

Flutter 中的 Table 小部件:全面指南

Flutter 中的 Table 小部件:全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架,它允许开发者使用 Dart 语言构建高性能、美观的应用。在 Flutter 的丰富组件库中,Table 是一个用于创建表格布局的组件。本文将为您提供一个全面的指南&a…

zdppy_api如何实现带参数的中间件

参考代码 import timefrom api.middleware import Middleware from api.middleware.base import BaseHTTPMiddleware from api.exceptions import AuthException import jwthas_logger False try:from log import loggerhas_logger True except:passdef roleapi(has_auth_fu…

深度学习-07-反向传播的自动化

深度学习-07-反向传播的自动化 本文是《深度学习入门2-自製框架》 的学习笔记,记录自己学习心得,以及对重点知识的理解。如果内容对你有帮助,请支持正版,去购买正版书籍,支持正版书籍不仅是尊重作者的辛勤劳动&#xf…

OJ题目【栈和队列】

题目导入 栈: 题目一:有效的括号题目二:用栈实现队列 队列 题目:实现循环队列 栈 题目一 有效的括号 题目要求 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘…

LeetCode746使用最小花费爬楼梯

题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。 解析 动态…

负载均衡加权轮询算法

随机数加权轮询算法 public int select() {int[] weights {10, 20, 50};int totalWeight weights[0] weights[1] weights[2];// 取随机数int offset ThreadLocalRandom.current().nextInt(totalWeight);for (int i 0; i < weights.length; i) {offset - weights[i];i…

七校联赛题铅笔姿态及笔迹检测装置--mpu6050识别数字

前言 前几天打完比赛&#xff0c;收获还是挺大的&#xff0c;数字识别部分基本上浪费了绝大部分时间。先将思路简单说明。 1、题目 2、思路 针对笔迹检测&#xff0c;我们首先考虑的肯定是陀螺仪来测量加速度方向来判断书写的方向&#xff0c;从而得到书写的数字。 我们的方案…

LLM的基础模型3:Transformer变种

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则提…

【软件测试】自动化测试如何管理测试数据

前言 在之前的自动化测试框架相关文章中&#xff0c;无论是接口自动化还是UI自动化&#xff0c;都谈及data模块和config模块&#xff0c;也就是测试数据和配置文件。 随着自动化用例的不断增加&#xff0c;需要维护的测试数据也会越来越多&#xff0c;维护成本越来越高&#…

编译 freetype、sdl、sdl_ttf

/* * three lib */ /* 字符串生成位图 */ http://www.libsdl.org/projects/SDL_ttf/release/ http://www.libsdl.org/download-1.2.php https://freetype.org/ /* Freetype 2.13.0 */ ./configure CCaarch64-v01c01-linux-gnu-gcc --buildaarch64 …

一个简约而不简单的记账 App(一刻记账)

前言 在两年多前, 我曾经写过一个本地化的记账 App, 当时没有想过以后的发展. 全程是本地化的, 当时主要是为了练习 Compose 而写的. TallyApp 而现在一个完整的记账 App 它来了 一刻记账 算是圆了我两年前的梦了吧. 也让我可以真正的使用自己的记账软件. 下面是 一刻记账 记…

C++实现简单的线程池

最近在学习音视频的时候&#xff0c;解封装和解码的时候用到了多线程。于是把线程池的知识补了一下。 线程池的这个知识点有会涉及到锁&#xff0c;生产者消费者设计模式&#xff0c;纯虚函数继承等知识。在学习的时候可以根据知识点扩展延伸。 楼主在学习线程池这部分的时候没…

10 -力扣高频 SQL 50 题(基础版)

10 - 每台机器的进程平均运行时间 -- sum(if(activity_type end,timestamp ,-timestamp )) -- 如果activity_type为“end”,值为timestamp&#xff0c;为“start” 为-timestamp&#xff0c;所有数相加end-start -- count(distinct process_id),获取同一机器有几个进行id -- r…

鸿蒙HarmonyOS实战—如何使用Video组件播放视频

1.视频播放 鸿蒙系统中&#xff0c;关于视频播放&#xff0c;可以使用上层视频组件Video。 参数如下 src 支持file:///data/storage路径前缀的字符串&#xff0c;用于读取应用沙箱路径内的资源。需要保证目录包路径下的文件有可读权限。 说明&#xff1a;视频支持的格式是&am…

为何限定项目的 Node.js 版本

首先区分三个概念nvm&#xff0c;npm&#xff0c;nodejs。 Node.js: Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。它允许开发者使用 JavaScript 在服务器端编写应用程序,而不仅限于在浏览器中运行 JavaScript。Node.js 提供了一系列内置的模块和 API,使得开发…

Python中数字比较与获取较大值的深入解析

目录 一、引言 二、Python数字类型概述 三、数字比较操作符 四、获取较大值的逻辑与实现 五、高级话题&#xff1a;使用内置函数和库 六、性能分析与优化 七、案例分析 八、总结与展望 一、引言 在编程世界中&#xff0c;数字的比较和获取较大值是基础且常见的操作。P…

Java 获取和修改期日与时间的各种操作方法

LocalDateTime获取当地日期和时间 import java.time.LocalDateTime; /*LocalDateTime.now() 获取当前时间*/ public class LocalDateTimeDemo {public static void main(String[] args) {LocalDateTime time1 LocalDateTime.now();System.out.println(time1);//2024-06-01T13…

【python】flask相关包依赖关系问题

【背景】 做flask项目时&#xff0c;由于涉及多个包&#xff0c;比如flask&#xff0c;flask-wtf&#xff0c;werkqeug等&#xff0c;不同版本情况下&#xff0c;互相依赖关系的确实会导致报错。比如报某个依赖无法从flask的相关包中导入等。 【解决办法】 实测可用版本搭配…