LlamaFactory可视化微调大模型 - 参数详解

简介: LlamaFactory可视化微调大模型 - 参数详解

LlamaFactory 前言

LLaMA Factory 是一个用于微调大型语言模型的强大工具,特别是针对 LLaMA 系列模型。

可以适应不同的模型架构和大小。

支持多种微调技术,如全参数微调、LoRALow-Rank Adaptation )、QLoRAQuantized LoRA )等。

还给我们提供了简单实用的命令行接口。

支持多 cpu 训练,多任务微调,还有各种内存优化技术,如梯度检查点、梯度累积等。

支持混合精度训练,提高训练效率。

本文不再赘述 LlamaFactory 的安装过程

LlamaFactory参数基本设置

打开我们 LlamaFactoryweb 运行界面,进入根目录执行下列命令:


llamafactory-cli webui

看到下列界面 在浏览器打开我们开启的 webui 界面  http://127.0.0.1:7860 我们依次来解释每个参数的选择:

这里是语言选择

选择 zh 即可。 模型选择

选择适合自己的模型,这里都会从 Hugging Face 里面下载, 这一步是自定义路径

一般就用选择好的默认路径即可。 微调方法:

这里有三种,full全参数微调, Freeze(冻结部分参数)  LoRA(Low-Rank Adaptation),还有 QLoRA 等。

全参数微调可以最大的模型适应性,可以全面调整模型以适应新任务。通常能达到最佳性能。

Freeze 训练速度比全参数微调快,会降低计算资源需求。

LoRA :显著减少了可训练参数数量,降低内存需求,训练速度快,计算效率高。还可以为不同任务保存多个小型适配器,减少了过拟合风险。

QLoRA训练速度跟 LoRA 差不多,基本保持了 LoRa 的优势,会进一步减少内存使用。

综合速度,灵活性考虑  选择 LoRA 或者 QLorRA 检查点路径:

检查点是模型训练过程中的一个快照,保存了模型的权重、优化器状态等信息。

主要用于保存训练进度允许从中断点恢复训练,性能评估等。

LlamaFactory参数高级设置

量化等级

量化等级有8位量化( INT8)和4位量化( INT4 ),QLoRA 它允许在使用低位量化(如4位)的同时,通过 LoRA 方法进行高效的微调。

量化方法

bitsandbyteshqq

Bitsandbytes:内存效率高,可以显著减少 GPU 内存使用

Hqq: 提供更多的量化选项和更细粒度的控制,使用可能稍微复杂一些,需要更多的配置。

提示模板

就是构建结构化输入的一种方式,好的提示模板可以显著提高模型的性能和适用性,为了适应不同的需求,我们要自定义模板。

RoPE 插值方法:

线性插值和动态 NTK 缩放,线性插值简单直观,动态 NTK 缩放更灵活,可以适应不同长度的输入。

加速方式

autounslothflashattn2

auto自动模式会根据你的硬件配置和当前的训练任务自动选择最适合的加速技术。这是最简单的一种方式,不需要用户进行任何额外配置。

FlashAttention2 是一种优化的注意力机制,旨在加速 Transformer 模型的训练。它通过优化内存访问和计算流程来提高训练速度。

Unsloth 是一种特定的优化技术,用于减少训练过程中的计算冗余和内存占用,从而加快训练速度。

图像输入

对于多模态模型的训练,要结合图像和文本数据进行训练和推理。 学习率

AdamW的学习率通常在1e-5  到  3e-5之间,于大型语言模型(如 BERTGPT 等)的微调,常用的学习率范围是 2e-55e-5,从一个相对较小的值开始,如 2e-5

如果训练不稳定或损失波动很大,可以尝试降低学习率,如果训练进展太慢,可以尝试略微增加学习率。 训练轮数:

对于大语言模型的微调,通常在 210epoch 之间, 轮数过多可能导致过拟合,特别是在小数据集上。

最大梯度范数

Max Gradient Norm)是一种用于防止梯度爆炸的技术,也称为梯度裁剪(Gradient Clipping)。这个参数设置了梯度的最大允许值,如果梯度超过这个值,就会被缩放到这个最大值。

通常在 0.110 之间,太小:可能会限制模型学习,太大:可能无法有效防止梯度爆炸。

最大样本数

它决定了每个数据集中使用多少样本进行训练‘’

如果原始数据集很大,设置一个合理的最大样本数可以减少训练时间,如果计算资源有限,较小的样本数可以加快训练速度。

计算类型

bf16 fp16 fp32 purebf16,如果你的硬件支持 bfloat16,且你希望最大化内存效率和计算速度,可以选择 bf16purebf16

如果你的硬件支持 fp16,你希望加速训练过程且能够接受较低的数值精度,可以选择 fp16

如果你不确定你的硬件支持哪些类型,或你需要高精度计算,可以选择 fp32

截断长度:

截断长度是指在处理输入序列时,模型所能接受的最大标记(token)数量。

如果输入序列超过了这个长度,多余的部分将被截断,以确保输入序列长度不会超出模型的处理能力。

对于文本分类任务,通常截断到 128256 个标记可能就足够了;而对于更复杂的任务,如文本生成或翻译,可能需要更长的长度。 批处理大小:

批处理大小是指在每次迭代中输入到模型中的样本数量。

在深度学习训练过程中,数据通常会被分成多个批次(batch)进行处理,每个批次包含一组样本。

较大的批处理大小会占用更多的内存(显存)。

如果批处理大小过大,可能导致显存不足,训练无法进行。

合理的批处理大小可以提高计算效率,大批量的数据可以更有效地利用 GPU 进行并行计算。

梯度累计:

是一种有效的策略,用于在受限的 GPU 内存情况下模拟更大的批处理大小。

验证集比例:

是指在机器学习和深度学习模型训练过程中,从训练数据集中划分出来的一部分数据,用于评估模型的性能。

验证集的数据不参与模型的训练,仅用于在训练过程中监控模型的表现,以防止过拟合和调整模型的超参数,常见的比例有 10%20% 等,具体选择取决于数据集的大小和具体的应用场景。 学习率调整:

训练过程中保持学习率不变。随着训练进行,逐步减小学习率。

每隔一定的训练轮数(epoch),将学习率按某个比例缩小。

在每个周期内,学习率呈现余弦函数形态变化。如  AdamAdagradRMSprop 等,根据梯度变化动态调整学习率。

训练

然后接下来选择我们微调要保存的目录即可。

然后右边会有微调过程中损失函数曲线,会越来越收敛,误差越来越小,直到某个阀值。

8.总结

LLaMA Factorywebui 里面,一切微调都是可视化,方便我们入手。

我们可以不用了解每个参数背后的具体实现手段,但一定要知道每个参数的含义,大模型的微调不是一蹴而就,而是不断更新和优化。

我们可能要调试各种参数之间的搭配,最后得到一个接近我们任务的大模型。


相关文章
|
6月前
|
机器学习/深度学习 Java TensorFlow
模型推理脚本
模型推理脚本可以使用各种编程语言编写,如Python、C++、Java等。在机器学习和深度学习领域中,Python是最常用的编程语言之一,因为它有许多流行的深度学习框架,如TensorFlow、PyTorch和Keras,这些框架都提供了简单易用的API来加载模型和进行模型推理。
143 5
|
Python
MMDetection系列 | 3. MMDetection自定义模型训练
MMDetection系列 | 3. MMDetection自定义模型训练
840 0
MMDetection系列 | 3. MMDetection自定义模型训练
|
1天前
|
人工智能 边缘计算 JSON
DistilQwen2 蒸馏小模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
本文详细介绍在 PAI 平台使用 DistilQwen2 蒸馏小模型的全链路最佳实践。
|
1月前
|
XML 机器学习/深度学习 数据可视化
目标检测笔记(六):如何通过界面化操作YOLOv5完成数据集的自动标注
这篇文章介绍了如何通过界面化操作YOLOv5来完成数据集的自动标注,包括修改源码、自动标注的前期准备、开始自动标注、可视化标注效果以及将XML文件转换为YOLO训练所需的TXT格式。
52 1
目标检测笔记(六):如何通过界面化操作YOLOv5完成数据集的自动标注
|
1月前
|
数据可视化 Linux 网络安全
如何使用服务器训练模型
本文介绍了如何使用服务器训练模型,包括获取服务器、访问服务器、上传文件、配置环境、训练模型和下载模型等步骤。适合没有GPU或不熟悉Linux服务器的用户。通过MobaXterm工具连接服务器,使用Conda管理环境,确保训练过程顺利进行。
55 0
如何使用服务器训练模型
|
2月前
|
机器学习/深度学习 数据可视化 UED
黑匣子被打开了!能玩的Transformer可视化解释工具,本地运行GPT-2、还可实时推理
【9月更文挑战第4天】Transformer Explainer是一款基于网页的交互式可视化工具,专为帮助用户理解复杂的Transformer模型而设计。通过多层次抽象、实时推理及互动实验,以及无需安装即可使用的便捷性,此工具选取GPT-2作为教学模型,降低了学习门槛并提升了教育普及度。用户可以通过输入自定义文本观察预测过程,深入了解内部组件的工作原理。此外,它还减少了认知负荷,增强了互动学习体验。未来,该工具将在复杂性管理和性能优化方面继续改进,并通过用户研究进一步提升功能和可用性。[论文地址:https://arxiv.org/pdf/2408.04619]
49 1
|
3月前
|
API C#
SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景
SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景
99 0
|
数据可视化 PyTorch 算法框架/工具
量化自定义PyTorch模型入门教程
在以前Pytorch只有一种量化的方法,叫做“eager mode qunatization”,在量化我们自定定义模型时经常会产生奇怪的错误,并且很难解决。但是最近,PyTorch发布了一种称为“fx-graph-mode-qunatization”的方方法。在本文中我们将研究这个fx-graph-mode-qunatization”看看它能不能让我们的量化操作更容易,更稳定。
242 0
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
LLM资料大全:文本多模态大模型、垂直领域微调模型、STF数据集、训练微调部署框架、提示词工程等
LLM资料大全:文本多模态大模型、垂直领域微调模型、STF数据集、训练微调部署框架、提示词工程等
LLM资料大全:文本多模态大模型、垂直领域微调模型、STF数据集、训练微调部署框架、提示词工程等
|
11月前
|
数据采集 机器学习/深度学习 自然语言处理
本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)
按照固有思维方式,深度学习的训练环节应该在云端,毕竟本地硬件条件有限。但事实上,在语音识别和自然语言处理层面,即使相对较少的数据量也可以训练出高性能的模型,对于预算有限的同学们来说,也没必要花冤枉钱上“云端”了,本次我们来演示如何在本地训练Bert-VITS2 V2.0.2模型。
本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)