ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Soup全参数微调指南:GaLore/LISA如何在有限显存下逼近Full FT效果

Soup全参数微调指南:GaLore/LISA如何在有限显存下逼近Full FT效果 Soup全参数微调指南GaLore/LISA如何在有限显存下逼近Full FT效果【免费下载链接】SoupFine-tune LLMs from one YAML. Layer streaming trains an 8B model on a 4 GB laptop GPU.项目地址: https://gitcode.com/GitHub_Trending/soup12/SoupSoup 是一个「一个 YAML 文件微调 LLM」的开源工具而它的 GaLore 与 LISA 两大特性正是让全参数微调Full Fine-Tuning不再被显存卡脖子的关键在 4 GB 的笔记本显卡上训练 8B 模型、在单张 80 GB 卡上跑下传统需要约 120 GB 显存的完整微调。本文用实测数据讲清楚两者的原理、配置与选型建议帮你用最少的显存拿到最接近 Full FT 的效果。上图是 Soup 在 4 GB 显卡上训练 Llama-3.1-8B 的实测演示基座权重固定在内存中逐层送入 GPU峰值显存仅 3.32 GB。一、为什么需要 GaLore / LISA先看一组真实显存账单全参数微调的效果上限通常高于 LoRA但显存开销是「模型参数 梯度 优化器状态」的三重叠加。Soup 在单张 H100 80 GB 上的实测结果记录于 benchmarks/gate-h100-validation.mdLlama-3.1-8B-InstructAlpaca200 步训练方式峰值显存验证集损失全参数微调❌ 73.94 GB 时 OOMbatch1 也放不下–LISA2 层 / 20 步52.14 GB1.294LoRA r1634.56 GB1.275Qwen2.5-3B-Instruct训练方式峰值显存验证集损失全参数微调57.60 GB1.2905LISA19.37 GB1.2463LoRA r1615.93 GB1.2420两个值得注意的结论✅LISA 在两个学习率下都压过了全参数微调的质量——「低显存 低质量」在 7B 规模上不成立⚠️ 但 LISA 的显存只有 LoRA 的 1.22~1.51 倍且随模型规模差距扩大原因见下文「常驻开销」。二、GaLore梯度低秩投影让优化器不再吃满显存原理一句话全参数微调的大头往往不是参数本身而是 AdamW 为每个参数维护的一份一阶二阶动量状态。GaLore 把梯度先投影到低秩空间源码注释优化器显存从 O(n·m) 降到 O(n·r m·r)训练时所有参数仍然更新但优化器状态只为低秩分量维护。最小配置完整文档见 docs/peft-and-efficiency.mdtraining: quantization: none # 必须GaLore 与量化互斥 use_galore: true galore_rank: 128 # 低秩维度默认 128 galore_update_proj_gap: 200 # 每 200 步重算投影 galore_scale: 0.25三个必须记住的约束gaLore 校验逻辑quantization: none—— 4bit/8bit 会与 GaLore 冲突直接报错backend: transformers—— 不支持 unsloth 后端作用在attn与mlp模块优化器为galore_adamw。适合谁想保持「真·全参数」语义、又不想上多卡 ZeRO 的训练者。它压缩的是优化器显存不改变「每个参数都被更新」这一事实。三、LISA每 20 步只训 2 层用轮换来换显存原理一句话LISALayerwise Importance Sampled AdamW不一次性挑定要训的层而是每隔 N 步随机抽取一小撮 decoder 层进行全精度更新其余层冻结实现。训练足够长的时间后每一层都会轮到——效果接近全参数微调但同一时刻只有少数层携带优化器状态峰值显存因此骤降。training: quantization: none # LISA 是活跃层的全参数训练不叠加量化 lisa_enabled: true lisa_num_layers: 2 # 每个区间激活的层数默认 2 lisa_interval_steps: 20 # 每 20 步重新抽样一次 lisa_train_embeddings: true # 默认 true可改为 false 见下那个「常驻开销」为什么 8B 上 LISA 是 52 GBSoup 的实测发现默认的 embeddings LM head final norm 在每个区间都保持可训练在 8B 模型里它们占了 LISA 全部训练量的70.7%3B 上为 66.9%——这部分开销 LoRA 根本不需要支付而且随「词表 × 隐藏维度」线性增长。所以 Soup 提供了lisa_train_embeddings: false冻结该常驻组只训被抽中的层显存才能真正逼近 LoRA 量级。代价是质量可能波动官方建议两种方式都实测一遍再定详见 LISA 完整章节。调参的两个实测结论lisa_num_layers越大越差3B 验证集损失2 层 1.2504 → 8 层 1.2673 → 16 层 1.2950且 8B 上超过 8 层直接 OOM 一张 80 GB 卡。默认值 2 就是最优区lisa_interval_steps在 1~50 之间几乎无差异只有 200全程仅抽样一次才会退化。默认 20 稳。LISA 的适用边界仅限sft/pretrain transformers 后端 纯文本 无量化且与 LoRA、freeze_layers等互斥配置校验 会在启动前拦住误配。四、选型清单GaLore、LISA 还是 LoRA需求推荐理由显存极小4~12 GB 级LoRA可叠加 Soup 层流式显存最省实测质量打平8B 模型、单张 80 GB、要「全参数级」更新LISAFull FT 约需 120 GBLISA 52 GB 拿下质量反超显存适中、追求纯正全参数语义GaLore优化器显存降一个量级所有参数照常更新极致压缩优化器状态GaLore 调小galore_rank显存与 rank 线性相关一句话决策在 7B 以上规模LISA 的质量已验证不低于全参数微调而 LoRA 用约三分之一的显存追平甚至反超 LISA——所以「显存不够时」首选 LISA「显存真的极少时」选 LoRAGaLore 则是「必须全参数、又不想上多卡」的中间解。五、延伸阅读训练主文档docs/training.mdGaLore / LISA 完整章节docs/peft-and-efficiency.mdH100 显存与质量实测记录benchmarks/gate-h100-validation.mdGaLore 优化器构建src/soup_cli/utils/galore.pyLISA 回调实现src/soup_cli/utils/lisa.py【免费下载链接】SoupFine-tune LLMs from one YAML. Layer streaming trains an 8B model on a 4 GB laptop GPU.项目地址: https://gitcode.com/GitHub_Trending/soup12/Soup创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表