免费微调自己的大模型(llama-factory微调llama3.1-8b)

目录

    • 1. 名词/工具解释
    • 2. 微调过程
    • 3. 总结

本文主要介绍通过llama-factory框架,使用Lora微调方法,微调meta开源的llama3.1-8b模型,平台使用的是趋动云GPU算力资源。
微调已经经过预训练的大模型目的是,通过调整模型参数和不断优化学习,使模型更专门于特定领域或任务。
为简化并方便展示训练效果,本文会基于开源的llama3.1-8b,通过微调,将其训练成自己是叫"Greatbot"的机器人,并且是由Allen创建的。

1. 名词/工具解释

因为大模型是最近几年火起来,很多人对一些基础名词/不是很了解,所以做个简单解释,并顺带回答一些初学者常见疑问:

  • llama3.1-8b: meta开源的大模型: https://github.com/meta-llama/llama-models/tree/main。8b代表的是模型参数量和模型大小,即llama3.1模型拥有大约800亿(8 billion)个参数。
    参数越大(如: 70B, 405B…),代表模型越大也越复杂,对其进行微调所需的硬件成本(比较吃显卡), 参数调整成本,测试成本等也越大。所以对于一般个体用户,首选8b。
  • llama-factory: 国内开发者在github开源的一个支持图形化界面的微调框架(也有命令行), 界面直观,操作方便,支持多种主流模型: LLaMA, Qwen, ChatGLM等
  • Lora: 一种常见高效的微调方法。这块展开说比较复杂,简单说由于两个小矩阵相乘后可模拟一个大矩阵。因此我们只需调整这两个小矩阵(低秩矩阵),实现较小成本,更快的微调出自己的大模型。
  • 趋动云: 国内一个提供GPU算力资源的云平台: https://account.virtaicloud.com/gemini_web/auth/login,可进行大模型训练微调,好处是免费注册获得10算力点,进行免费微调。

2. 微调过程

  1. 注册趋动云账号,获得10免费算力点。访问https://open.virtaicloud.com/web/project/detail/474105320991096832。点击右上角"运行一下",克隆已有项目到自己工作空间。
    其中包含Llama-3.1-8B-Instruct模型和一些示例数据,方面我们进行微调。
    在这里插入图片描述
  2. 跳出的算力规格一定按照默认的来(显存24g, 内存24g),笔者为了省免费送的算力点,试过更小规格硬件,结果是无法微调,显存爆掉,训练失败。
    在这里插入图片描述
  3. 右上角点击"进入开发环境"
    在这里插入图片描述
    左上角"JuptyerLab"一般用来查看文件目录结构,打开文件看内容。网页终端用来执行命令。
    在这里插入图片描述
  4. 网页终端输入cd ./LLaMA-Factory && pip install -e ".[torch,metrics]",安装LLaMA-Factory框架。
    在这里插入图片描述
  5. 网页终端输入llamafactory-cli webui,LLaMA-Factory web界面启动,自动监听在0.0.0.0:7860在这里插入图片描述
  6. 右边"端口"tab页,点"+添加端口",把机器7860端口映射出来。添加完后,右侧会显示能访问的公网地址和端口。之后就通过这个地址访问LLaMA-Factory web界面。在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
  7. JuptyerLab中,复制data目录下自带的identity.json为identity2.json,修改其中要训练的样本内容
    在这里插入图片描述
  8. 访问第6步中的web界面,设置训练参数如下。因为可调的训练参数非常多,这边只介绍对这次训练比较有用的几个。实际微调中,需要根据不同模型,不同样本量,硬件性能等来调整训练参数。点击Start按钮训练,训练大概要5-10分钟:
  • 学习率(learning rate): 控制模型学习速度。学习率太高,模型学习过快,可能会导致学习过程不稳定;学习率太低,模型学习缓慢,训练时间长,效率低。一般刚开始训练时,学习率会设置较大。此处调高为2e-4
    1e-1(0.1):相对较大的学习率,用于初期快速探索。
    1e-2(0.01):中等大小的学习率,常用于许多标准模型的初始学习率。
    1e-3(0.001):较小的学习率,适用于接近优化目标时的细致调整。
    1e-4(0.0001):更小的学习率,用于当模型接近收敛时的微调。
    5e-5(0.00005):非常小的学习率,常见于预训练模型的微调阶段,例如在自然语言处理中微调BERT模型。
  • Epochs: 训练周期数,整个训练数据集被模型完整遍历的次数, 一般设置在2-10之间,轮数过多可能导致过拟合,特别是在小数据集上。此处调高为10.0
  • Max samples: 最大样本数, 一般微调对应的样本数据量至少成千上万,否则会影响微调效果。这里因为是做测试用,此处调低为1000
    在这里插入图片描述9. 切换到Chat tab页,check point选择刚刚模型输出路径。点击"Load model",加载刚刚训练好的模型,这里会花稍微长点时间,将近10分钟。加载完成后,可在input框中和刚刚训练完的模型聊天,测试刚刚的训练是否符合自己的预期。
    这边可以看到,大模型成功介绍了自己是Greatbot,但是在who are you问题中,没有说自己是created by Allen. 说明模型参数仍然有进一步优化空间。
    在这里插入图片描述在这里插入图片描述
  1. 在训练页面Train tab页,如果训练数据够多,会显示损失曲线,它指每个训练批次损失值随训练轮次的变化。这个图像可以用来解读训练过程中模型的收敛情况和学习进展,是非常重要的训练情况观察图表。
    一般初始阶段的损失值较高,随着训练的进行,损失值会逐渐下降。如果损失值低且趋向稳定,说明模型已经收敛,训练效果不错。
    如果损失初始值或损失最终值(如大于1)过大,如果这个曲线趋近于直线,如果损失值突然大幅上升或下降,这些现象都说明训练过程存在严重问题,需要调整训练参数或数据。
    在这里插入图片描述

3. 总结

实际工作中的大模型微调,影响微调结果有多个因素,而且训练数据至少上万。此处为了展示训练效果,仅用了少量数据:

  • 基座大模型质量
  • 训练数据质量,训练数据数量…
  • 微调方法:full, freeze, lora
  • 微调参数:learning rate,Epochs,Max samples,量化等级等
  • 测试方法,覆盖度等

微调不是件容易的事,需要大量硬件成本,时间成本,精力投入,反复调整训练参数和数据,并没有所有模型通用的标准固定训练参数或数据。部分参数,只能说根据过往经验和参数本身意义,有一个相对合理的范围。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pytest日志总结

pytest日志分为两类: 一、终端(控制台)打印的日志 1、指定-s,脚本中print打印出的信息会显示在终端; 2、pytest打印的summary信息,这部分是pytest 的默认输出(例如测试结果PASSED, FAILED, S…

labview关于文件路径的问题

在调用文件或拆分文件的时候经常会用到拆分路径函数和创建路径函数,最常用的也是当前应用程序目录或者是当前VI目录。 这里我们看到应用程序目录和VI目录在同一项目中,应用程序目录更像是根目录,往下拆分成了各个VI的子目录。 接下来我们来拆…

【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置

🎁个人主页:我们的五年 🔍系列专栏:MySQL课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 MySQL在Centos 7环境下的安装: 卸载…

第二十一周机器学习笔记:动手深度学习之——数据操作、数据预处理

第二十周周报 摘要Abstract一、动手深度学习1. 数据操作1.1 数据基本操作1.2 数据运算1.2.1 广播机制 1.3 索引和切片 2. 数据预处理 二、复习RNN与LSTM1. Recurrent Neural Network(RNN,循环神经网络)1.1 词汇vector的编码方式1.2 RNN的变形…

SSM全家桶 1.Maven

或许总要彻彻底底地绝望一次 才能重新再活一次 —— 24.11.20 maven在如今的idea中已经实现自动配置,不需要我们手动下载 一、Maven的简介和快速入门 Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件),使用 Maven 可以自动化构建测试、打包和发…

《Python 股票交易分析:开启智能投资新时代》(二)

Python 进行股票交易分析的优势 简洁易读:Python 的语法简洁明了,即使是编程新手也能较快上手,降低了股票交易分析的门槛。 Python 的简洁易读是其在股票交易分析中受欢迎的重要原因之一。Python 的语法简洁明了,与其他编程语言相…

cangjie (仓颉) vscode环境搭建

sdk下载 下载中心-仓颉编程语言官网 可选择半年更新版,不用申请。目前版本:0.53.13 ,选择不同平台压缩包下载解压到任意位置即可 补充下载,vscode插件解压后,在vscode扩展中选择从vsix安装,安装后新增名为…

HarmonyOS Next原创项目

学友市集 HarmonyOS毕设,项目完整,代码原创,可接毕设 项目展示 项目简介 学友集市是一款基于HarmonyOS Next开发的二手交易平台,适配HarmonyOS5.0,采用前后端分离架构,致力于为用户提供安全、便捷、高品质的二手商品交易服务。平台整合了华为云认证服…

从〇开始深度学习(0)——背景知识与环境配置

从〇开始深度学习(0)——背景知识与环境配置 文章目录 从〇开始深度学习(0)——背景知识与环境配置写在前面1.背景知识1.1.Pytorch1.2.Anaconda1.3.Pycharm1.4.CPU与GPU1.5.整体关系 2.环境配置2.1.准备工作2.1.1.判断有无英伟达显卡2.1.2.清理电脑里的旧环境 2.1.安装Anaconda…

Gate学习(6) 指令学习3

一、/particle/ 目录及其子目录下的命令 在 `/particle/` 命令目录及其子目录下,可以控制和管理粒子相关的属性和过程。以下是每个命令目录和命令的简要解释: ### `/particle/` 这是粒子控制命令的主目录,包括选择粒子、列出粒子名称、查找粒子编码、创建所有离子和同位旋等…

【Git】:Git基本操作

目录 创建、配置本地仓库 创建本地仓库 配置本地仓库 认识工作区、暂存区、版本库 修改文件 版本回退 撤销修改 删除文件 创建、配置本地仓库 创建本地仓库 我们通常可以通过以下两种方式之一获取 Git 存储库: 自己在本地目录创建一个本地仓库 从其它服务…

android 性能分析工具(03)Android Studio Profiler及常见性能图表解读

说明:主要解读Android Studio Profiler 和 常见性能图表。 Android Studio的Profiler工具是一套功能强大的性能分析工具集,它可以帮助开发者实时监控和分析应用的性能,包括CPU使用率、内存使用、网络活动和能耗等多个方面。以下是对Android …

LabVIEW配电网谐波在线监测与分析系统

统利用LabVIEW与NI数据采集卡,结合高精度谐波分析算法,实现了配电网谐波的实时监测与分析。通过虚拟仪器技术的灵活性和扩展性,显著提高电网运行的可靠性与电能质量,提供了一套有效的技术解决方案。 项目背景 随着非线性负载&am…

git使用(二)

git使用(二) git常用基本操作命令git clonegit loggit remotegit statusgit addgit commitgit pushgit branchgit pull git常用基本操作命令 git clone 项目开发中项目负责人会在github上创建一个远程仓库,我们需要使用git clone将远程仓库…

Excel求和如何过滤错误值

一、问题的提出 平时,我们在使用Excel时,最常用的功能就是求和了,一说到求和你可能想到用sum函数,但是如果sum的求和区域有#value #Div等错误值怎么办?如下图,记算C列中工资的总和。 直接用肯定会报错&…

【数据分享】2024年我国省市县三级的住宿服务设施数量(8类住宿设施/Excel/Shp格式)

宾馆酒店、旅馆招待所等住宿服务设施的配置情况是一个城市公共基础设施完善程度的重要体现,一个城市住宿服务设施种类越丰富,数量越多,通常能表示这个城市的公共服务水平越高! 本次我们为大家带来的是我国各省份、各地级市、各区…

自制Windows系统(十)

上图 (真的不是Windows破解版) 开源地址:仿Windows

Ubuntu20.04下安装向日葵

向日葵远程控制app官方下载 - 贝锐向日葵官网 下载Ununtu版的图形版本的安装deb包SunloginClient_15.2.0.63064_amd64.deb 直接执行 sudo dpkg -i SunloginClient_15.2.0.63064_amd64.deb 的话会报错: 如果在Ubuntu20.04里直接执行sudo apt install libgconf-2-4安装libgco…

vitepress博客模板搭建

vitepress博客搭建 个人博客技术栈更新,快速搭建一个vitepress自定义博客 建议去博客查看文章,观感更佳。原文地址 模板仓库: vitepress-blog-template 前言 服务器过期快一年了,博客也快一年没更新了,最近重新搭…

修改一下达梦disql 提示符

经常用disql的有时某些信息希望提示一下,默认的只显示SQL> 为了方便使用,可以在 glogin.sql 中增加些内容。 vi $DM_HOME/bin/disql_conf/glogin.sql增加以下几行 set time on set lineshow offcol global_name new_value global_name SELECT ins…