LLaMA Factory微调Llama3模型

news2024/11/13 8:28:44


LLaMA Factory是一款开源低代码大模型微调框架,集成了业界最广泛使用的微调技术,支持通过Web UI界面零代码微调大模型,目前已经成为开源社区内最受欢迎的微调框架。

  • 💥GPU推荐使用24GB显存的A10(ecs.gn7i-c8g1.2xlarge)或更高配置
  • 💥镜像选择DSW官方镜像modelscope:1.14.0-pytorch2.1.2-gpu-py310-cu121-ubuntu22.04

我们来微调llama3-8B模型尝试一下 

安装LLaMA Factory 

💢拉取LLaMA-Factory项目

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

#
正克隆到 'LLaMA-Factory'...
remote: Enumerating objects: 298, done.
remote: Counting objects: 100% (298/298), done.
remote: Compressing objects: 100% (218/218), done.
remote: Total 298 (delta 76), reused 204 (delta 67), pack-reused 0 (from 0)
接收对象中: 100% (298/298), 7.85 MiB | 5.21 MiB/s, 完成.
处理 delta 中: 100% (76/76), 完成.

 💢然后安装LLaMA-Factory依赖环境。

pip uninstall -y vllm
pip install llamafactory[metrics]==0.7.1
pip install accelerate==0.30.1

安装后输入llamafactory-cli version检查一下是否安装成功:

llamafactory-cli version
#
----------------------------------------------------------
| Welcome to LLaMA Factory, version 0.7.1                |
|                                                        |
| Project page: https://github.com/hiyouga/LLaMA-Factory |
----------------------------------------------------------

LLaMA-Factory项目内置了丰富的数据集,放在了data目录下,我们也可以准备自定义数据集,将数据处理为框架特定的格式,放在data下,并且修改dataset_info.json文件。

我们看一下官方给出的格式:

Alpaca 格式

[
  {
    "instruction": "人类指令(必填)",
    "input": "人类输入(选填)",
    "output": "模型回答(必填)",
    "system": "系统提示词(选填)",
    "history": [
      ["第一轮指令(选填)", "第一轮回答(选填)"],
      ["第二轮指令(选填)", "第二轮回答(选填)"]
    ]
  }
]

 💫对于上述格式的数据,dataset_info.json 中的数据集描述应为:

"数据集名称": {
  "file_name": "data.json",
  "columns": {
    "prompt": "instruction",
    "query": "input",
    "response": "output",
    "system": "system",
    "history": "history"
  }
}

我们去官方寻找一份数据集来下载(notebook运行):

%cd LLaMA-Factory
!wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama_factory/data.zip
!mv data rawdata && unzip data.zip -d data

数据:

[
{
    "conversations": [
      {
        "from": "human",
        "value": "模仿西游记的孙悟空的语气和我聊天。如果你把水冻住,你会得到什么?"
      },
      {
        "from": "gpt",
        "value": "哈哈,这问题还难倒俺老孙吗?把水冻住就是变成冰啦!不过若是在取经的路上用得着这冰来做啥,比如过火焰山时,那可就是解渴消暑的好东西了!你觉得呢?还有没有更有趣的问题让俺老孙来解答?"
      },
      {
        "from": "human",
        "value": "那怎么做才可以把水冻住"
      },
      {
        "from": "gpt",
        "value": "哈哈,对俺老孙来说,这可是轻而易举的事情!只需将水放在凉快的地方,或者使用法力,一吹仙气,水便能迅速结冰啦!当然,在你的世界里,把水放进冰箱的冷冻室里等一阵子,水就会变成冰块了。要是嫌慢,可以尝试用点干冰或液氮什么的,不过得小心使用哈!毕竟不像俺老孙有抗寒法力。"
      }
    ]
}
]

模型微调

我们不光可以通过命令行进行微调,还可以启动一个webui来微调推理

!export USE_MODELSCOPE_HUB=1 && \
llamafactory-cli webui
  • USE_MODELSCOPE_HUB设为1,表示模型来源是ModelScope


 然后就进入到了web界面:

数据集使用上述下载的train.json,点击「预览数据集」可以预览一下数据 

设置学习率为1e-4,梯度累积为2,有利于模型拟合,其他的可以按需调整;

将输出目录修改为train_llama3,训练后的LoRA权重将会保存在此目录中。点击「预览命令」可展示所有已配置的参数,点击「开始」启动模型微调!

选择「Evaluate&Predict」栏,在数据集下拉列表中选择「eval」(验证集)评估模型。

点击开始然后开始评估模型,大概三分钟,这里跳过。。。

选择「Chat」栏,确保适配器路径是train_llama3,点击「加载模型」即可在Web UI中和微调模型进行对话。 

模型微调之前的对话:

微调之后:

 

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

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

相关文章

Stable Diffusion【XL Lora】效果太赞了!AI助力服装设计,让服装拆分设计就是这么高效

今天带了一款 非常适合服装设计的SD XL Lora模型——【服装拆分】绪儿 分类背景 XUER,该模型是由绪儿大佬炼制,非常适合饰品服装分类背景。绪儿大佬其实推出了很多非常棒的模型,比如之前非常受大家喜欢的敦煌飞天、超梦幻场景等模型。 那么我…

如何区分住宅代理与数据中心代理?

随着代理市场的蓬勃发展,不同类型的代理服务应运而生,其中住宅代理与数据中心代理尤为常见。如何区分住宅代理与数据中心代理,成为了诸多用户面临的难题,本文将与大家详细探讨如何区分这二种代理。 首先,我们来看住宅代…

【解压即玩】使命召唤 系列-2,回味经典

《使命召唤2》(英语:Call of Duty 2,香港和台湾译作“决胜时刻2”)于2005年推出,游戏提供了苏军、英军、美军三大阵营的战役,重现了二战中的经典战役,例如莫斯科保卫战、斯大林格勒保卫战、诺曼…

VTK随笔五:VTK数据的读写

VTK应用程序所需的数据可以通过两种途径获取:第一种是生成模型,然后处理这些模型数据(如由类 vtkCylinderSource 生成的多边形数据);第二种是从外部存储介质里导入相关的数据文件,然后在应用程序中处理这些读入的数据(如vkBMPRead…

三网话费充值api接口有哪些优势?你了解多少?

一、话费充值 API 接口定义 话费充值 API 接口是一种专门为实现话费充值业务而设计的接口。通过接入该接口,个人或企业可以搭建话费充值平台,其界面展示与官方平台充值页面相似,可自动配置充值范围并支持三大运营商话费充值。 二、话费接口…

专业版SSL证书:强化网站安全的首选

专业版SSL证书,专为追求极致网站安全的企业设计。它不仅提供高强度的加密保护,有效防止数据在传输过程中被窃取或篡改,还通过严格的身份验证流程,向访客展示网站的真实身份。其独特的绿色地址栏或公司名显示功能,显著增…

打手机检测算法源码样本展示打手机检测算法实际应用场景介绍

打手机检测算法是一种利用计算机视觉技术来监测和识别人们在特定区域如驾驶舱、考场或其他敏感区域非法使用手机的行为。这种算法对于提高安全性和确保规则的遵守具有重要意义。以下是关于打手机检测算法源码及其实际应用的详细阐述: 1. 算法实现 - 深度学习框架&a…

探秘小米SU7亏损背后的真相:雷军的战略布局与汽车行业的逆袭

近日,小米发布了史上最佳单季财报,营收达到了889亿元,同比增长20.1%。然而,小米汽车业务的亏损依然引发了广泛关注。特别是,小米SU7每卖一辆亏损约6万元,但雷军对此却显得非常淡定甚至乐观。这背后究竟隐藏…

Leetcode面试经典150题-72.编辑距离

解法都在代码里,不懂就留言或者私信 动态规划最经典题之一,如果写不出来,动态规划好好再学学 class Solution {/**这个题是动态规划最经典的题,另一个最经典的是背包问题 */public int minDistance(String word1, String word2)…

解读vue3源码-响应式篇3 effect副作用函数

提示:看到我 请让我滚去学习 文章目录 前言effect问题拓展分支切换与 cleanup嵌套的 effect 与 effect 栈解决在副作用函数中同时读取和操作同一属性时无限循环 effect函数实现computed-api 实现图解在这里插入图片描述 总结 前言 什么是副作用函数? 在…

使用 Python 进行时间序列特征提取,从理论到实践

以下是提取时间序列分析特征时需要了解的所有内容 时间序列是一种特殊的动物。欢迎来到雲闪世界。 当我开始我的机器学习职业生涯时,我这样做是因为我喜欢物理(开始机器学习的奇怪原因),并且从物理学中我了解到我也非常喜欢编码…

构建技术故障应急响应机制:开发团队的全面策略

构建技术故障应急响应机制:开发团队的全面策略 前言一、快速响应与问题定位实时监控与预警日志管理与分析分布式追踪紧急响应机制 二、预案与备份机制应急预案制定应急演练数据备份与恢复冗余部署与负载均衡 三、事后总结与持续改进全面复盘成果转化与实施持续改进机…

Prompt + 工作流组件 = AI智能体:开启智能化新时代

在这个信息爆炸的时代,人工智能(AI)正以前所未有的速度改变着我们的生活和工作方式。随着技术的不断进步,AI的应用场景也在不断扩展。而在这一过程中,Prompt和工作流组件的结合,正是构建AI智能体的关键所在…

Android中apk安装过程源码解析

本文中使用的Android源码基于Android 14 1 三方应用安装apk调用方法 public void installApk() {Intent intent new Intent(Intent.ACTION_VIEW);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);/** 自Android N开始,是通过FileProvider共享相关文件&#xff0…

NTU发布即插即用的嵌入式SLAM新SOTA!

导读: 当前的SLAM技术正逐渐向轻量化和高效化发展,在保证定位精度的同时,研究者们越来越倾向于简化冗余的框架,以在效率和性能之间找到最佳平衡点。 一个优秀的SLAM系统不仅需要提供精确的定位数据,还必须能够在不同平…

【PyQt】切换界面的实现

前言一、介绍二、代码2.1 QStackedWidget2.1.1 代码2.1.2 运行结果展示 2.2 QTabWidget2.2.1 代码2.2.2 运行结果展示 2.3 QDockWidget2.3.1 代码2.3.2 运行结果展示 PULSE结果 总结 前言 实现几个界面的切换展示的效果。 一、介绍 在 PyQt 中实现一个主界面包含其他子界面的…

#mark# ViteSvgIconsPlugin svgoOptions选项

svgoOptions 设置为false时 , 矢量svg图标 stroke线条不正常 找了半天 哪影响的 , 线条异常图如下 svgoOptions 改为true后 ,显示正常了

并查集优化策略及其正确性证明:基于路径压缩与按秩合并

并查集优化策略及其正确性证明:基于路径压缩与按秩合并 前言优化策略算法伪代码C语言实现归纳法证明基础情况归纳步骤结论前言 引理:对于所有的结点x, 有 x.rank≤x.p.rank, 如 果x≠x.p, 则此式是严格不等 式。x.rank 的初始值为0,并且随时间而增加,直到x≠x.p; 从此以后,…

安卓13 背光反向 亮度反向 android13 backlight reverse

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3.代码分析 4.代码修改 5.彩蛋 1.前言 有些设备,在调整背光的时候,会发现,背光调大,显示亮度反而变暗,背光调小,亮度变亮。这是由于PWM背光本身并没有一个标准去决定怎么样算是高亮度,怎么算是低亮度。因…

C语言-02 算法-程序的灵魂

算法-程序的灵魂 1、程序=算法数据结构2、什么是算法3、简单的算法举例4、算法的特性5、怎样表示一个算法5.1 用自然语言表示算法5.2 用流程图表示算法5.3 三种基本结构和改进的流程图5.4 用N-S流程图表示算法5.5 用伪代码表示算法5.6 用计算机语言表示算法 6、结构…