llamafactory常用参数含义

发布于 2025-02-16


AI 摘要

本文介绍了llamafactory常用参数的含义,包括训练方法、微调类型、量化方法、计算类型、学习率调节器、批处理技巧和加速方式等。训练阶段涵盖自监督学习、SFT、PPO、DPO及KTO等技术,各自的优缺点被清晰列出。微调类型分为全量微调、冻结微调和LoRA,重点强调了各自的适用场景及影响。量化方法如Bitsandbytes和HAG则在内存优化和训练资源消耗上做了详细阐述。计算类型根据其内存占用和适用场景为大模型训练提供指导。 学习率调节器如余弦调节、线性调节等的原理与应用场景被系统总结,批处理技巧则针对批处理大小、梯度累计等进行了分析,指出其对计算效率和训练稳定性的影响。加速方式如FlashAttention2和Unsloth通过优化计算与内存管理提升训练效率。 最后,LoRA参数的细节被详细解释,包括秩、缩放系数、随机丢弃等,强调了LoRA在保持原模型参数不变的前提下,实现模型的个性化微调能力。总的来说,本文将复杂的参数和技巧分解为易于理解的内容,为相关领域的研究和应用提供了重要参考。

训练方法

训练阶段/方法描述是否可用于微调
预训练(Pre-Training)初始的无监督或自监督学习,构建普遍有效的语言表征。
SFT (Supervised Fine-Tuning Reward Modeling)使用大量标签明确的任务数据集进行细化调优,模仿学习技术指导模型改善预测输出。
PPO (Proximal Policy Optimization)强化学习中的优化算法,改进代理在奖励时的行为决策过程。是(特定场景)
DPO (Dreamed Prompt Optimization)基于生成任务提示进行再训练的技术,让模型自我改善其响应特性。
KTO (Knowledge Token Optimization)通过特定的知识标记来微调和优化模型的方法论,提高处理复杂结构化领域知识的能力。

微调类型

微调类型描述优点缺点
全量微调 (Full Fine-Tuning)整个预训练模型的所有参数在训练过程中都会被更新。通常需要大量计算资源和时间,且可能过拟合。能够充分利用所有层的信息进行学习;适用于有大量标注数据的情况。计算成本高、容易过拟合。
冻结微调 (Freeze Fine-Tuning)在训练过程中,除了最顶层的几个参数外,其余参数被固定不变。显著减少计算资源和时间需求。减少模型过拟合的风险;降低对大量标注数据的需求。可能限制学习到更深层次的信息。
LoRA (Low-Rank Adaptation)通过在预训练权重上添加低秩矩阵来实现参数高效微调,允许模型保持大部分原始权重不变的情况下进行调整。大大减少需要更新的参数数量;降低计算成本;能够更好地泛化到未见过的数据。可能不如全量微调那样充分利用所有层的信息。3

量化方法

量化方法简介优点应用场景
Bitsandbytes支持8位量化,减少内存占用和计算开销,适用于大规模模型的推理和训练。支持动态量化,减少内存占用。大规模模型的推理和训练,资源受限环境。
HAG硬件感知的量化方法,根据硬件特性优化量化策略。硬件感知,提升计算效率。需要针对特定硬件进行优化的深度学习模型。
EETQ高效的训练量化方法,动态调整量化精度和梯度更新策略,减少训练资源消耗。支持训练过程中的量化,减少训练资源消耗。大规模模型的训练,资源受限环境。

大模型训练时支持不同型号显卡进行交火计算吗?
大模型训练时,建议使用相同型号的显卡,以确保计算效率和稳定性。如果必须使用不同型号的显卡,建议采用数据并行方式,并确保显存和计算能力的差异不会对训练造成显著影响。

计算类型

计算类型内存占用动态范围精度适用场景优点缺点
bf16大规模模型训练,显存有限内存占用少,动态范围大精度较低
fp16显存有限的设备,加速训练内存占用少,训练速度快动态范围小,精度低
fp32小规模模型,高精度计算高精度,数值稳定性好内存占用大,训练速度慢
pure_bf16大规模模型训练,简化训练流程内存占用少,动态范围大,简化训练流程精度较低

学习率调节器原理及使用方式

学习率调度器名称原理使用场景
Cosine学习率按照余弦函数从初始值逐渐降低到最小值适用于训练过程中需要平滑降低学习率的场景
Linear学习率从初始值线性降低到最小值适用于需要简单线性降低学习率的场景
Cosine with Restarts在余弦退火的基础上,每隔一定周期重启学习率到初始值适用于训练过程中需要周期性重启学习率的场景
Polynomial学习率按照多项式函数从初始值降低到最小值适用于需要更灵活的学习率降低策略的场景
Constant学习率在整个训练过程中保持不变适用于训练过程中不需要调整学习率的场景
Constant with Warmup在训练初期,学习率从0线性增加到初始值,然后保持恒定适用于训练初期需要逐步增加学习率的场景
Inverse Square Root学习率按照逆平方根函数降低适用于训练过程中需要快速降低学习率的场景
Reduce LR on Plateau当验证集的性能在若干步内没有提升时,学习率按一定比例降低适用于训练过程中需要根据验证集性能动态调整学习率的场景
Cosine with Min LR在余弦退火的基础上,确保学习率不会低于设定的最小值适用于训练过程中需要平滑降低学习率且不希望学习率过低的场景
Warmup Stable Decay在训练初期,学习率从0线性增加到初始值,然后按照一定的衰减策略降低适用于训练初期需要逐步增加学习率并在后期平滑降低的场景

批处理技巧

超参数/技术含义作用影响
批处理大小(Batch Size)每次前向传播和反向传播时使用的样本数量。例如,批处理大小为32时,每次处理32个样本。- 计算效率:较大的批处理大小可充分利用GPU并行计算能力,提高效率。
- 梯度稳定性:较大的批处理大小使梯度估计更稳定。
- 内存消耗:较大的批处理大小占用更多显存。
- 优点:提高计算效率和梯度稳定性。
- 缺点:增加显存消耗。
梯度累计(Gradient Accumulation)在显存有限的情况下模拟更大的批处理大小。通过累积多个小批次的梯度,再进行一次参数更新。- 显存优化:在不增加显存消耗的情况下模拟更大的批处理大小。
- 训练稳定性:减少参数更新频率,使训练更稳定。
- 优点:优化显存使用,提高训练稳定性。
- 缺点:训练时间可能增加。
最大梯度范数(Maximum Gradient Norm)梯度裁剪技术,限制梯度的最大范数。如果梯度范数超过阈值,梯度会被按比例缩小。- 防止梯度爆炸:有效防止梯度爆炸,尤其是在深层网络中。
- 提高收敛性:帮助模型更快收敛,减少震荡或不稳定。
- 优点:提高训练稳定性和收敛性。
- 缺点:可能限制梯度的自然变化,影响优化路径。

加速方式

加速方式原理和作用
FlashAttention2- 内存优化:通过减少中间结果的存储需求,降低内存占用。
- 计算优化:利用硬件加速和高效矩阵乘法算法,减少冗余计算和优化内存访问模式。
- 长序列处理:特别适用于处理长序列输入,高效计算自注意力机制。
Unsloth- 动态计算图优化:动态分析模型计算图,识别并消除冗余计算。
- 内存管理:通过智能内存管理策略,减少内存占用。
- 分布式训练优化:优化数据并行和模型并行策略,减少通信开销。
Liger Kernel- 硬件加速:充分利用现代硬件的并行计算能力,优化核心操作。
- 混合精度计算:支持混合精度计算,减少内存占用和计算时间。
- 自动调优:根据硬件配置和模型结构,自动选择最优计算策略和参数设置。

LoRA秩
LoRA 矩阵的秩大小

LoRA缩放系数 LoRA 缩放系数大小。

LoRA随机丢弃
LoRA 权重随机丢弃的概率

LoRA+学习率比例
LoRA+ 中 B 矩阵的学习率倍数。

解释以上参数的原理,作用,以及参数范围,最后使用表格总结

LoRA 参数详解

1. LoRA 秩 (LoRA Rank)

原理: LoRA (Low-Rank Adaptation) 是一种用于微调大型预训练模型的技术,通过在预训练模型的权重矩阵中引入低秩分解来减少参数量。LoRA 秩指的是低秩分解中矩阵的秩大小,即分解后的矩阵的维度。

作用: LoRA 秩决定了低秩分解的复杂度。秩越大,分解后的矩阵越接近原始权重矩阵,模型的表达能力越强,但参数量也越大;秩越小,参数量越少,但可能会损失一些表达能力。

参数范围: 通常 LoRA 秩的取值范围在 1 到 128 之间,具体取值取决于任务需求和计算资源。

2. LoRA 缩放系数 (LoRA Scaling Factor)

原理: LoRA 缩放系数用于调整低秩分解后的矩阵对原始权重矩阵的影响程度。通过缩放系数,可以控制 LoRA 矩阵对模型输出的贡献。

作用: 缩放系数越大,LoRA 矩阵对模型输出的影响越大;缩放系数越小,影响越小。通过调整缩放系数,可以在不改变模型结构的情况下,灵活控制 LoRA 的效果。

参数范围: 缩放系数通常是一个正数,取值范围在 0.1 到 10 之间。

3. LoRA 随机丢弃 (LoRA Dropout)

原理: LoRA 随机丢弃是指在训练过程中,以一定概率随机丢弃 LoRA 矩阵中的部分权重。这是一种正则化技术,旨在防止模型过拟合。

作用: 通过随机丢弃部分权重,可以增加模型的泛化能力,避免模型过于依赖某些特定的 LoRA 权重。

参数范围: 随机丢弃的概率通常在 0 到 0.5 之间,0 表示不进行丢弃,0.5 表示有 50% 的概率丢弃权重。

4. LoRA+ 学习率比例 (LoRA+ Learning Rate Ratio)

原理: LoRA+ 是 LoRA 的一种改进版本,其中 B 矩阵的学习率可以独立于 A 矩阵进行调整。学习率比例指的是 B 矩阵的学习率相对于 A 矩阵学习率的倍数。

作用: 通过调整 B 矩阵的学习率比例,可以更精细地控制 LoRA+ 的训练过程,使得 B 矩阵的更新速度与 A 矩阵不同,从而更好地适应不同的任务需求。

参数范围: 学习率比例通常是一个正数,取值范围在 0.1 到 10 之间。

总结

lora不会改变原始模型矩阵的参数,是套用两个低秩矩阵缩放到模型矩阵上实现微调

从原理上将lora层很难为模型引入“新知识”,因为仅是将低秩矩阵缩放到模型矩阵上,但是lora微调可以实现改变模型回复风格,实现微调

最后更新于 2025-02-16