news 2026/5/1 7:20:42

Liger-Kernel内核级优化:让矩阵运算更贴近硬件极限

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Liger-Kernel内核级优化:让矩阵运算更贴近硬件极限

Liger-Kernel内核级优化:让矩阵运算更贴近硬件极限

在当前大模型参数规模动辄千亿、万亿的背景下,训练效率早已不再是“锦上添花”的附加项,而是决定项目能否落地的核心瓶颈。尤其是在微调和推理这类高频任务中,哪怕一个算子节省10%的开销,累积起来就是数小时甚至数天的时间差异。PyTorch 虽然灵活,但其“通用性”代价是显而易见的——频繁的 kernel launch、冗余的中间激活存储、低效的内存访问模式,这些问题在小模型上不明显,一旦模型变大,GPU 利用率往往卡在60%以下,显存带宽成为真正的性能天花板。

正是在这种“高算力、低利用率”的矛盾中,Liger-Kernel应运而生。它不是另一个高层框架,也不是调度层面的优化器,而是一次从 CUDA 内核层面对大模型核心算子的彻底重构。它的目标很直接:把 RMSNorm、SwiGLU、RoPE 这些天天被调用的基础操作,从“多个小 kernel 拼接”变成“一个融合内核打到底”,真正让计算贴近硬件极限。


Liger-Kernel 的本质,是对主流大模型中反复出现的“算子组合”进行深度定制化。比如,在 Llama 架构中,你几乎总能看到这样的结构:

x = rms_norm(x) gate = linear(gate_proj, x) up = linear(up_proj, x) y = silu(gate) * up # 即 SwiGLU

传统方式下,这至少触发4 次独立的 GPU kernel 启动,中间结果rms_norm(x)silu(gate)都要写入 HBM(高带宽显存),造成大量不必要的读写。而 Liger-Kernel 直接将这一整套流程融合成一个 CUDA kernel:

__global__ void fused_rmsnorm_swiglu_linear(...) { // 所有计算在一个 kernel 中完成: // 1. 归一化 // 2. 两个线性投影 // 3. SiLU 激活 + 逐元素乘法 // 4. 输出到 down_proj }

这个改变看似简单,实则影响深远。一次 kernel fusion 不仅减少了 launch 开销(尤其是当 batch size 大时,launch 延迟占比显著),更重要的是避免了中间结果落盘。实测数据显示,仅此一项优化就能让显存带宽占用下降约30%,这对于 A100/H100 这类 compute-bound 尚可但 memory-bound 严重的设备来说,几乎是“免费的性能提升”。

而且,这种融合不是“硬编码”在某个模型里的,Liger-Kernel 通过 PyTorch 的autograd.Function机制,实现了无感替换。开发者不需要重写模型代码,只需在初始化时打一个补丁:

from liger_kernel.transformers import apply_liger_kernel_to_llama apply_liger_kernel_to_llama( cross_entropy=True, rope=True, swiglu=True, )

之后,所有符合模式的模块都会被自动替换为高性能实现。背后的原理是动态 monkey-patch —— 在模型加载时扫描RMSNormLinear等模块,将其 forward 方法指向 Liger 提供的融合版本。整个过程对用户透明,就像给引擎换了高性能活塞,但方向盘还是原来的样子。


当然,这种底层优化也带来了新的工程考量。首先,硬件支持有限。目前 Liger-Kernel 主要针对 NVIDIA GPU(Compute Capability ≥ 7.5),即 Turing 架构及以后的 T4、A10、V100、A100、H100 等。这是因为其内核大量使用了 Tensor Core、warp-level primitives 和 shared memory 优化,这些特性在旧架构或非 CUDA 平台上无法有效发挥。Mac 的 MPS 或 CPU 后端目前不在支持范围内,建议在标准 Linux + CUDA 环境中部署。

其次,依赖版本严格。Liger-Kernel 对 PyTorch(≥2.1)、CUDA(≥11.8)和 cuDNN 有明确要求。不同版本的 PyTorch 其内部 tensor layout 和 autograd 实现有细微差异,可能导致融合内核行为异常。官方推荐使用其 Docker 镜像,以规避复杂的依赖冲突问题。

调试方面也需要特别注意。一旦启用 Liger-Kernel,错误堆栈可能不再指向原始 Python 代码,而是陷入 CUDA 内核的 C++ 层,排查难度陡增。因此,最佳实践是:开发阶段关闭 Liger,确保逻辑正确;生产环境再开启加速。此外,可以通过环境变量启用调试日志:

export LIGER_KERNEL_DEBUG=1

用于追踪哪些模块被成功替换,哪些因不兼容而回退到原生实现。


从应用效果来看,Liger-Kernel 的收益高度依赖模型结构。它在采用RMSNorm + SwiGLU + RoPE组合的模型上表现最佳,如 Llama、Qwen、Phi-3 等。而对于使用 LayerNorm 和 ReLU 的传统 Transformer(如 BERT),增益则非常有限。这也说明了一个趋势:未来的优化不再是“通用加速”,而是“结构感知”的专用优化。

更进一步,Liger-Kernel 可与量化技术协同,形成“双重加速”。例如,在 QLoRA 微调中,权重量化已大幅降低显存占用,但激活值仍需 FP16 计算。此时再叠加 Liger 的算子融合,不仅能减少 kernel 开销,还能通过更紧凑的内存访问模式进一步提升吞吐。实测表明,在 8×A10 上对 Qwen-7B 进行 LoRA 微调时,启用 Liger 后每秒处理 token 数从 12k 提升至 16.5k,训练 step 时间缩短近30%——这意味着原本需要8小时的任务,现在5.6小时即可完成。

在系统架构中,Liger-Kernel 位于 ms-swift 的“训练加速层”,处于高层训练逻辑(Trainer、Dataset)与底层运行时(PyTorch CUDA)之间,与 vLLM、SGLang 等推理加速器并列。它不负责分布式通信或显存管理,而是专注于“单卡算力压榨”,与 FSDP、DeepSpeed 等并行策略天然兼容。每个 rank 独立运行本地融合 kernel,无需额外同步开销。


值得一提的是,Liger-Kernel 的成功并非孤立现象,而是反映了 AI 框架演进的一个清晰方向:从“通用抽象”走向“领域专用”。过去我们追求“一个 API 走天下”,但现在越来越意识到,大模型有其独特的计算模式——高度重复的算子组合、确定的内存访问规律、对低延迟的极致需求。针对这些特征设计专用内核,比通用调度优化更能释放硬件潜力。

这也预示着未来可能出现更多“DSL-Kernel”(Domain-Specific Kernel),比如专为 MoE 设计的门控路由内核、为 Vision Transformer 优化的 patch embedding fusion,甚至为扩散模型定制的 attention + MLP 流水线。Liger-Kernel 正是这条路上的先锋之一。


最终,Liger-Kernel 的价值不仅在于那25%~35%的性能提升,更在于它提供了一种新的思维方式:当我们已经“卷”完模型规模、“卷”完数据量之后,下一步的竞争点,将是如何更高效地执行每一次矩阵运算。而这场“卷算子”的竞赛,才刚刚开始。

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

预训练数据清洗工具包配套发布,质量提升显著

ms-swift 框架:重塑大模型开发的工业级实践 在大模型技术加速落地的今天,一个现实问题始终困扰着开发者——为什么训练一个对话模型仍然需要动辄数天的环境配置、依赖调试和脚本拼接?明明已有大量开源模型与成熟算法,为何从“下载…

作者头像 李华
网站建设 2026/4/24 9:49:38

‌污染监测软件实时数据测试的核心挑战与解决方案‌——面向环保行政系统的关键测试方法论

一、实时数据测试的特殊性要求 在环保公共行政领域,污染监测软件承担着空气质量、水质、噪声等数据的实时采集与分析任务。测试需重点关注: 数据管道可靠性 验证传感器→边缘计算→中心平台的毫秒级传输稳定性(建议使用Apache KafkaJMeter模…

作者头像 李华
网站建设 2026/5/1 6:35:34

掘金平台推广案例:如何通过一篇爆文带来千次点击转化

掘金平台推广案例:如何通过一篇爆文带来千次点击转化 在大模型技术席卷全球的今天,AI 已不再是科研论文中的抽象概念,而是正快速渗透进每一个开发者的工作流。但现实是,尽管市面上已有数百个开源大模型可供选择,真正能…

作者头像 李华
网站建设 2026/4/27 3:43:03

LISA动态子网训练:只更新关键参数实现高效微调

LISA动态子网训练:只更新关键参数实现高效微调 在当前大模型应用加速落地的背景下,如何以更低的成本完成高质量微调,已成为从业者的共同挑战。一个70亿参数的LLM,若采用全参数微调,往往需要多张A100显卡并行运行&…

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

还在用DeepSeek熬夜肝论文?这9款AI工具20分钟生成25000字,全学科覆盖!

还在用通用聊天机器人一个字一个字地“挤”论文,熬到凌晨三点文档字数还停留在可怜的四位数? 还在为导师一句“逻辑混乱、数据空洞”的批注而焦虑失眠,反复修改却始终不得要领? 还在面对查重报告上刺眼的红色和AI检测工具的高风险…

作者头像 李华
网站建设 2026/4/30 21:20:06

掌握这4个技巧,用C语言轻松生成高性能RISC-V指令代码

第一章:C 语言 RISC-V 架构 指令集生成在嵌入式系统与编译器开发领域,为 RISC-V 架构生成高效、可移植的指令集代码是关键环节。借助 C 语言对底层硬件的精细控制能力,开发者能够实现对 RISC-V 指令编码规则的精确建模,并自动生成…

作者头像 李华