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

目录

    • [1. 名词/工具解释](#1. 名词/工具解释)
    • [2. 微调过程](#2. 微调过程)
    • [3. 总结](#3. 总结)

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

1. 名词/工具解释

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

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,量化等级等
  • 测试方法,覆盖度等

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

相关推荐
取个名字真难呐36 分钟前
6、PyTorch中搭建分类网络实例
人工智能·pytorch·分类
池佳齐43 分钟前
《AI大模型开发笔记》——Prompt提示词最佳实践
人工智能·笔记·prompt
亿信华辰软件44 分钟前
从传统分析到智能问数,打造零门槛数据分析方案
人工智能·数据分析·大模型bi
前端搬砖小助手1 小时前
开源 LLM 网关:APIPark 能做什么?
人工智能·开源·api·llm网关·api开放平台·api门户
Together_CZ2 小时前
EasyAnimate:基于Transformer架构的高性能长视频生成方法
人工智能·深度学习·transformer·easyanimate
Eric.Lee20212 小时前
数据集-目标检测系列- 人与猫互动 猫 检测数据集 cat in the house >> DataBall
人工智能·yolo·目标检测·计算机视觉·猫咪检测·猫与人互动
小白的程序空间2 小时前
人工智能之机器学习5-回归算法1【培训机构学习笔记】
人工智能·机器学习·回归
chenchihwen2 小时前
《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part1
人工智能
澜舟孟子开源社区2 小时前
“AI玩手机”原理揭秘:大模型驱动的移动端GUI智能体
人工智能·科技·agi
Mr.鱼3 小时前
opencv undefined reference to `cv::noarray()‘ 。window系统配置opencv,找到opencv库,但连接不了
人工智能·opencv·计算机视觉