进阶 unsloth.ai 2026-10-07 22:27:00 · 6 阅读
第15章 使用 Unsloth 微调 Llama 3.1:速度更快且显存占用更低
unsloth
下载
☰ 下载
博客:使用 Unsloth 微调并运行 Llama 3.1
2024 年 7 月 23 日 • 作者 Daniel & Michael
Llama 3.1 (8B)
1 块 L4 24GB
速度快 110%
Llama 3.1 (8B)
1 块 L4 24GB
显存减少 60%
Llama 3.1 (70B)
1 块 A100 80GB
速度快 90%
Llama 3.1 (70B)
1 块 A100 80GB
显存减少 65%
Meta 对其 Llama 3 模型的更新使其成为迄今为止最先进的模型。Llama 3.1 基于 15.6 万亿(T)个 token 进行训练,将上下文长度扩展至 128K,并新增对多种语言的支持。使用 Unsloth 微调 Llama 3.1 (8B) 比 Flash Attention 2 (FA2) + Hugging Face (HF) 快 2.1 倍,且内存占用少 60%。对于 Llama 3.1 (70B),Unsloth 的速度是 1.9 倍,VRAM 使用量减少 65%。
我们上传了一个 Google Colab notebook,用于在免费的 Tesla T4 上微调 Llama 3.1 (8B):Llama 3.1 (8B) Notebook。我们还在 Google Colab 上推出了一个新界面,用于与你的 Llama 3.1 Instruct 模型聊天,该界面使用了我们自研的推理引擎,速度提升 2 倍。
Unsloth 将 Llama 3.1 训练的上下文长度延长了 6 倍。在 1 块 A100 80GB GPU 上,使用 Unsloth 的 Llama 3.1 (70B) 可以容纳 48K 个总 token(8192 * 批量大小 5),而不使用 Unsloth 时仅能容纳 7K token。
我们还上传了预量化为 4bit 的模型,下载速度快 4 倍,托管在我们的 Hugging Face 页面上,包括 4bit bnb 格式的 Llama 3.1 Instruct (8B, 70B 和 405B) 以及 Base (8B, 70B 和 405B)。 💎 推出 Unsloth Run UI 我们使用 Gradio 创建了一个新的聊天 UI,用户可以免费在 Google Colab 上在线上传并与他们的 Llama 3.1 Instruct 模型聊天。该聊天 UI 正在开发中,我们将稍后添加对所有模型的支持。它完全由我们的推理引擎提供支持,比 Hugging Face 快 2 倍。
本次发布只是 Unsloth Studio(Beta 版)的一个小预览,这是我们即将推出的微调 UI。 🦙 Llama 3.1 基准测试 模型 | VRAM | 🦥Unsloth 速度 | 🦥 VRAM 减少 | 🦥 更长上下文 | 🤗Hugging Face+FA2 --- | --- | --- | --- | --- | --- Llama 3.1 (8B) | 24GB | 2.1x | 60% | 长 3 倍 | 1x Llama 3.1 (70B) | 80GB | 1.9x | 65% | 长 6 倍 | 1x 我们使用 Alpaca 数据集,批量大小为 2,梯度累积步数为 4,rank = 32,并对所有线性层(q, k, v, o, gate, up, down)应用了 QLoRA 进行测试。 🧶 6 倍更长的上下文长度 Unsloth 显著增强了 Llama 3.1 (70B) 的长上下文支持,使其能在 48GB GPU 上运行,并支持约 7K 上下文的微调。相比之下,HF + FA2 只能处理长度为 2 的上下文,甚至会出现显存溢出(OOM)错误。Meta 的更新将上下文长度增加至 128K,但需要更多的 VRAM。
在 80GB 显存下,Unsloth 仅增加 1.9% 的开销就能支持 6 倍长的上下文长度,可以从 7.5K 提升到 48K 序列长度进行微调。实验数据表明,在长上下文微调场景下,Unsloth 明显优于 HF + FA2。 Llama 3.1 (70B) 最大上下文长度 GPU 显存 | Unsloth | Hugging Face + FA2 48 GB | 7,698 | OOM 80 GB | 48,053 | 7,433 在我们所有的实验中,都使用了 rank 为 32 的 QLoRA,并将 LoRA 适配器应用到所有线性层(q、k、v、o、gate、up、down)。batch size 设为 1,并通过对数据重复填充来适配最大上下文窗口。 🦙 Llama 3.1 (8B) 微调可在 8GB 显存中完成 batch size 为 1、对所有线性层使用 rank 32 的 LoRA 时,HF + FA2 在 8GB 显卡上会失败或显存溢出(OOM),大约需要 9GB 内存。相比之下,Unsloth 在同样的 8GB 显卡上可以轻松支持 2K 上下文长度。在 24GB 消费级显卡上,Unsloth 能支持 20K 上下文长度,是 HF + FA2 的 3.5 倍。
下图是在 L4 GPU 上通过 Colab 测试的显存占用与上下文长度的对比: Llama 3.1 (8B) 最大上下文长度 GPU 显存 | Unsloth | Hugging Face + FA2 8 GB | 1,983 | OOM 12 GB | 6,638 | 1,044 16 GB | 11,292 | 2,663 24 GB | 20,601 | 5,901 40 GB | 39,219 | 12,377 48 GB | 48,528 | 15,615 80 GB | 85,765 | 28,567 🔎 Llama 3.1 分析 虽然 Llama 3 的架构基本保持不变,但仍有一些关键差异。现在所有 3.1 模型的输出都可以用来训练其他模型,不再局限于 Llama 系列,而且 3.1 模型开始使用 fp8 精度。这是我们发布的推文以及主要发现的清单: 新的 RoPE 扩展方法
使用了一组有趣的低频和高频缩放因子,并对 inv_freq 向量进行缩放——可以一次性计算完成,无需动态重算。采用 6 阶段渐进方式,用 8000 亿 token 将上下文从 8K 逐步扩展到 128K。 bfloat16 训练
使用 bfloat16 达到 38% 到 43% 的 MFU。采用了流水线并行 + FSDP,并在 RM、SFT 和 DPO 阶段使用模型平均。 数据配比
50% 通用知识 25% 数学与推理 17% 代码数据与任务 8% 多语言数据 预处理步骤
使用 Roberta、DistilRoberta 和 fasttext 过滤高质量数据,并通过大量去重和启发式规则剔除低质数据。 Float8 量化
将权重和输入都量化为 fp8,再乘以缩放因子,fp8 x fp8 计算后输出 bf16。推理更快,显存占用更少。
视觉与语音实验
Llama 3.1 团队还训练了视觉和语音适配器——虽然尚未发布,但非常酷炫!💕 感谢大家!Meta 发布了马克·扎克伯格的一篇文章,强调了开源的重要性:“我们需要训练、微调并蒸馏我们自己的模型。每个组织都有不同的需求,最适合这些需求的往往是用其特定数据训练或微调的不同规模的模型。设备端任务和分类任务需要小模型,而更复杂的任务则需要大模型。现在,你可以获取最先进的 Llama 模型,使用自己的数据继续训练它们,然后将其蒸馏到你所需的最佳规模——而我们或任何人都不会看到你的数据。” 因此,一如既往,非常感谢 Meta 团队对开源的支持!
欢迎通过我们的 Ko-fi 捐赠页面支持我们。特别鸣谢:来自 NASA 的 Marshall、Anthony、John、Pichet 和 Steven,他们是新晋支持者! 🙏
一如既往,请务必加入我们的 Discord 服务器寻求帮助或表达你的支持!你也可以在 Twitter 和 Substack 上关注我们。感谢阅读!Daniel & Michael Han 🦥
2024年7月23日 Unsloth Studio 下一步:免费开始使用 加入我们的 Discord
我们上传了一个 Google Colab notebook,用于在免费的 Tesla T4 上微调 Llama 3.1 (8B):Llama 3.1 (8B) Notebook。我们还在 Google Colab 上推出了一个新界面,用于与你的 Llama 3.1 Instruct 模型聊天,该界面使用了我们自研的推理引擎,速度提升 2 倍。
Unsloth 将 Llama 3.1 训练的上下文长度延长了 6 倍。在 1 块 A100 80GB GPU 上,使用 Unsloth 的 Llama 3.1 (70B) 可以容纳 48K 个总 token(8192 * 批量大小 5),而不使用 Unsloth 时仅能容纳 7K token。
我们还上传了预量化为 4bit 的模型,下载速度快 4 倍,托管在我们的 Hugging Face 页面上,包括 4bit bnb 格式的 Llama 3.1 Instruct (8B, 70B 和 405B) 以及 Base (8B, 70B 和 405B)。 💎 推出 Unsloth Run UI 我们使用 Gradio 创建了一个新的聊天 UI,用户可以免费在 Google Colab 上在线上传并与他们的 Llama 3.1 Instruct 模型聊天。该聊天 UI 正在开发中,我们将稍后添加对所有模型的支持。它完全由我们的推理引擎提供支持,比 Hugging Face 快 2 倍。
本次发布只是 Unsloth Studio(Beta 版)的一个小预览,这是我们即将推出的微调 UI。 🦙 Llama 3.1 基准测试 模型 | VRAM | 🦥Unsloth 速度 | 🦥 VRAM 减少 | 🦥 更长上下文 | 🤗Hugging Face+FA2 --- | --- | --- | --- | --- | --- Llama 3.1 (8B) | 24GB | 2.1x | 60% | 长 3 倍 | 1x Llama 3.1 (70B) | 80GB | 1.9x | 65% | 长 6 倍 | 1x 我们使用 Alpaca 数据集,批量大小为 2,梯度累积步数为 4,rank = 32,并对所有线性层(q, k, v, o, gate, up, down)应用了 QLoRA 进行测试。 🧶 6 倍更长的上下文长度 Unsloth 显著增强了 Llama 3.1 (70B) 的长上下文支持,使其能在 48GB GPU 上运行,并支持约 7K 上下文的微调。相比之下,HF + FA2 只能处理长度为 2 的上下文,甚至会出现显存溢出(OOM)错误。Meta 的更新将上下文长度增加至 128K,但需要更多的 VRAM。
在 80GB 显存下,Unsloth 仅增加 1.9% 的开销就能支持 6 倍长的上下文长度,可以从 7.5K 提升到 48K 序列长度进行微调。实验数据表明,在长上下文微调场景下,Unsloth 明显优于 HF + FA2。 Llama 3.1 (70B) 最大上下文长度 GPU 显存 | Unsloth | Hugging Face + FA2 48 GB | 7,698 | OOM 80 GB | 48,053 | 7,433 在我们所有的实验中,都使用了 rank 为 32 的 QLoRA,并将 LoRA 适配器应用到所有线性层(q、k、v、o、gate、up、down)。batch size 设为 1,并通过对数据重复填充来适配最大上下文窗口。 🦙 Llama 3.1 (8B) 微调可在 8GB 显存中完成 batch size 为 1、对所有线性层使用 rank 32 的 LoRA 时,HF + FA2 在 8GB 显卡上会失败或显存溢出(OOM),大约需要 9GB 内存。相比之下,Unsloth 在同样的 8GB 显卡上可以轻松支持 2K 上下文长度。在 24GB 消费级显卡上,Unsloth 能支持 20K 上下文长度,是 HF + FA2 的 3.5 倍。
下图是在 L4 GPU 上通过 Colab 测试的显存占用与上下文长度的对比: Llama 3.1 (8B) 最大上下文长度 GPU 显存 | Unsloth | Hugging Face + FA2 8 GB | 1,983 | OOM 12 GB | 6,638 | 1,044 16 GB | 11,292 | 2,663 24 GB | 20,601 | 5,901 40 GB | 39,219 | 12,377 48 GB | 48,528 | 15,615 80 GB | 85,765 | 28,567 🔎 Llama 3.1 分析 虽然 Llama 3 的架构基本保持不变,但仍有一些关键差异。现在所有 3.1 模型的输出都可以用来训练其他模型,不再局限于 Llama 系列,而且 3.1 模型开始使用 fp8 精度。这是我们发布的推文以及主要发现的清单: 新的 RoPE 扩展方法
使用了一组有趣的低频和高频缩放因子,并对 inv_freq 向量进行缩放——可以一次性计算完成,无需动态重算。采用 6 阶段渐进方式,用 8000 亿 token 将上下文从 8K 逐步扩展到 128K。 bfloat16 训练
使用 bfloat16 达到 38% 到 43% 的 MFU。采用了流水线并行 + FSDP,并在 RM、SFT 和 DPO 阶段使用模型平均。 数据配比
50% 通用知识 25% 数学与推理 17% 代码数据与任务 8% 多语言数据 预处理步骤
使用 Roberta、DistilRoberta 和 fasttext 过滤高质量数据,并通过大量去重和启发式规则剔除低质数据。 Float8 量化
将权重和输入都量化为 fp8,再乘以缩放因子,fp8 x fp8 计算后输出 bf16。推理更快,显存占用更少。
视觉与语音实验
Llama 3.1 团队还训练了视觉和语音适配器——虽然尚未发布,但非常酷炫!💕 感谢大家!Meta 发布了马克·扎克伯格的一篇文章,强调了开源的重要性:“我们需要训练、微调并蒸馏我们自己的模型。每个组织都有不同的需求,最适合这些需求的往往是用其特定数据训练或微调的不同规模的模型。设备端任务和分类任务需要小模型,而更复杂的任务则需要大模型。现在,你可以获取最先进的 Llama 模型,使用自己的数据继续训练它们,然后将其蒸馏到你所需的最佳规模——而我们或任何人都不会看到你的数据。” 因此,一如既往,非常感谢 Meta 团队对开源的支持!
欢迎通过我们的 Ko-fi 捐赠页面支持我们。特别鸣谢:来自 NASA 的 Marshall、Anthony、John、Pichet 和 Steven,他们是新晋支持者! 🙏
一如既往,请务必加入我们的 Discord 服务器寻求帮助或表达你的支持!你也可以在 Twitter 和 Substack 上关注我们。感谢阅读!Daniel & Michael Han 🦥
2024年7月23日 Unsloth Studio 下一步:免费开始使用 加入我们的 Discord
上一篇
第14章 使用 Unsloth 微调 Mistral NeMo 模型
下一篇
第16章 Unsloth 获 YCombinator 支持:月下载破 200 万,Unsloth Studio 即将上线