训练方法
训练阶段/方法 | 描述 | 是否可用于微调 |
---|---|---|
预训练(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微调可以实现改变模型回复风格,实现微调
Comments NOTHING