进阶 unsloth.ai 2026-10-07 22:27:00 · 6 阅读
第22章 使用 Unsloth 微调 Llama 3.3:速度翻倍且显存占用降低 75%
unsloth
下载
☰
下载
博客 使用 Unsloth 微调 Llama 3.3 2024年12月10日 • 作者 Daniel & Michael
Llama 3.3 (70B) 1xA100 80GB 13倍更长上下文
Llama 3.3 (70B) 1xA100 80GB 2倍更快
Llama 3.3 (70B) 1xA100 80GB 减少75%显存
Meta 新发布的 Llama 3.3 (70B) 模型性能接近 Llama 3.1 (405B)。相比之下,Unsloth 让 Llama 3.3 (70B) 的微调速度比 Flash Attention 2 (FA2) + Hugging Face (HF) 快 2 倍,且内存占用减少 70%。
< br>
新功能:Unsloth 现在支持对 Llama 3.3 (70B) 进行长达 89,000 上下文的微调,是 HF + FA2 在 80GB GPU 上支持的 6,900 上下文的 13 倍。Unsloth 新的超长上下文支持能力比之前版本长 1.85 倍。这得益于我们的梯度检查点算法,并且我们合作苹果引入了他们新的 Cut Cross Entropy (CCE) 算法。
请注意,此项新更新适用于所有模型,不仅限于 Llama。我们还上传了 GGUF + 预量化 4bit 模型到我们的 Hugging Face 页面,下载速度提升 4 倍。 GGUF - Llama 3.3 (70B) Instruct BnB 4bit - Llama 3.3 (70B) Instruct 原始 16bit - Llama 3.3 (70B) Instruct 🦙 Llama 3.3 基准测试 对于 Llama 3.1 (8B),Unsloth 现在支持高达 342,000 的上下文长度,超过了 Llama 3.1 支持的 128K 上下文长度。Hugging Face + FA2 在 80GB GPU 上仅支持 28,000,因此 Unsloth 支持的上下文长度是其 12 倍。在 8GB GPU 上,HF+FA2 会因显存不足而失败,而 Unsloth 现在支持最长 2,900 的上下文长度,之前为 1,500。 模型 | 显存 | 🦥Unsloth 速度 | 🦥 显存节省 | 🦥 更长上下文 | 🤗Hugging Face+FA2 Llama 3.3 (70B) | 80GB | 2x | >75% | 13x 长 | 1x Llama 3.1 (8B) | 80GB | 2x | >70% | 12x 长 | 1x 测试使用 Alpaca 数据集,批次大小为 2,梯度累积步数为 4,秩 = 32,并对所有线性层(q, k, v, o, gate, up, down)应用了 QLoRA。 🦙 Llama 3.3 (70B) 微调仅需 41GB 显存 Llama 3.3 (70B) 最大上下文长度 GPU 显存 Unsloth
(+ Apple CCE) Unsloth
(旧版)Hugging Face+FA248 GB12,1067,385OOM80 GB89,38948,4476,916我们在 80GB A100 上测试了 Llama 3.3 (70B) Instruct,对所有线性层(Q、K、V、O、gate、up、down)做 4bit QLoRA,rank 设为 32,batch size 为 1。所有序列都填充到固定的最大序列长度,以模拟长上下文微调的工作负载。Apple Cut Cross Entropy我们与 Apple Cut Cross Entropy 的作者(包括 Erik)合作,把一个用 Triton 编写的省显存交叉熵 kernel 集成到了 Unsloth 中,并且让它兼容 Tesla T4、RTX 20 系列等较老的 GPU。他们的论文可以在这里阅读。
它不像传统做法那样把 logits 完整算出来存下来,而是像 Flash Attention 那样边算边做矩阵乘法,显存占用因此大幅降低。同时在计算梯度时智能地忽略极小的数值,且不影响精度,性能也能得到提升。
CCE 让 Llama 3.1 (8B) 的长上下文支持再提升 3.6 倍,Llama 3.3 (70B) Instruct 提升 1.85 倍。把 Unsloth Gradient Checkpointing 和 Cut Cross Entropy 的收益相乘,新版 Unsloth 的上下文长度支持总共比 HF+FA2 长 12-13 倍!
要对 Llama 3.3 70B 做长上下文微调,可以在这里下载我们的 4bit 预量化 bitsandbytes 版本,减少显存碎片,并把下载速度提升 4 倍。🦥 Unsloth Gradient Checkpointing2024 年 4 月,我们推出了 Unsloth Gradient Checkpointing 算法,以极小的性能开销把激活值智能地卸载到系统内存。相关介绍可以看我们之前的博客文章。
借助这个方法,Llama 3.3 (70B) Instruct 的上下文长度可以达到 HF+FA2 的 7 倍,Llama 3.1 (8B) 达到 3.3 倍。我们会继续用它来实现超长上下文微调。💾 系统内存占用提醒一下:由于 Unsloth 会把激活值智能卸载到系统内存,你需要多备一些 RAM!
Llama 3.3 (70B) Instruct 有 80 个隐藏层,隐藏层大小为 8192。这意味着 89,000 的序列长度至少需要 89,000 x 80 x 8192 x 2 字节 = 109GB 的系统内存。
Llama 3.1 (8B) 拥有 32 个隐藏层,隐藏维度为 4096。处理 128K 上下文长度需要 32GB 系统内存。使用 Unsloth 处理 342,000 的最大上下文长度则需 84GB 系统内存。🦙 Llama 3.1 (8B) 基准测试 我们对 Llama 3.1 (8B) Instruct 进行了测试,并对所有线性层(Q、K、V、O、gate、up 和 down)应用了 4bit QLoRA,秩设为 32,批大小设为 1。我们将所有序列填充至指定的最大序列长度,以模拟长上下文微调工作负载。Llama 3.1 (8B) 最大上下文长度 GPU 显存 Unsloth
(+ Apple CCE)Unsloth
(旧版)Hugging Face+FA2 8 GB 2,972 1,586 OOM 12 GB 21,848 6,744 932 16 GB 40,724 11,903 2,551 24 GB 78,475 22,220 5,789 40 GB 153,977 42,855 12,264 48 GB 191,728 53,173 15,502 80 GB 342,733 94,442 28,454 💕 致谢! 一如既往,衷心感谢大家使用并分享 Unsloth,我们深表感激。🙏 特别感谢 Apple 团队,包括:Erik Wijmans, Brody Huval, Alexander Hertzberg, Vladlen Koltun 和 Philipp Kr. 的研究贡献,以及 Erik 提供的帮助。
请随时加入我们的 Reddit 页面和 Discord 服务器,获取帮助或表达支持!你也可以在 Twitter 和 Substack 上关注我们。感谢阅读!Daniel & Michael Han 🦥
2024 年 12 月 10 日 立即开始微调视觉模型!免费入门 加入我们的 Discord
新功能:Unsloth 现在支持对 Llama 3.3 (70B) 进行长达 89,000 上下文的微调,是 HF + FA2 在 80GB GPU 上支持的 6,900 上下文的 13 倍。Unsloth 新的超长上下文支持能力比之前版本长 1.85 倍。这得益于我们的梯度检查点算法,并且我们合作苹果引入了他们新的 Cut Cross Entropy (CCE) 算法。
请注意,此项新更新适用于所有模型,不仅限于 Llama。我们还上传了 GGUF + 预量化 4bit 模型到我们的 Hugging Face 页面,下载速度提升 4 倍。 GGUF - Llama 3.3 (70B) Instruct BnB 4bit - Llama 3.3 (70B) Instruct 原始 16bit - Llama 3.3 (70B) Instruct 🦙 Llama 3.3 基准测试 对于 Llama 3.1 (8B),Unsloth 现在支持高达 342,000 的上下文长度,超过了 Llama 3.1 支持的 128K 上下文长度。Hugging Face + FA2 在 80GB GPU 上仅支持 28,000,因此 Unsloth 支持的上下文长度是其 12 倍。在 8GB GPU 上,HF+FA2 会因显存不足而失败,而 Unsloth 现在支持最长 2,900 的上下文长度,之前为 1,500。 模型 | 显存 | 🦥Unsloth 速度 | 🦥 显存节省 | 🦥 更长上下文 | 🤗Hugging Face+FA2 Llama 3.3 (70B) | 80GB | 2x | >75% | 13x 长 | 1x Llama 3.1 (8B) | 80GB | 2x | >70% | 12x 长 | 1x 测试使用 Alpaca 数据集,批次大小为 2,梯度累积步数为 4,秩 = 32,并对所有线性层(q, k, v, o, gate, up, down)应用了 QLoRA。 🦙 Llama 3.3 (70B) 微调仅需 41GB 显存 Llama 3.3 (70B) 最大上下文长度 GPU 显存 Unsloth
(+ Apple CCE) Unsloth
(旧版)Hugging Face+FA248 GB12,1067,385OOM80 GB89,38948,4476,916我们在 80GB A100 上测试了 Llama 3.3 (70B) Instruct,对所有线性层(Q、K、V、O、gate、up、down)做 4bit QLoRA,rank 设为 32,batch size 为 1。所有序列都填充到固定的最大序列长度,以模拟长上下文微调的工作负载。Apple Cut Cross Entropy我们与 Apple Cut Cross Entropy 的作者(包括 Erik)合作,把一个用 Triton 编写的省显存交叉熵 kernel 集成到了 Unsloth 中,并且让它兼容 Tesla T4、RTX 20 系列等较老的 GPU。他们的论文可以在这里阅读。
它不像传统做法那样把 logits 完整算出来存下来,而是像 Flash Attention 那样边算边做矩阵乘法,显存占用因此大幅降低。同时在计算梯度时智能地忽略极小的数值,且不影响精度,性能也能得到提升。
CCE 让 Llama 3.1 (8B) 的长上下文支持再提升 3.6 倍,Llama 3.3 (70B) Instruct 提升 1.85 倍。把 Unsloth Gradient Checkpointing 和 Cut Cross Entropy 的收益相乘,新版 Unsloth 的上下文长度支持总共比 HF+FA2 长 12-13 倍!
要对 Llama 3.3 70B 做长上下文微调,可以在这里下载我们的 4bit 预量化 bitsandbytes 版本,减少显存碎片,并把下载速度提升 4 倍。🦥 Unsloth Gradient Checkpointing2024 年 4 月,我们推出了 Unsloth Gradient Checkpointing 算法,以极小的性能开销把激活值智能地卸载到系统内存。相关介绍可以看我们之前的博客文章。
借助这个方法,Llama 3.3 (70B) Instruct 的上下文长度可以达到 HF+FA2 的 7 倍,Llama 3.1 (8B) 达到 3.3 倍。我们会继续用它来实现超长上下文微调。💾 系统内存占用提醒一下:由于 Unsloth 会把激活值智能卸载到系统内存,你需要多备一些 RAM!
Llama 3.3 (70B) Instruct 有 80 个隐藏层,隐藏层大小为 8192。这意味着 89,000 的序列长度至少需要 89,000 x 80 x 8192 x 2 字节 = 109GB 的系统内存。
Llama 3.1 (8B) 拥有 32 个隐藏层,隐藏维度为 4096。处理 128K 上下文长度需要 32GB 系统内存。使用 Unsloth 处理 342,000 的最大上下文长度则需 84GB 系统内存。🦙 Llama 3.1 (8B) 基准测试 我们对 Llama 3.1 (8B) Instruct 进行了测试,并对所有线性层(Q、K、V、O、gate、up 和 down)应用了 4bit QLoRA,秩设为 32,批大小设为 1。我们将所有序列填充至指定的最大序列长度,以模拟长上下文微调工作负载。Llama 3.1 (8B) 最大上下文长度 GPU 显存 Unsloth
(+ Apple CCE)Unsloth
(旧版)Hugging Face+FA2 8 GB 2,972 1,586 OOM 12 GB 21,848 6,744 932 16 GB 40,724 11,903 2,551 24 GB 78,475 22,220 5,789 40 GB 153,977 42,855 12,264 48 GB 191,728 53,173 15,502 80 GB 342,733 94,442 28,454 💕 致谢! 一如既往,衷心感谢大家使用并分享 Unsloth,我们深表感激。🙏 特别感谢 Apple 团队,包括:Erik Wijmans, Brody Huval, Alexander Hertzberg, Vladlen Koltun 和 Philipp Kr. 的研究贡献,以及 Erik 提供的帮助。
请随时加入我们的 Reddit 页面和 Discord 服务器,获取帮助或表达支持!你也可以在 Twitter 和 Substack 上关注我们。感谢阅读!Daniel & Michael Han 🦥
2024 年 12 月 10 日 立即开始微调视觉模型!免费入门 加入我们的 Discord