
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 存储约 14GB7×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 offloadQLoRA 量化训练 loss 不稳仓库参数校验里明确建议量化训练时开启upcast_layernorm把 LayerNorm 权重升回 fp32use_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),仅供参考