news 2026/8/22 21:34:25

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 21:32:45

LLM Agent域外工具推理能力评估:AgentEscapeBench基准设计与实践

1. 项目概述:为什么我们需要一个“越狱”基准?最近和几个做LLM Agent的朋友聊天,大家普遍有个感觉:现在评测Agent的基准,大多是在“温室”里进行的。给Agent一堆它训练时见过的工具,让它在一个熟悉的领域里…

作者头像 李华
网站建设 2026/8/22 21:32:37

大厂Java面试核心:Java基础、Spring Boot与Redis深度解析

1. 为什么大厂面试总盯着Java核心、Spring Boot和Redis不放?去年帮团队面试了37个Java开发,发现一个有趣现象:候选人能把微服务架构讲得头头是道,但问到HashMap扩容机制时,有28个人卡壳。这背后反映出一个现实——大厂…

作者头像 李华
网站建设 2026/8/22 21:32:24

C++模板参数获取:从基础使用到编译期反射的完整指南

1. 从“黑盒”到“白盒”&#xff1a;为什么我们需要获取函数模板参数&#xff1f;在C模板元编程的日常实践中&#xff0c;我们常常会写出这样的函数模板&#xff1a;template<typename T> void processData(const T& data) {// 对data进行一些处理std::cout <<…

作者头像 李华
网站建设 2026/8/22 21:30:53

AI智能体部署后评估:从静态测试到持续监控的工程实践

1. 项目概述&#xff1a;当AI智能体走出实验室&#xff0c;我们如何“听诊”其真实表现&#xff1f;在AI领域&#xff0c;尤其是大语言模型驱动的智能体&#xff08;AI Agents&#xff09;技术&#xff0c;正经历着一场从“演示惊艳”到“落地实用”的关键转型。过去一年&#…

作者头像 李华
网站建设 2026/8/22 21:29:04

基于OpenClaw与AI大模型的求职辅助系统开发实践

1. 项目背景与核心价值最近在帮几个朋友做职业辅导时&#xff0c;发现一个普遍痛点&#xff1a;很多技术人在求职过程中&#xff0c;面对AI大模型相关岗位时缺乏系统性准备方案。传统的人工简历优化和模拟面试效率低下&#xff0c;而市面上的AI工具又过于零散。于是我用OpenCla…

作者头像 李华