当前位置: 首页 > news >正文

LLaMA-Factory 微调提速:3 个开关压缩 7B 模型训练时间与显存

LLaMA-Factory 微调提速:3 个开关压缩 7B 模型训练时间与显存

【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory

用一张 24GB 的卡微调 7B 模型,刚跑两步就爆显存,这是很多人做 LLM 微调时最常见的起点。原因不复杂:7B 参数的权重用 fp16 存储约 14GB(7×10⁹ 参数 × 2 字节),Adam 优化器的动量和方差两份状态还要再加约 56GB。LLaMA-Factory 是一个支持 100+ LLM 与多模态模型统一微调的框架(ACL 2024 论文项目),它把这些优化做成了配置文件里的开关:不用写代码,改几行配置就能让训练更快、占显存更少。

先看结论:四点了解

  • 解决什么问题:LLM 微调最现实的两个瓶颈——显存不够、训练太慢,LLaMA-Factory 把应对方案打包成可勾选的配置项
  • 提速enable_liger_kernel: true启用 Liger Kernel,把 LayerNorm、SwiGLU、交叉熵等操作融合成单个 GPU 内核(Liger Kernel 是一套专门重写过的 Transformer 计算内核)
  • 省显存bf16: true用半精度计算;梯度检查点让前向传播不保存全部中间激活值,反向传播时重算,用少量时间换显存
  • 多卡扩展deepspeed: examples/deepspeed/ds_z3_config.json启用 ZeRO-3,把权重、梯度、优化器状态切分到多张 GPU
  • 适合谁:在 NVIDIA 或昇腾卡上做 SFT/DPO 等训练任务的人;纯聊天、导出模型这类推理场景不受影响

原理说人话:三种"省"

Liger Kernel 的思路类似超市"合并结账":GPU 原本要依次跑 LayerNorm、SwiGLU、交叉熵这些小操作,每次都要从显存把数据读进寄存器再写回去;融合后一次读入、一次写回,省掉的是来回搬运的时间。

梯度检查点像"菜谱写下来,食材不备齐":前向传播时只记下一部分层的输入,反向传播时把中间结果重算出来。省了大量显存,代价是多算一遍,训练时间会略增。LLaMA-Factory 另提供use_unsloth_gc选项,把中间激活值异步挪到内存(RAM)里暂存,相当于"把暂时不用的食材放冰箱",进一步省显存。

ZeRO-3 则像"大箱子拆给几个人抬":每张卡只放一部分权重和优化器状态,需要时临时组装。单卡显存放不下的模型,多卡就能跑。

开关做什么大白话
enable_liger_kernel算子融合,减少显存读写合并结账,不重复排队
bf16计算与存储精度减半高精度换半精度
梯度检查点反向传播时重算激活值菜谱记下来,食材不备齐
ZeRO-3权重与优化器状态切分到多卡大箱子拆开几个人抬

三步开启提速开关

安装与依赖

git clone https://gitcode.com/GitHub_Trending/ll/LlamaFactory cd LlamaFactory && pip install .

再执行pip install -r requirements/liger-kernel.txt装上 Liger Kernel(仓库要求版本 ≥0.6.3)。用标准模式安装是因为所有示例配置、基准脚本都随仓库提供,装完即可用。

只改三行配置

在训练配置(YAML)中加入:

enable_liger_kernel: true bf16: true deepspeed: examples/deepspeed/ds_z3_config.json

第一行管算子融合提速,第二行管半精度省显存,第三行管多卡切分状态,三者各管一件事、互不冲突,可以按需只开其中几项。

启动训练

llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml。选这个自带示例是因为它是完整的 Qwen3 LoRA SFT 配置(lora_rank: 8),跑通它就能验证整条链路没问题。

官方 README 中给出的终端操作示意:

效果验证与边界速查

提速比例不要照抄任何固定数字,因为结果随显卡、序列长度、batch size 变化。仓库自带基准脚本 scripts/bench_qwen.py:它用 Qwen2-VL-7B 构造 10000 条、序列长 1024 的模拟多模态数据,支持--liger_kernel True/False和 ZeRO-2/3 对比,你在自己的卡上跑一遍就能拿到属于自己的 A/B 数据。

以下情况不建议启用:

  • 模型架构不在 Liger Kernel 支持列表内(代码确认支持 llama、mistral/mixtral、qwen2/qwen2.5-VL/qwen3、gemma2/3、glm4、phi3、olmo2 等),日志会提示 "Current model does not support liger kernel" 并自动跳过
  • 非训练场景:代码在模型加载前直接检查是否处于训练阶段,聊天、导出模型不受影响
  • 单卡且显存本来就够:ZeRO-3 的通信是额外负担,用 bf16 + Liger Kernel 即可
  • 对训练时长极敏感:梯度检查点有重算开销,纯耗时会增加

常见踩坑速查

  • 开了 Liger Kernel 却没提速:先看日志是否提示模型不支持,不支持就关掉,不要硬开
  • 全参微调爆显存:先换 LoRA(参考 examples/train_lora/qwen3_lora_sft.yaml),或挂 ZeRO-3 配置;单卡场景可再启用 CPU offload
  • QLoRA 量化训练 loss 不稳:仓库参数校验里明确建议量化训练时开启upcast_layernorm,把 LayerNorm 权重升回 fp32
  • use_unsloth_gc 和 enable_liger_kernel 的区别:前者把激活值挪到内存省显存,后者融合算子提速,两者互补可同开

收尾

LLaMA-Factory 把"算子融合、混合精度、检查点重算、状态切分"这四件又快又省显存的事,收敛成配置文件里的几个开关。你可以 clone 仓库,先在自己的卡上跑一遍 scripts/bench_qwen.py,得到一组真实可用的提速数据再决定开哪些开关。

【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100+ LLMs & VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4164374.html

相关文章:

  • LLM Agent域外工具推理能力评估:AgentEscapeBench基准设计与实践
  • 大厂Java面试核心:Java基础、Spring Boot与Redis深度解析
  • C++模板参数获取:从基础使用到编译期反射的完整指南
  • 免费听全网易云和QQ音乐:第三方Web播放器NeteaseMusic完整使用指南
  • AI智能体部署后评估:从静态测试到持续监控的工程实践
  • 基于OpenClaw与AI大模型的求职辅助系统开发实践
  • 结构化面试自我认知类题目解析与应对技巧
  • 数学建模竞赛实战:从时空预测到优化调度完整解决方案
  • 【原创】基于微信小程序+AI大模型+uni-app的母婴用品商城与育儿知识小程序(设计与实现)
  • 机密计算与TEE技术:为AI智能体构建硬件级数据安全保险箱
  • 自动驾驶世界模型算法:技术要点与蔚来面试解析
  • qmcdump:3条命令把QQ音乐qmcflac/qmc0/qmc3解密成标准flac/mp3
  • 多模态情感分析指南:5种融合策略一次讲清
  • 3 条命令搞定 Papermerge 部署:让扫描件也能全文搜索
  • 选对AI论文写作软件提前 2 周交稿!高口碑工具盘点 + 避坑全攻略
  • 维恩图入门:从集合概念到容斥原理的图形化学习指南
  • 01-Nginx核心架构与工作原理:进程模型、并发处理、适配高并发售货柜业务
  • 医学影像指纹彩色化图像数据集
  • 校园招聘系统开发:Vue+UniApp跨平台实践与Node.js高并发处理
  • 从信息化到空间智能:Cognize-Agent驱动海关生态立体管控白皮书
  • 基于CameraGraph全域视场组网的机场旅客全流程无感定位与智能安防技术白皮书
  • taskt 免费开源 RPA 办公自动化工具:3 步上手你的第一个拖拽脚本
  • AI生成文本数据集
  • SpringBoot毕业生求职信息撮合平台设计与实现
  • 金融AI Agent批量处理抖音视频实战
  • 5 分钟搞定 ncmdump:NCM 转 MP3/FLAC 的本地解密完整指南
  • 如何用 Dark Reader 把任意网页变成深色模式:从零到顺手的一份指南
  • 画网络拓扑图不用从零造轮子:vue-webtopo-svgeditor 组态编辑器上手指南
  • Vue校园兼职招聘系统开发与优化实践
  • 华为OD机试红黑图算法解析与Java/Go实现