2023 年的秋天,当全世界都在为 ChatGPT 和大语言模型疯狂的时候,远在澳大利亚悉尼的一对兄弟却在为一个看似简单的问题发愁:为什么微调一个开源模型要花这么长时间,还要用那么昂贵的 GPU?
Daniel Han(全名是 Daniel Han-Chen)盯着屏幕上缓慢跳动的训练进度条,心里盘算着:一台免费的 Google Colab T4 GPU 上,训练一个 13B 参数的模型根本跑不起来,内存直接爆掉。而那些商用的解决方案,动辄需要价值数万美元的高端显卡。
Daniel 毕业于新南威尔士大学,此前曾在 NVIDIA 工作过一年半,专门负责算法优化。他认为这个问题并非无解。和弟弟 Michael Han-Chen 商量后,两人决定:既然大公司不愿意解决这个问题,那就自己动手。
![]()
图丨小时候的 Daniel Han 和 Michael Han(GitHub)
这个决定催生了一个改变 AI 训练规则的开源项目——Unsloth。
从 NVIDIA 出走的优化狂人
Daniel Han 的职业生涯可以用一个词概括:优化。
在 NVIDIA 期间,他让 TSNE(一种数据可视化算法)的运行速度提升了 2000 倍,优化了随机奇异值分解(Randomized SVD)等多个机器学习算法。他还维护着另一个开源项目 Hyperlearn,这个机器学习优化包被 NASA 和微软的工程师使用。
![]()
图丨Daniel Han(右)和 Michael Han(左)(linkedIn)
那段经历让他看清了一个事实:当前 AI 软件栈的性能瓶颈,很大程度上是软件问题而非硬件问题。PyTorch、TensorFlow 这些框架为了通用性做了大量妥协——为了支持各种硬件和模型架构,实现必然不是最优的。如果针对特定场景深度定制,性能提升空间巨大。
但真正让他决心投身开源硬件优化的,是一个更宏大的愿景。“OpenAI 和 Anthropic 这些大公司想通过更大的模型、更多的数据、更强的算力来实现 AGI,”Daniel 说,“而我们相信,通过更高效的模型、更快的训练方法、更少的资源消耗,也能让 AGI 惠及每一个人。”
2023 年 10 月,他们参加了欧洲的 LLM 效率挑战赛(LLM Efficiency Challenge)。比赛规则是在 24 小时内用一块 GPU 训练一个语言模型,看谁能获得最高准确率。但兄弟俩换了个思路——与其拼准确率,不如让训练本身变得更快。
“我用的是 Colab 和 Kaggle 的免费 GPU,T4 实在太慢了,有时候连 13B 的模型都装不下,”Daniel 回忆道。通过一系列底层优化,他们成功让训练速度提升了 2 倍,内存使用减少了 50%,而且完全没有精度损失。这个副产品式的成果,最终在 2023 年 12 月以开源项目的形式被发布,取名 Unsloth——意为“unslothing”,让 AI 训练不再缓慢如树懒。
![]()
(Unsloth)
没有营销预算,没有豪华团队。他们只是把代码放在 GitHub 上,在 Reddit 的 AI 开发者社区发了一条帖子。第一周就有上千名开发者试用。最常见的质疑是:“速度快两倍还不损失精度?怎么可能?”
Daniel 的回应非常简单:把所有技术细节公开。他在博客上详细解释手动推导反向传播的数学过程,展示 Triton 内核的源代码,甚至把性能测试的完整日志都放出来。怀疑者开始认真阅读代码,复现测试,发现结果确实如此。
为开源 LLMs 修 Bug
真正让 Unsloth 声名大噪的,是他们 2024 年 3 月对 Google Gemma 模型的“手术”。
Gemma 发布后,社区很快发现问题:训练时表现异常,损失值不收敛,微调效果差得出奇。论坛上出现各种猜测,但没人能给出确定答案。
Daniel 在集成 Gemma 到 Unsloth 时,发现的不是一个 bug,而是一串 bug。分词器有问题,位置编码计算不对,连基础的数值精度处理都有纰漏。他花三天时间,把 8 个 bug 的根源、触发条件和修复方案全部整理成文档,配有数学推导、性能对比和测试结果。
然后全部公开发布。
博客发布几小时后,社区上就有许多转载。Andrej Karpathy 转发评论:“这就是深入理解深度学习栈每一层的价值。”Google 团队随后确认了这些 bug,采纳修复方案,并在更新日志里致谢。
![]()
图丨相关推文(X)
类似的事情在接下来一年反复上演。meta 的 Llama 3、微软的 Phi-4、阿里 Qwen 2.5,每次重磅模型发布,Unsloth 都会迅速跟进,找出问题,公开方案。2024 年 10 月,他们甚至修复了一个影响所有训练框架的通用 bug——梯度累积的实现错误,被合并到 Hugging Face Transformers 主分支,惠及了全球数百万 AI 开发者。
“当我们在移植新模型时,如果发现自己的实现比官方版本效果更好,我们就知道肯定哪里出问题了,”Daniel 解释了他们的发现过程。这种对技术细节的执着和对开源社区的责任感,让 Unsloth 赢得了业界的尊重。Hugging Face 很快与他们建立了合作关系,在官方文档中推荐使用 Unsloth 来解决速度和内存问题。AWS、Intel 等大公司也主动接触,希望将 Unsloth 移植到自己的硬件平台上。
重写自动求导引擎
Unsloth 的核心创新在于对深度学习训练流程的彻底重构。大多数工程师会满足于使用 PyTorch 提供的自动求导功能,但 Daniel 认为这还不够。
“PyTorch 的 autograd 对大多数任务来说已经足够高效,但如果你想要极致性能,就必须自己推导矩阵微分,”Daniel 选择为所有计算密集型操作手工推导矩阵微分步骤。
举例来说,在注意力机制与低秩适应(LoRA, Low-Rank Adaptation)结合时,标准方法需要计算 6 个矩阵的导数。如果按照常规方式,计算 output = X × W + X × (A × B) 需要三次矩阵乘法和两个中间变量存储。但 Daniel 通过代数变换优化为 output = X × (W + A × B)——先计算小矩阵 W + A × B,最后只与大矩阵 X 相乘一次。
这种看似简单的代数技巧,单独贡献了约 4-6% 的速度提升。更关键的是,它显著减少了 GPU 显存占用。因为 LoRA 权重矩阵通常只有 8 到 128 的维度,而 Llama 系列模型的权重维度是 4096 或更大,正确放置括号能将浮点运算次数减少数个数量级。
兄弟俩还用 OpenAI 的 Triton 语言重写了所有关键计算内核,包括 RoPE(Rotary Position Embedding)位置编码、RMS 层归一化(Root Mean Square Layer Normalization)、交叉熵损失函数等。这些手写的内核不仅更快,代码也更清晰易读。
此外,还有他们独创的“动态量化”技术。标准的 4-bit 量化会压缩所有层,但 Unsloth 能识别出对模型精度影响大的敏感层,在这些层保持高精度,从而在大幅节省显存的同时保持模型性能。
但在所有优化中,内存减少才是 Unsloth 最大的优势。Daniel 反复强调这一点:“我们百分之七十到八十的内存减少才是最重要的。不是速度,而是内存。”随着模型规模不断增大,内存瓶颈比计算速度更容易成为制约因素。一个 16GB 显存的 T4 GPU,在标准训练流程下连 130 亿参数的模型都无法完整加载,但使用 Unsloth 后,48GB 显存的 GPU 就能训练 700 亿参数的 Llama 3 模型。
![]()
图丨在 SlimOrca 数据集的测试结果(Unsloth)
测试结果显示,在单块 Tesla T4 GPU 上,使用 Hugging Face 标准实现训练 Alpaca 数据集需要 23 小时 15 分钟,而 Unsloth 的 Max 版本只需要 2 小时 34 分钟,相当于 8.8 倍的速度提升。在 SlimOrca 数据集上,391 小时被压缩到 51 小时。内存使用方面,峰值从 16.7GB 降到 6.9GB,减少了 59%。
从边缘走向中心
这一波 AI 浪潮中,模型的参数量不段扩大,从最初几十亿到如今的上万亿的参数量,规模膨胀了上百倍,给个人开发者和小团队带来了巨大压力——要么付费使用闭源 API,要么购买昂贵的硬件。而 Unsloth 让第三条路成为可能。一台消费级显卡,比如 RTX 4090,配合 Unsloth 就能完成以前需要数据中心级别硬件才能做的微调任务。
截至今天,Unsloth 在 GitHub 上的星标已超过 4 万(目前约 47,500),每月模型下载量超过 200 万次。来自中国、智利、尼加拉瓜、危地马拉、印度、意大利、土耳其等国的开发者,已经基于 Unsloth 框架微调出超过 110 个模型应用。
这种普及带来了意想不到的效果。除了能让各行各业都能更轻松地训练出属于自己的专有模型,Daniel 还提到了一个最让他骄傲的用例:“语言翻译。大多数大语言模型只在特定语言集上预训练,很多只支持英语。但我们看到很多来自母语非英语国家的开发者,用 Unsloth 把英语模型转换成他们的本地语言。”
从日语到印尼语,从韩语到各种印度地方语言,Unsloth 让模型本地化变得触手可及。在他们的 GitHub 仓库中,有一个专门的韩语翻译示例笔记,详细展示了如何将英语模型转换为韩语模型。这个看似简单的功能,却让全球数十亿非英语使用者第一次真正拥有了自己语言的 AI 工具。
开源的力量
回顾 Unsloth 的发展历程,开源始终是核心。为了维持项目的可持续性,他们提供了 Pro 和 Max 两个付费版本,前者支持多 GPU 训练和更多优化,后者还包括从零开始训练大模型的内核,并能将代码移植到 AMD 和英特尔 GPU 上。但核心的开源版本始终保持免费。“开源最大的价值是信任,”Daniel 说,“AI 领域最大的问题就是信任。如果你做开源,每个人都能检查你的代码,贡献改进,发现并修复 bug。”
兄弟俩的 Discord 社区异常活跃,GitHub Issues 中充满了用户的改进建议和 bug 报告。“我们的 Discord 服务器上,每个人都很友好,”Michael 说,“大家喜欢互相帮助,讨论自己热爱的东西。开源社区就是这样一个让志同道合的人聚在一起的地方。”
这种开放协作的氛围也影响了他们的产品规划。“当所有人都在要求某个功能时,我们就会去实现它,”Daniel 表示,“如果是闭源产品,很难决定先做哪个功能。开源让用户需求变得透明。”
目前,Unsloth 已经支持了 Llama 系列、Mistral、Gemma 系列、Phi 系列、Qwen 系列、DeepSeek 系列等主流开源模型。“我们的首要目标始终是开源,”Michael 强调,“让所有模型都能用上我们的优化技术,而不只是少数几个。”
“当大公司用 100,000 块 H100 训练模型时,我们要证明,用更少的资源、更聪明的方法,也能让 AI 惠及每一个人。”Daniel 说。
参考资料:
1.https://unsloth.ai/introducing
2.https://unsloth.ai/blog/reintroducing
3.https://www.youtube.com/watch?v=6t2zv4QXd6c
4.https://www.youtube.com/watch?v=lyVxD0bJDOk
5.https://www.youtube.com/watch?v=z9f4bEgFZCg
运营/排版:何晨龙





京公网安备 11011402013531号