【项目实战】基于 LLaMA-Factory 通过 LoRA 微调 Qwen2

news2024/11/18 9:29:37

【项目实战】基于 LLaMAFactory 通过 LoRA 微调 Qwen2

  • 一、项目介绍
  • 二、环境准备
    • 1、环境准备
    • 2、安装LLaMa-Factory
    • 3、准备模型数据集
      • 3.1 模型准备
      • 3.2 数据集准备
  • 三、微调
    • 1、启动webui
    • 2、选择参数
    • 3、训练
  • 四、测试
  • 五、总结

一、项目介绍

在这里插入图片描述

        LLaMA-Factory是一个由北京航空航天大学的郑耀威开发的开源框架,作为一个功能强大且高效的大模型微调框架,通过其用户友好的界面和丰富的功能特性,为开发者提供了极大的便利。
项目官网:https://www.llamafactory.cn/
Github:https://github.com/hiyouga/LLaMA-Factory


二、环境准备

1、环境准备

  • Python 3.10.9
  • NVIDIA GeForce GTX 1650
  • CUDA和cuDNN

2、安装LLaMa-Factory

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

        进入项目目录,安装必要的Python依赖库。可以使用以下命令:

cd LLaMA-Factory
pip install -e ".[torch,metrics]"
#截止2024.11.16,github拉取的最新版本的requirements.txt
transformers>=4.41.2,<=4.46.1
datasets>=2.16.0,<=3.1.0
accelerate>=0.34.0,<=1.0.1
peft>=0.11.1,<=0.12.0
trl>=0.8.6,<=0.9.6
gradio>=4.0.0,<5.0.0
pandas>=2.0.0
scipy
einops
sentencepiece
tiktoken
protobuf
uvicorn
pydantic
fastapi
sse-starlette
matplotlib>=3.7.0
fire
packaging
pyyaml
numpy<2.0.0
av

3、准备模型数据集

3.1 模型准备

        这里我们使用 Qwen2-0.5B 模型进行微调,首先下载模型,这里如果无法从Hugging Face上拉取的话,可以从国内模型库魔塔社区拉去,没有速度限制。

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('qwen/Qwen2-0.5B',cache_dir="model/Qwen")

3.2 数据集准备

        LLaMA-Factory 内置了一些数据集,本次就使用内置的 identity 数据集,用于修改模型的自我意识,数据集格式:

#文件地址 LLaMA-Factory-main\data\identity.json
{
    "instruction": "Who are you?",
    "input": "",
    "output": "I am {{name}} an AI assistant developed by {{author}}. How can I assist you today?"
  },
  {
    "instruction": "What is your name?",
    "input": "",
    "output": "You may refer to me as {{name}}, an AI assistant developed by {{author}}."
  },
  {
    "instruction": "Do you have a name?",
    "input": "",
    "output": "As an AI assistant developed by {{author}}, I got the name {{name}}."
  },

        对于这个数据集进行大量训练后,会修改模型的自我意识,比如修改前:我的名字是通义千问;修改后:我的名字是{{name}}。


三、微调

1、启动webui

        启动webui:llamafactory-cli webui,出现如下提示和页面表示启动成功:

(torch3) D:\AIProject\LLaMA-Factory-main>llamafactory-cli webui
Running on local URL:  http://0.0.0.0:7860

To create a public link, set `share=True` in `launch()`.

在这里插入图片描述


2、选择参数

        主要选择:模型、训练数据集、训练参数(此处不多介绍,按照下图选择)

在这里插入图片描述


3、训练

        点击训练,等待即可,训练结束后会出现训练完毕字样,并且会显示出Loss曲线。
在这里插入图片描述

模型训练过程

在这里插入图片描述


四、测试

        在模型训练完成后,可以通过Evaluate & Predict(通过评估数据集评估性能)、Chat(直接与模型对话)。此处选择后者,更直观的展示模型训练效果。
        模型依旧选择基座模型,检查点选择训练完模型保存的地址,点击加载模型,即可开始与模型对话。

在这里插入图片描述


五、总结

        本文章记录了LLaMA-Factory在本地的部署以及使用,从最后的测试效果发现训练的效果其实并不理想,不过初有成效,初步判断和数据集规模训练轮数以及参数配置等有关,后期将针对这些方面进行相应的调整,争取达到目标效果。

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

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

相关文章

内容占位符:Kinetic Loader HTML+CSS 使用CSS制作三角形原理

内容占位符 前言 随着我们对HTML和CSS3的学习逐渐深入&#xff0c;相信大家都已经掌握了网页制作的基础知识&#xff0c;包括如何使用HTML标记构建网页结构&#xff0c;以及如何运用CSS样式美化页面。为了进一步巩固和熟练这些技能&#xff0c;今天我们一起来完成一个有趣且实…

SpringSecurity 鉴权认证入门讲解

​ Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 ​ 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多&#xff0c;因为相比与Sp…

【插件】多断言 插件pytest-assume

背景 assert 断言一旦失败&#xff0c;后续的断言不能被执行 有个插件&#xff0c;pytest-assume的插件&#xff0c;可以提供多断言的方式 安装 pip3 install pytest-assume用法 pytest.assume(表达式,f’提示message’) pytest.assume(表达式,f‘提示message’) pytest.ass…

虾皮:LLM注意力机制的下沉现象分析

&#x1f4d6;标题&#xff1a;When Attention Sink Emerges in Language Models: An Empirical View &#x1f310;来源&#xff1a;arXiv, 2410.10781 &#x1f31f;摘要 &#x1f538;语言模型&#xff08;LM&#xff09;将大量注意力分配给第一个标记&#xff0c;即使它在…

MyBatis的select标签的resultType属性

在MyBatis框架中&#xff0c;映射文件中select标签的resultType属性&#xff0c;用于指定从数据库查询返回结果集需要映射的Java类型&#xff0c;即Mapper接口中方法返回值类型(或集合中的泛型类型)&#xff0c;可以是基本数据类型、基本数据类型的包装类型、自定义的PO类型、集…

ubuntu20.04如何升级python3.8到python3.10

主要参考了这两个链接&#xff1a; 如何在Ubuntu 20.04安装Python 3.10 | myfreaxhttps://www.myfreax.com/how-to-install-python-3-10-on-ubuntu-20-04/#:~:text%E5%9C%A8%E8%B0%83%E8%AF%95%E5%92%8C%E5%85%B6%E4%BB%96%E5%B7%A5%E5%85%B7%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%B…

AWTK-WIDGET-WEB-VIEW 发布

awtk-widget-web-view 是通过 webview 提供的接口&#xff0c;实现的 AWTK 自定义控件&#xff0c;使得 AWTK 可以方便的显示 web 页面。 项目网址&#xff1a; https://gitee.com/zlgopen/awtk-widget-web-view webview 提供了一个跨平台的 webview 接口&#xff0c;是一个非…

丹摩征文活动|FLUX.1+ComfyUI部署与使用

丹摩征文活动&#xff5c;FLUX.1ComfyUI部署与使用 1.引言 在人工智能飞速发展的今天&#xff0c;丹摩智算平台&#xff08;DAMODEL&#xff09;以其卓越的AI算力服务脱颖而出&#xff0c;为开发者提供了一个简化AI开发流程的强大工具。通过租赁GPU资源&#xff0c;丹摩智算平…

性能高于Transformer模型1.7-2倍,彩云科技发布基于DCFormer架构通用大模型云锦天章

2017年&#xff0c;谷歌发布《Attention Is All You Need》论文&#xff0c;首次提出Transformer架构&#xff0c;掀开了人工智能自然语言处理&#xff08;NLP&#xff09;领域发展的全新篇章。Transformer架构作为神经网络学习中最重要的架构&#xff0c;成为后来席卷全球的一…

【异常解决】Linux shell报错:-bash: [: ==: 期待一元表达式 解决方法

博主介绍&#xff1a;✌全网粉丝21W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

Linux解决普通用户无法使用sudo指令的问题

问题描述&#xff1a; Linux解决普通用户无法使用sudo指令的问题 sudo 指令是允许 普通用户 临时 以 超级用户 root 的权限运行。 普通用户如果没有配置而直接使用 sudo 指令&#xff1a;系统会提示没有权限&#xff08;如下图&#xff09; 使用sudo时系统提示&#xff08;当前…

9.1 使用haarcascade_frontalface_default.xml分类器对静态图像进行人脸检测。

1&#xff09;程序代码&#xff1a; # 1. 使用haarcascade_frontalface_default.xml分类器对静态图像进行人脸检测。 import cv2 import numpy as np # 构造级联分类器对象face_cascade cv2.CascadeClassifier(./data/haarcascades/haarcascade_frontalface_default.xml# ./…

【Mysql】Mysql函数----字符串函数

1、字符串函数 函数 描述 示例 CHAR_LENGTH(S) 返回字符串S的字符个数 返回字符串runoob的字符个数&…

(干货)Jenkins使用kubernetes插件连接k8s的认证方式

#Kubernetes插件简介 Kubernetes 插件的目的是能够使用 Kubernetes 配合&#xff0c;实现动态配置 Jenkins 代理&#xff08;使用 Kubernetes 调度机制来优化负载&#xff09;&#xff0c;在执行 Jenkins Job 构建时&#xff0c;Jenkins Master 会在 kubernetes 中创建一个 Sla…

微积分第五版课后习题答案详解PDF电子版 赵树嫄

(一) 习题解答与注释 该部分基本上对《微积分》(第五版) 中的习题给出了解答&#xff0c; 并结合教与学作了大量注释。通过这些注释&#xff0c; 读者可以深刻领会教材中基本概念的准确含义&#xff0c; 开阔解题思路&#xff0c; 掌握解题方法&#xff0c; 避免在容易发生错误…

【Linux庖丁解牛】—权限!

目录 1、shell命令以及运行原理 2、Linux中的用户及用户切换 3、sudo指令 ​编辑 4、角色与目标属性 5、修改权限 5.1修改文件属性(chmod) 5.2修改文件角色(chown/chgrp) 6、rwx对目录意味着什么 7、Linux中多用户之间的相互“隔离” 8、Linux中的缺省权限 ​编辑 9…

uniapp对接极光推送,实现消息推送功能

通过集成JG-JPush和JG-JCore插件&#xff0c;可以在应用中添加消息推送功能&#xff0c;向用户发送通知、消息等。这对于提升用户体验、增加用户粘性非常有帮助‌。 效果图&#xff1a; 一、登录极光官网 官网链接&#xff1a;portalhttps://www.jiguang.cn/console/#/home点…

【3D Slicer】的小白入门使用指南八

3D Slicer DMRI(Diffusion MRI)-扩散磁共振认识和使用 0、简介 大脑解剖 ● 白质约占大脑的 45% ● 有髓神经纤维(大约10微米轴突直径) 白质探索 朱尔斯约瑟夫德杰林(Jules Joseph Dejerine,《神经中心解剖学》(巴黎,1890-1901):基于髓磷脂染色标本的神经解剖图谱)…

IP数据云 识别和分析tor、proxy等各类型代理

在网络上使用代理&#xff08;tor、proxy、relay等&#xff09;进行访问的目的是为了规避网络的限制、隐藏真实身份或进行其他的不正当行为。 对代理进行识别和分析可以防止恶意攻击、监控和防御僵尸网络和提高防火墙效率等&#xff0c;同时也可以对用户行为进行分析&#xff…

GPU分布式通信技术-PCle、NVLink、NVSwitch深度解析

GPU分布式通信技术-PCle、NVLink、NVSwitch 大模型时代已到来&#xff0c;成为AI核心驱动力。然而&#xff0c;训练大模型却面临巨大挑战&#xff1a;庞大的GPU资源需求和漫长的学习过程。 要实现跨多个 GPU 的模型训练&#xff0c;需要使用分布式通信和 NVLink。此外&#xf…