训练优化
Unsloth 声称新 Triton 内核与自动打包技术实现 5 倍 LLM 训练加速
Unsloth 最新更新引入了融合 QK RoPE Triton 内核,实现 2.3 倍旋转嵌入加速;int64 索引支持长上下文;以及自动免填充打包。基准测试显示,Qwen3-32B 模型吞吐量提升 1.7-3 倍,且准确率无损失。

面向 LLM 实践者的开源微调库 Unsloth 已发布重大升级,声称可将训练速度提升至多 5 倍,同时将显存使用量削减 30% 至 90%。这些改进来自一套定制的 Triton 内核以及全新的智能自动打包系统, , 开发团队表示,该系统兼容任何注意力后端(FlashAttention 3、xFormers 或 SDPA)以及任何模型系列。
最引人注目的新增是一个融合的 QK RoPE 内核。此前,每个查询和键需要两个独立的 Triton 内核;新实现将它们合并为一个,支持可变长度 RoPE。在微基准测试中,融合内核在较长上下文长度上快 2.3 倍,在较短上下文上快 1.9 倍。该内核完全原地操作,消除了克隆和连续转置操作,进一步降低了 GPU 内存压力。
Unsloth 还解决了长上下文训练中长期存在的限制:在 500K token 运行中,Triton 和 CUDA 中默认的 int32 索引会导致 CUDA 超出边界错误。修复引入了一个 LONG_INDEXING 编译时常量,允许 Triton 编译器针对较短和较长的上下文专门化内核,而不会产生开销。
“通过改变 50% 短序列的比率,并假设我们拥有更多短序列,例如 20% 长序列和 80% 短序列,我们实现了 5 倍更快的训练,”Unsloth 团队在发布中写道。“这意味着打包的加速取决于你的数据集中短行的比例,短行越多,速度越快。”
自动打包系统(默认启用)自动将多个短序列批量处理为单个一维张量,保留序列长度元数据以避免样本之间的注意力泄露。结果:在 yahma/alpaca-cleaned 数据集上以不同批大小运行的 Qwen3-32B 微调任务中,报告吞吐量提升了 1.7-3 倍,某些配置下达到 5 倍或更多。Unsloth 强调训练损失与未打包运行完全一致。
团队发布的基准结果显示,在没有打包的情况下,当批大小为 8 时,填充 token 可占一个批次近 50%。启用打包后,有效 token 利用率保持在接近 100%,与批大小无关。Qwen3-8B 和 Qwen3-32B 的内存使用量减少了 60%,同时吞吐量翻倍。
此次升级适用于所有训练方法,包括全微调、预训练和强化学习,并且向后兼容较旧的 GPU,如 Tesla T4 和 RTX 2080,以及较新的 H100 和 B200。用户只需更新 Unsloth 即可默认获得免填充批处理;显式打包可通过在 SFTConfig 中设置 packing = True 启用。
此次发布基于 Unsloth 此前在 2023 年 12 月对 RoPE 内核的工作,以及 2024 年 3 月的一个社区 PR, , 该 PR 通过优化内核为每组头部启动块,使端到端训练速度提升了 1-2%。
Unsloth 将自己定位为面向微调的轻量级 Hugging Face Trainer 替代方案,现在声称支持包括 Qwen3 系列、Llama 3.1 等在内的模型。该库在 Google Colab 上的笔记本已自动更新。
每天早晨用 3 分钟掌握科技要闻
每个工作日一封邮件,只讲真正重要的 AI 与科技动态。