news 2026/4/3 6:38:24

使用Liger-Kernel优化训练吞吐量,GPU利用率提升至95%+

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用Liger-Kernel优化训练吞吐量,GPU利用率提升至95%+

使用Liger-Kernel优化训练吞吐量,GPU利用率提升至95%+

在大模型训练的日常中,你是否经历过这样的场景:A100显卡风扇呼呼作响,nvidia-smi 却显示 GPU 利用率长期徘徊在 60%~70%,而训练进度条却像蜗牛爬行?明明硬件堆上去了,效率却始终“卡脖子”。这背后,往往不是算力不足,而是大量时间被浪费在了GPU Kernel 启动开销频繁的显存读写上。

尤其是在微调 LLaMA、Qwen 这类主流 Decoder-only 架构时,每一层 Transformer 都要重复执行 RMSNorm、RoPE、线性投影、激活函数等一系列小算子。传统 PyTorch 实现将它们拆分成多个独立 CUDA kernel 调用,数据不得不反复进出全局显存——就像一条流水线上工人来回跑仓库取料,真正干活的时间反而不多。

有没有办法让这些操作“一口气”完成?有,而且已经落地了。

近年来,随着Liger-Kernel的出现,我们终于看到了打破这一瓶颈的实用方案。它通过深度算子融合(Operator Fusion),把原本分散的计算步骤打包成一个高效内核,在 register 或 shared memory 级别完成数据传递,极大减少了 kernel launch 次数和内存带宽占用。配合魔搭社区推出的ms-swift全链路训练框架,开发者只需一行配置,就能让 GPU 利用率从“挤牙膏”式上升到95%+,训练吞吐直接提升 30%~50%。

这不是理论推测,而是我们在实际项目中的真实观测结果。接下来,我会带你深入这个技术组合的核心机制,并分享一些工程实践中踩过的坑和总结出的最佳实践。


Liger-Kernel 本质上是一个专为 Transformer 架构优化的高性能 PyTorch 扩展库,由 ModelScope 社区主导开发并深度集成于 ms-swift 框架中。它的设计哲学非常明确:减少非计算时间,最大化 GPU 计算单元的饱和度

以典型的 LLaMA 模型为例,其注意力模块前通常包含如下顺序操作:

x = rms_norm(x) q = apply_rope(linear_q(x)) k = apply_rope(linear_k(x)) v = linear_v(x)

在标准实现中,每一步都是独立的 tensor operation,意味着至少触发 4 次 kernel launch,并伴随多次 global memory load/store。而 Liger-Kernel 将RMSNorm + Linear + RoPE直接融合为一个 CUDA kernel,数据流在更低延迟的内存层级完成流转:

[Input] → [FusedKernel: RMSNorm → Linear → RoPE] → [Output]

这种融合不仅节省了显存访问成本,还规避了中间变量的缓存分配。实测表明,单是这一项优化就能将每层前处理时间降低约 20%。更进一步地,Liger-Kernel 还支持输出层的fused_linear_cross_entropy,即把最后一层的线性变换与交叉熵损失合并,显著减少反向传播时的梯度计算开销。

我们曾在一个 Qwen-7B 的 SFT(监督微调)任务中做过对比测试:使用相同 batch size=64、seq_len=2048、LoRA rank=64 的配置,在 A100-80GB 单卡环境下:

配置GPU 利用率吞吐(it/s)显存占用
原生 PyTorch~72%4819.3 GB
+ Liger-Kernel96.3%7317.1 GB

吞吐提升了52%,显存节省了2.2GB,相当于多出了近 10% 的可扩展空间。这意味着你可以要么增大 batch size 继续压榨吞吐,要么在有限显存下跑更大的模型或更长序列。

更重要的是,这一切几乎无需修改代码。Liger-Kernel 提供了对 HuggingFace Transformers 模型结构的高度兼容接口,只需调用一个函数即可完成注入:

from liger_kernel.transformers import apply_liger_kernel_to_llama model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8b", torch_dtype=torch.bfloat16) apply_liger_kernel_to_llama( model, use_fused_rmsnorm=True, use_fused_rope=True, use_fused_linear_cross_entropy=True, )

只要你的模型属于 LLaMA 系列、Mistral、Qwen、Phi-3 等基于 RMSNorm 和 RoPE 的架构,这套机制就能无缝生效。不需要重写 forward 函数,也不需要手动编写 CUDA 内核——这才是真正的“轻量级加速”。

当然,这种极致性能的背后也有代价:你需要编译安装定制化的 CUDA kernel。这意味着环境依赖管理变得更为关键。建议使用预构建的 Docker 镜像或 Conda 环境来隔离依赖,避免因 PyTorch/CUDA 版本不匹配导致编译失败或运行时错误。

我们推荐的安装方式是:

pip install liger-kernel --index-url https://pypi.org/simple/

注意:需确保 CUDA Toolkit ≥ 11.8,且 PyTorch 版本与之兼容(如 PyTorch 2.1+)。若遇到CUDA illegal memory access错误,优先检查驱动版本和 NCCL 配置。


如果说 Liger-Kernel 是“发动机升级”,那么ms-swift就是整套“自动驾驶系统”。它不是一个简单的训练脚本集合,而是一个覆盖大模型全生命周期的一体化平台,目前已支持超过 600 个纯文本模型和 300 多个多模态模型。

它的核心价值在于“开箱即用”:无论你是要做 SFT、DPO、PPO 还是 KTO,都不需要从头搭建训练循环。所有分布式策略(DDP、ZeRO、FSDP)、量化方法(BNB、GPTQ、AWQ)、推理引擎(vLLM、LmDeploy)都被封装成了标准化接口。

比如,启动一次启用 Liger-Kernel 的 LoRA 微调,只需要一条命令:

swift sft \ --model_type qwen/Qwen-7B \ --dataset alpaca-en \ --lora_rank 64 \ --use_liger True \ --output_dir ./output

其中--use_liger True是关键开关,框架会自动检测并加载对应的融合内核。整个过程包括模型下载、Tokenizer 初始化、数据预处理、训练调度、Checkpoint 保存全部自动化完成。

不仅如此,ms-swift 还提供了 Web UI 模式,适合不熟悉命令行的用户进行可视化操作。同时支持 CLI 和 GUI 双模式,兼顾灵活性与易用性。

其底层架构清晰分层,形成了从应用到底层的完整优化闭环:

graph TD A[用户界面 CLI / Web UI] --> B[ms-swift Trainer Engine] B --> C{启用 --use_liger?} C -- 是 --> D[Liger-Kernel 融合算子] C -- 否 --> E[原生 PyTorch 操作] D --> F[HuggingFace 模型实例] E --> F F --> G[GPU CUDA Core]

在这个体系中,Liger-Kernel 并非孤立存在,而是与 LoRA、QLoRA、FlashAttention-2 等其他优化手段协同工作,共同构成高效的轻量训练栈。例如:

  • QLoRA + Liger-Kernel:可在单张 A10(24GB)上完成 Qwen-7B 的全参数微调;
  • FlashAttention-2 + Liger-Kernel:进一步压缩 attention 计算时间,尤其在长序列场景下优势明显;
  • TF32 精度启用:Ampere 架构及以上 GPU 可开启 tf32,加速矩阵乘而不牺牲收敛性。

我们在多个客户项目中验证过这套组合拳的效果。某金融企业需要对 Llama-3-8b 进行领域适配微调,原始方案训练周期长达 3 天。切换至 ms-swift + Liger-Kernel 后,仅用不到 1.5 天即完成训练,且最终评测指标更高——因为更高的 GPU 利用率带来了更稳定的 batch 处理节奏,减少了训练抖动。


当然,任何技术都有适用边界。Liger-Kernel 当前主要针对采用 RMSNorm 和 RoPE 的现代 Decoder-only 模型,对于 BERT 类使用 LayerNorm 或 ALiBi 编码的架构尚不支持。如果你正在微调 T5 或 BART,可能暂时无法受益。

此外,为了充分发挥融合优势,我们也总结了几点最佳实践:

  1. 避免过短序列:当seq_len < 512时,kernel fusion 的收益会被启动开销稀释,建议在常规微调任务中保持序列长度 ≥ 1024;
  2. 结合梯度累积使用:虽然单步变快了,但学习率调度仍需根据 effective batch size 调整;
  3. 监控注入状态:训练日志中搜索"Applied Liger kernel"字样,确认融合成功;
  4. 慎用于调试模式:由于融合后难以插入 hook 或打印中间值,建议在调试阶段先关闭;
  5. 关注未来演进:社区已在推进 MoE 架构和 Streaming Transformer 的支持,值得持续跟进。

回到最初的问题:如何让 GPU 忙起来?

答案不再是盲目增加 batch size 或更换更贵的硬件,而是从底层算子层面重新思考效率问题。Liger-Kernel 的意义,正是把那些被忽略的“碎片时间”重新捡回来,让每一次显存访问都更有价值。

当你看到 nvidia-smi 输出的 GPU Util 达到95%+,训练吞吐翻倍增长时,那种流畅感不只是数字上的变化,更是一种工程美学的体现——计算资源终于不再空转,而是真正服务于模型迭代本身。

对于中小企业而言,这意味着可以用更低的成本完成模型定制;对于研究者来说,则能更快验证想法、加速论文产出;而对于开源社区,这种低门槛的高性能工具链,正在让更多人有机会参与到大模型的技术浪潮中。

可以预见,随着更多模型架构被纳入支持范围,以及与 MoE、动态批处理等新技术的深度融合,Liger-Kernel 与 ms-swift 的组合将在大模型工业化落地的过程中扮演越来越重要的角色。

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

VMware虚拟机完美隐身指南:3步消除所有检测特征

VMware虚拟机完美隐身指南&#xff1a;3步消除所有检测特征 【免费下载链接】VmwareHardenedLoader Vmware Hardened VM detection mitigation loader (anti anti-vm) 项目地址: https://gitcode.com/gh_mirrors/vm/VmwareHardenedLoader 在网络安全研究领域&#xff0c…

作者头像 李华
网站建设 2026/3/27 17:17:26

AI图表的终极革命:用自然语言重塑专业图表制作

AI图表的终极革命&#xff1a;用自然语言重塑专业图表制作 【免费下载链接】next-ai-draw-io 项目地址: https://gitcode.com/GitHub_Trending/ne/next-ai-draw-io 你是否曾经为了绘制一张简单的流程图而花费数小时&#xff1f;是否在面对复杂的系统架构图时感到无从下…

作者头像 李华
网站建设 2026/3/30 21:51:27

Goyo.vim:多标签页专注写作的终极指南

Goyo.vim&#xff1a;多标签页专注写作的终极指南 【免费下载链接】goyo.vim :tulip: Distraction-free writing in Vim 项目地址: https://gitcode.com/gh_mirrors/go/goyo.vim 你是否曾经在写作时被各种干扰打断&#xff1f;Goyo.vim正是为你量身打造的专注写作神器&a…

作者头像 李华
网站建设 2026/3/27 14:32:13

SeedVR2-3B终极指南:一键完成专业级视频修复

SeedVR2-3B终极指南&#xff1a;一键完成专业级视频修复 【免费下载链接】SeedVR2-3B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/SeedVR2-3B 还在为模糊的视频画面而烦恼吗&#xff1f;&#x1f3ac; 字节跳动推出的SeedVR2-3B模型彻底改变了视频修…

作者头像 李华
网站建设 2026/3/13 7:11:04

ESP32音频处理实战:如何解决回声消除与噪声抑制难题?

ESP32音频处理实战&#xff1a;如何解决回声消除与噪声抑制难题&#xff1f; 【免费下载链接】xiaozhi-esp32 小智 AI 聊天机器人是个开源项目&#xff0c;能语音唤醒、多语言识别、支持多种大模型&#xff0c;可显示对话内容等&#xff0c;帮助人们入门 AI 硬件开发。源项目地…

作者头像 李华
网站建设 2026/4/2 2:18:12

手把手带你玩转Taro跨端开发:一套代码搞定8大平台

手把手带你玩转Taro跨端开发&#xff1a;一套代码搞定8大平台 【免费下载链接】taro 开放式跨端跨框架解决方案&#xff0c;支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/ 项目地址: https:/…

作者头像 李华