第7章 使用 Unsloth 微调 Gemma:速度提升 2.4 倍,显存占用降低 58%
Gemma 提速 2.4 倍,VRAM 降低 58%
2024年2月26日 • 作者 Daniel & Michael
Gemma (7B) 1x A100 243% faster
Gemma (7B) 1x A100 -58% VRAM
Gemma (2B) 1x A100 200% faster
Gemma (2B) 1x A100 -55% VRAM
现在,你使用 Unsloth 微调 Gemma 7b 的速度比 HF + Flash Attention 2 快 2.43 倍,且 VRAM 占用减少 57.5%。与原生 HF 相比,Unsloth 速度快 2.53 倍,VRAM 占用减少 70%。
在单张 A100 80GB GPU 上,Unsloth 可容纳 40K 总 tokens(8192 * 5 的批次大小),而 FA2 仅约 15K,原生 HF 仅 9K。
我们还上传了 2 个 Colab notebooks,方便在免费 Tesla T4 上微调!分别是 Gemma 7b Notebook 和 Gemma 2b Notebook。此外,为了将下载速度提升 4 倍,我们将预量化 4bit 模型上传到了我们的 HF 页面。
下文我们将详细解析如何让 Gemma 提速、对 Gemma 架构的深入理解,以及过程中发现的一些 bug!关于我们其他的新发布:
Unsloth 现在原生支持 2 倍速推理!(包括 Gemma!)我们新增了多种 chat templates,意味着你可以微调对话风格数据集!ChatML、Vicuna、Zephyr 等更多 chat templates 均兼容:Notebook
我们还重构了 Github 页面,导航更加便捷。别忘了 ⭐Star 我们 ❤️
💡 Gemma 要点
乍看之下,Gemma 架构与 Llama 非常相似,但深入分析后发现以下显著差异:
GeGLU 与 Swiglu 激活函数
我们不得不重写手动 autograd 引擎以支持其他激活函数。甚至使用 Wolfram Alpha 推导了 GeGLU 的导数!
Tied Embeddings
有趣的是,与 Mistral 和 Llama 不同,Gemma 的 embedding 和 lm_head 权重完全相同。
256K 词表大小
Gemma 的词表巨大。Llama 和 Mistral 仅有 32K,而 Gemma 使用 256K。尽管权重绑定,我们仍需重写 Cross Entropy Kernel 以支持所有词表大小。原本该 Kernel 仅支持至 CUDA 最大 blocksize $2^{16}$ 即 65536。
VRAM 占用大幅增加
Gemma 的 MLP 尺寸为 24576,而 Llama 为 11008,Mistral 为 14336。Gemma 的 Attention 尺寸为 3072,在计算注意力前投影至 4096。Llama 为 4096,Mistral 也是 4096 但使用 grouped query attention(即 512 重复至 4096)。这导致 Gemma 内存占用激增。如下所示,Unsloth 可处理 40K 总 tokens,FA2 最多处理 15K,原生 HF 仅 9K。
+1 to RMS LayerNorm
由于 Gemma 的出现,Flash Attention 2 最近才在消费级 GPU 上支持大于 192 的 head size。Embedding * sqrt(hd)
Embedding 还会乘以隐藏维度的平方根进行缩放。
有趣的是,
最初我们考虑用 Gradio 来增强界面,但 Automatic1111 的 Stable Diffusion 界面与 Colab 之间存在兼容性问题,让我们重新考虑了方案。Unsloth Studio(Beta 版)即将上线,敬请期待!🚀 推理速度提升 2 倍 我们正在开发更快的推理方案,但现阶段此更新已能帮助大多数人提高效率。所有 QLoRA、LoRA 及非 LoRA 推理路径的速度均提升 2 倍。
无需修改代码或添加任何新依赖项!查看下方的视频动图对比,直观感受速度差异:🌠 其他更新 已上传更多 4-bit 模型,下载速度提升 4 倍。请在 🤗Hugging Face 上查看我们的 Gemma、Yi 6、34b、Phi、Llama Chat、Codellama、Phi-2、Solar 等模型。 我们支持 LoftQ、RSLoRA(秩稳定 LoRA)以及所有 PEFT 参数。 现已支持其他所有 GGUF 格式(iq2_xxs、iq3_xxs 等)。 一如既往,我们修复了大量 bug 并进行了优化!💕 支持我们 作为一对没有收入也没有融资的兄弟团队,如果能通过我们的 Ko-fi 捐款页支持我们,那将太好了。特别感谢 duffahtolla、Gerald、Alexis、Raghu Ganti、Brandon、just a person、Malcome Sharpe、P_Dog、LostGoatOnHill、yogi、TheRealAneesh 和 iulius666 等已经支持我们的朋友们!🙏
像往常一样,欢迎加入我们的 Discord 服务器获取帮助或表达支持!你也可以在 Twitter 和 Substack 上关注我们。感谢你们持续的关注与支持! 谢谢阅读! Daniel & Michael Han 🦥
2024年2月26日 Unsloth Studio 即将推出!免费开始使用 加入我们的 Discord