原贴链接

嘿 r/LocalLLaMA!不确定你们中是否有人今天会去参加Pytorch会议——但我今天下午4点左右要发言!:) 我是Unsloth背后的算法专家 https://github.com/unslothai/unsloth,让Llama、Mistral、Gemma的微调速度提高2倍,并减少70%的VRAM使用,还修复了Gemma、Llama和Mistral中的错误!我附上了幻灯片和一个概述,我想这会被录下来!

幻灯片: https://static.sched.com/hosted_files/pytorch2024/8f/Pytorch%20Conference%20-%20Making%20LLM%20training%20faster.pdf

  • 位表示: 从float32到float4使训练/微调速度提高32倍,并减少75%的VRAM使用。1.58bit应该比float4稍快。
格式指数尾数尾数^(2)O(晶体管)加速
float32823529537
float165101001055x
bfloat1683495710x
Ffloat8 E4M35291340x
float42113180x

LLMs的物理学表明,较低的位确实会影响性能,因此在顶部微调LoRA适配器应该是必要的,以恢复准确性。

image

  • 硬件: Tensor Cores使训练速度提高约13倍。Tesla T4s开始大力推动Tensor Cores,使得矩阵乘法比P100s快得多。Tensor Cores通常相当有效,且开销较小。

https://preview.redd.it/p73dnuei2mpd1.png?width=2071&format=png&auto=webp&s=4446dd00cb5750f08b1f43af098d3e3006a122fd

  • 算法: 智能算法也可以使训练更快——SwiGLU、深度和薄网络、分组查询注意力和更多。例如下面的性能总结:
    • GPT2 + RoPE + 无dropout - 表现最好
    • Gated MLPs SwiGLU 难以训练
    • Silu / Gelu 对准确性无变化
    • 偏差对准确性无变化
    • Flash Attention 线性内存,仍然是O(N^2)但很好

https://preview.redd.it/nsnc7dbo2mpd1.png?width=2015&format=png&auto=webp&s=bb89e10f8d4c6080e25094517901841e33abaf85

https://preview.redd.it/frpll9y44mpd1.png?width=2040&format=png&auto=webp&s=fcea348a7ed4a306783dee534008a6cc0f233b7d

Unsloth梯度检查点 - https://unsloth.ai/blog/long-context Unsloth可以在不到48GB的VRAM中微调Llama-3.1 70b!我们将激活异步卸载到系统RAM,并从GPU RAM中智能卸载,以大幅减少VRAM。

分块交叉熵 - 编写了一些内核,使交叉熵损失计算更容易,并绕过GPU的块大小限制。还减少了VRAM!

链式矩阵乘法 - 通过推导所有反向传播步骤并将操作融合以减少实际FLOPs,使QLoRA / LoRA速度提高2倍!

Character AI的快速推理算法 -

https://preview.redd.it/vwtu3i2m5mpd1.png?width=2611&format=png&auto=webp&s=4d474b063f017be380503fe2acd19aa8b7b51807

  • RMS Layernorm - 还编写了内核,使RMS Layernorms更快并减少VRAM使用
  • RoPE嵌入 - 同样适用于RoPE - 推导反向传播步骤非常困难,但看到导数只是反向符号很有趣!
  • 融合LoRA - 更少的FLOPs - 通过融合和推导导数减少FLOPs!
  • SwiGLU - 还编写了内核,使SwiGLU更快并减少VRAM使用!

高质量的数据也非常重要 - FineWeb数据集大大提高了准确性 - 因此高质量的数据很重要!

https://preview.redd.it/czjb5o426mpd1.png?width=1937&format=png&auto=webp&s=57e2771d434442dd4a408e2ee549312fb18ddd43

我会在今天的会议上多谈一些(如果有人在4PM去的话)——但应该会被录下来!谢谢大家的聆听!如果你想尝试一些免费的Colabs / Kaggles来微调Llama 3、Gemma 2、Phi 3.5等,使其速度提高2倍并减少70%的VRAM使用,我有很多笔记本应用了我在这里写的所有方法:https://github.com/unslothai/unsloth!Llama 3.1笔记本:https://colab.research.google.com/drive/1Ys44kVvmeZtnICzWz0xgpRnrIOjZAuxp?usp=sharing

讨论总结

本次讨论主要围绕如何通过多种技术手段加速大型语言模型(LLM)的训练和微调展开。作者Daniel详细介绍了量化技术、硬件优化(如Tensor Cores)、算法改进(如SwiGLU、RoPE Embedding)等方法,旨在提高训练速度并减少VRAM的使用。讨论中,社区成员对Daniel的贡献表示高度认可,并分享了使用Unsloth工具的积极体验。此外,讨论还涉及高质量数据的重要性,以及未来可能加入的AWQ微调方法。总体上,讨论氛围积极,技术细节丰富,社区对作者的工作表示赞赏和期待。

主要观点

  1. 👍 量化技术显著提高训练速度和减少VRAM使用

    • 支持理由:通过将float32量化为float4,训练速度提升32倍,VRAM使用减少75%。
    • 反对声音:低精度量化可能影响模型性能,需通过微调恢复准确性。
  2. 🔥 硬件优化(如Tensor Cores)进一步加速训练过程

    • 正方观点:Tensor Cores使训练速度提升13倍,减少计算开销。
    • 反方观点:硬件依赖性增加,可能不适用于所有设备。
  3. 💡 算法优化(如SwiGLU和RoPE Embedding)提高训练效率

    • 解释:通过优化算法,如SwiGLU和RoPE Embedding,进一步减少计算量和VRAM使用。
  4. 👍 高质量数据对提高模型准确性至关重要

    • 支持理由:高质量数据集(如FineWeb)显著提升模型准确性。
    • 反对声音:数据收集和处理成本较高。
  5. 🔥 提供多种优化方法的实现细节和相关资源链接

    • 正方观点:详细的实现细节和资源链接帮助用户更好地理解和应用优化方法。
    • 反方观点:信息量较大,初学者可能难以消化。

金句与有趣评论

  1. “😂 I’m VERY new to the whole world of AI but I recognise your name instantly Daniel :)”

    • 亮点:新手对Daniel的认可,体现了作者在社区中的影响力。
  2. “🤔 Why do you think biases don’t change accuracy?”

    • 亮点:深入的技术讨论,反映了社区对细节的关注。
  3. “👀 One thing is for sure, he is like a Jesus who created an environment that even AI beginners can easily use. :)”

    • 亮点:幽默的比喻,强调了作者工作对初学者的友好性。
  4. “😂 Fantastic job! I have used the Colabs and I can say Unsloth indeed works.”

    • 亮点:用户对Unsloth工具的实际效果表示肯定。
  5. “🤔 Have you thought about implementing something similar to "ReLoRA: High-Rank Training Through Low-Rank Updates"?”

    • 亮点:提出创新想法,引发对未来技术发展的讨论。

情感分析

讨论的总体情感倾向积极,社区对作者的贡献表示高度认可和感激。主要分歧点在于低精度量化对模型性能的影响,以及硬件优化对设备依赖性的讨论。这些分歧主要源于技术细节的深入探讨,反映了社区对技术优化的关注和热情。

趋势与预测

  • 新兴话题:未来可能加入的AWQ微调方法,以及类似于“ReLoRA: High-Rank Training Through Low-Rank Updates”的技术实现。
  • 潜在影响:这些技术的发展将进一步加速LLM的训练和微调过程,降低VRAM使用,推动AI技术的普及和应用。

详细内容:

标题:探索让 LLM 训练加速的神奇技巧

在 Reddit 的 r/LocalLLaMA 板块,有一个引起广泛关注的帖子,它由用户 danielhanchen 发布,获得了众多点赞和评论。帖子主要介绍了一系列让 LLM 训练更快的方法,包括将 bit 表示从 float32 转变为 float4 可使训练速度提升 32 倍、使用 Tensor Cores 能让训练快 13 倍、采用智能算法如 SwiGLU 等也能提高训练效率,还提到了在 Unsloth 项目中的一些优化成果。此外,帖子还附上了相关的幻灯片和概述链接,声称能够让 Llama、Mistral、Gemma 等的训练速度提升 2 倍并节省 70%的 VRAM。

讨论焦点与观点分析: 有人表示自己是 AI 领域的新手,但对作者的工作充满感激。还有人提出了关于添加 awq 微调的想法,作者回应会考虑。也有人提到像 hqq plus 等新方法,希望能在 Unsloth 中得到应用。有人称赞作者的工作,认为其创造了让初学者也能轻松使用的环境。有人询问具体哪些值处于 8 位精度或更低,比如权重、激活函数、优化器动量等。还有人思考是否能实现类似于“ReLoRA: High-Rank Training Through Low-Rank Updates”的方法。有人根据自身经验指出,低精度的每步训练可能更慢。

这场讨论中的共识在于对作者工作的肯定以及对提升 LLM 训练效率的共同关注。特别有见地的观点如关于不同精度对训练速度的影响,丰富了大家对这一问题的理解。

总的来说,这次关于 LLM 训练加速的讨论为该领域的发展提供了有价值的思路和方向。