tsx81428 发表于 2025-4-21 02:13:22

llama-factory笔记

llama-factory笔记

Qlora最低容忍度为4bit量化,损失在4-8%(8bit损失<1%),但3比特及以下都有两位数的损失
Qlora只是在微调过程中断送精度来量化微调,模型本身依然是全精度的
微调后量化使用的导出量校准数据集格式为[{“text”:“abc”},…]
导出装备选择auto,cpu可能报错;大模型文件导出可能报错,必要修改最大分块大小,即单个模型文件的最大大小(GB)。
evaluate主要比的是BLEU相似度,不是准确率
截断长度对显存占用影响较大,若数据集长度固定,可以低落到max_length乃至低于max_length(扬弃长文本数据)
方法理论

量化方法


[*]BitsAndBytes是一种简单易用的量化方法,特别适合对模型进行零样本量化(Zero-shot Quantization),因为它不必要额外的校准数据或校准过程。任何包含 torch.nn.Linear 模块的模型都可以直接使用该方法进行量化。别的,它通过高效的8位优化技能,将模型参数和中间盘算结果转换为8位表示,从而实现压缩和加快的目的。
[*]**HQQ (Half-Quadratic Quantization)**的焦点优势在于其独特的量化策略,支持从8位到1位的多种比特量化,并引入了机动的参数设置(如 group_size 和量化轴的选择)以平衡精度与服从。HQQ的问题界说在于如何在零点量化中取得最优的零点和缩放倍数(z 和 s)。为了简化求解过程,HQQ 将缩放尺度s固定,仅优化零点z。
[*]**EETQ (Easy and Efficient Quantization for Transformers)**是一种只对模型权重进行量化的后训练量化(PTQ)方法,具有较快的速度和简单易用的特性。它通过引入gemv算子这一全新特性,使得模型性能得到10%到30%的提升,是对现有量化方法的一次重大革新。
   bitsandbytes直接内置比力方便,hqq在显存极低环境下更好用(显存占用降落更多),但安装复杂;两者性能相差不大,只是bitsandbytes只能8bit和4bit,而hqq还能2bit、3bit等。
加快方式


[*]Flash Attention是一种高效的注意力机制实现方式,旨在淘汰显存占用并加快Transformer模型的推理过程。它通过对注意力矩阵的分块处置惩罚和优化内存访问模式,显著提升了盘算服从。
[*]Unsloth是一种针对Transformer模型的高效训练和推理框架。它通过优化底层算子和内存管理,进一步提升了模型的运行速度,同时保持较高的精度。
[*]vLLM是一个专为大规模语言模型计划的推理优化工具。它通过高效的缓存管理和张量并行化技能,显著提升了长序列生成任务的性能。
   auto即为flash_attention,unsloth更适合显存低的环境,unsloth比flash_attention速度快了40%,显存占用淘汰15%;flash_attention和unsloth主要用在训练过程中,vllm主要用在推理过程中
RoPE 插值方法

RoPE(Rotary Positional Embedding,旋转位置编码)是一种用于 Transformer 模型的位置编码方法,它通过旋转操作将位置信息嵌入到注意力机制中。RoPE 的焦点头脑是利用复数的旋转性子,使得位置编码在差别长度的输入序列中保持一致性和可扩展性。
然而,当输入序列长度超出模型训练时的最大长度时,RoPE 的表现可能会受到影响。为了解决这一问题,研究者提出了多种 RoPE 插值方法 ,以动态或静态的方式调整旋转角度,从而顺应更长的输入序列。

[*]Linear即线性插值方法,是一种简单的RoPE优化策略,通过对旋转角度进行线性扩展来顺应差别长度的输入序列。
[*]Dynamic即动态插值方法,根据输入序列的长度动态调整旋转角度,确保位置编码在差别长度下都能保持一致性。
[*]**YARN (Yet Another Rotation-based Method)**是一种改进的RoPE插值方法,旨在更好地顺应差别长度的输入序列。它通过动态调整旋转角度,解决了长序列中的位置编码问题。
[*]Llama3是Meta提出的一种基于RoPE的改进方法,专注于提升长序列建模能力。它通过优化旋转角度的盘算方式,增强了模型在长上下文中的表现。
问题传统 Transformer 的表现RoPE 的解决方案长度限定最大长度固定,无法扩展动态顺应差别长度,支持超长序列外推性差超过最大长度后性能急剧降落自然支持超长序列,外推性强缺乏相对位置信息仅编码绝对位置,难以捕捉相对关系同时编码绝对和相对位置盘算复杂度高相对位置编码必要额外盘算旋转操作高效,盘算开销低   RoPE插值方法能提升长文本结果,但假如没有特殊需求可以不使用,插值本身也会增加少少量开销(yarn最好,dynamic能动态厘革,linear适合全部文本长度相近的环境且耗时最短)
加快器


[*]GaLore(Gradient Accumulation with Low-Rank Embeddings)优化器旨在淘汰内存占用并加快训练过程。

[*]利用低秩嵌入技能压缩梯度信息,低落内存需求。
[*]支持梯度累积,实用于显存受限的场景。
[*]在保持模型性能的同时,显著淘汰盘算资源消耗。

[*]APOLLO优化器是一种基于二阶优化方法的深度学习优化器,通过近似Hessian矩阵实现更高效的参数更新,提升收敛速度。

[*]利用低秩近似和随机采样技能低落盘算复杂度。
[*]提供更快的收敛速度和更高的优化精度。
[*]实用于非凸优化问题,尤其在深度学习模型中表现优秀。

[*]BAdam(Blockwise Adam)优化器是Adam优化器的改进版本,通太过块更新参数来淘汰内存占用和盘算开销。

[*]将参数分块,逐块更新,低落内存需求。
[*]保留Adam优化器的自顺应学习率特性。
[*]在资源受限的装备(如移动装备)上表现精良。

   这三种加快器不能与Lora同时使用
纪录

Device: AMD 7940HX + 4060(8GB) + 64GB RAM
梯度累计步数:8
1epoch Qwen2.5-1.5B-Instruct 模型本身2.87GB

batch_size=4 5408 item 截断长度128 时长3.5h 显存6.1GB
QLoRA未启用 加快方式flashattn
batch_size=4 5408 item 截断长度128 时长5h 显存4.3GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式flashattn
batch_size=4 5408 item 截断长度128 时长2.5h 显存4.5GB
QLoRA未启用 加快方式unsloth
batch_size=16 5408item 截断长度64 时长8h 显存5.6GB
QLoRA未启用 加快方式flashattn
batch_size=16 5408item 截断长度64 时长8.5h 显存3.7GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式flashattn
batch_size=32 2704item 截断长度64 时长8h 显存5.6GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式flashattn
batch_size=1 86530item 截断长度1024 时长43h 显存3.7GB
QLoRA未启用 加快方式flashattn
batch_size=4 21632item 截断长度256 时长11.5h 显存3.9GB
QLoRA未启用 加快方式flashattn
batch_size=4 21632item 截断长度256 时长15.5h 显存2.1GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式flashattn
batch_size=4 21632item 截断长度256 时长32h 显存2.7GB
QLoRA启用(8bit) 量化方法bitsandbytes 加快方式flashattn
batchsize=16 5408item 截断长度64 时长5.6h 4.8GB
QLoRA未启用 加快方式unsloth
batchsize=32 2704item 截断长度64 时长5h 3.9GB
QLoRA未启用 加快方式unsloth
batchsize=32 2704item 截断长度64 时长5h 2.2GB
QLoRA(4bit) 量化方法bitsandbytes 加快方式unsloth
batchsize=64 1352item 截断长度64 时长5h 2.7GB
QLoRA(4bit) 量化方法bitsandbytes 加快方式unsloth
batchsize=256 338item 截断长度64 时长5h 5.9GB
QLoRA(4bit) 量化方法bitsandbytes 加快方式unsloth
1epoch Qwen2.5-3B-Instruct 模型本身5.74GB

batch_size=1 86530item 截断长度256 时长58h 显存6.7GB
QLoRA未启用 量化方法bitsandbytes 加快方式flashattn
batch_size=1 86530item 截断长度256 时长84h 显存2.6GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式flashattn
batch_size=4 21632item 截断长度256 时长27h 显存3.1GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式flashattn
batch_size=16 5409item 截断长度256 时长16h 显存5.1GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式flashattn
batch_size=32 2704item 截断长度256 时长16h 显存7.1GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式flashattn
batch_size=1 86530item 截断长度256 时长47.5h 显存6.4GB
QLoRA未启用 量化方法bitsandbytes 加快方式unsloth
batch_size=1 86530item 截断长度256 时长56.5h 显存2.7GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式unsloth
batch_size=32 2704item 截断长度256 时长10h 显存3.7GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式unsloth
batch_size=128 676item 截断长度256 时长9.5h 显存5.8GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式unsloth
1epoch Qwen2.5-7B-Instruct 模型本身14.1GB

batch_size=1 86530item 截断长度256 时长700h 显存14.5GB
QLoRA未启用 量化方法bitsandbytes 加快方式flashattn
batch_size=1 86530item 截断长度256 时长174h 显存6.2GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式flashattn
batch_size=16 5408item 截断长度256 时长45h 显存8.2GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式flashattn
batch_size=1 86530item 截断长度256 时长640h 显存14.8GB
QLoRA未启用 量化方法bitsandbytes 加快方式unsloth
batch_size=1 86530item 截断长度256 时长93.5h 显存5.9GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式unsloth
batch_size=4 21632item 截断长度256 时长32.5h 显存6.2GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式unsloth
batch_size=8 10816item 截断长度256 时长28h 显存6.5GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式unsloth
batch_size=16 5408item 截断长度256 时长25h 显存7.1GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式unsloth
batch_size=32 2704item 截断长度256 时长22h 显存7.5GB
QLoRA启用(4bit) 量化方法bitsandbytes 加快方式unsloth

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: llama-factory笔记