嘿 r/LocalLLaMA!不确定你们中是否有人今天会去参加Pytorch会议——但我今天下午4点左右要发言!:) 我是Unsloth背后的算法专家 https://github.com/unslothai/unsloth,让Llama、Mistral、Gemma的微调速度提高2倍,并减少70%的VRAM使用,还修复了Gemma、Llama和Mistral中的错误!我附上了幻灯片和一个概述,我想这会被录下来!
- 位表示: 从float32到float4使训练/微调速度提高32倍,并减少75%的VRAM使用。1.58bit应该比float4稍快。
格式 | 指数 | 尾数 | 尾数^(2) | O(晶体管) | 加速 |
---|---|---|---|---|---|
float32 | 8 | 23 | 529 | 537 | |
float16 | 5 | 10 | 100 | 105 | 5x |
bfloat16 | 8 | 3 | 49 | 57 | 10x |
Ffloat8 E4M3 | 5 | 2 | 9 | 13 | 40x |
float4 | 2 | 1 | 1 | 3 | 180x |
LLMs的物理学表明,较低的位确实会影响性能,因此在顶部微调LoRA适配器应该是必要的,以恢复准确性。
- 硬件: Tensor Cores使训练速度提高约13倍。Tesla T4s开始大力推动Tensor Cores,使得矩阵乘法比P100s快得多。Tensor Cores通常相当有效,且开销较小。
- 算法: 智能算法也可以使训练更快——SwiGLU、深度和薄网络、分组查询注意力和更多。例如下面的性能总结:
- GPT2 + RoPE + 无dropout - 表现最好
- Gated MLPs SwiGLU 难以训练
- Silu / Gelu 对准确性无变化
- 偏差对准确性无变化
- Flash Attention 线性内存,仍然是O(N^2)但很好
- 在Unsloth https://github.com/unslothai/unsloth 中,我还编写了内核,使微调速度提高2倍,并减少70%的VRAM使用!
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的快速推理算法 -
- RMS Layernorm - 还编写了内核,使RMS Layernorms更快并减少VRAM使用
- RoPE嵌入 - 同样适用于RoPE - 推导反向传播步骤非常困难,但看到导数只是反向符号很有趣!
- 融合LoRA - 更少的FLOPs - 通过融合和推导导数减少FLOPs!
- SwiGLU - 还编写了内核,使SwiGLU更快并减少VRAM使用!
高质量的数据也非常重要 - FineWeb数据集大大提高了准确性 - 因此高质量的数据很重要!
我会在今天的会议上多谈一些(如果有人在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微调方法。总体上,讨论氛围积极,技术细节丰富,社区对作者的工作表示赞赏和期待。
主要观点
👍 量化技术显著提高训练速度和减少VRAM使用
- 支持理由:通过将float32量化为float4,训练速度提升32倍,VRAM使用减少75%。
- 反对声音:低精度量化可能影响模型性能,需通过微调恢复准确性。
🔥 硬件优化(如Tensor Cores)进一步加速训练过程
- 正方观点:Tensor Cores使训练速度提升13倍,减少计算开销。
- 反方观点:硬件依赖性增加,可能不适用于所有设备。
💡 算法优化(如SwiGLU和RoPE Embedding)提高训练效率
- 解释:通过优化算法,如SwiGLU和RoPE Embedding,进一步减少计算量和VRAM使用。
👍 高质量数据对提高模型准确性至关重要
- 支持理由:高质量数据集(如FineWeb)显著提升模型准确性。
- 反对声音:数据收集和处理成本较高。
🔥 提供多种优化方法的实现细节和相关资源链接
- 正方观点:详细的实现细节和资源链接帮助用户更好地理解和应用优化方法。
- 反方观点:信息量较大,初学者可能难以消化。
金句与有趣评论
“😂 I’m VERY new to the whole world of AI but I recognise your name instantly Daniel :)”
- 亮点:新手对Daniel的认可,体现了作者在社区中的影响力。
“🤔 Why do you think biases don’t change accuracy?”
- 亮点:深入的技术讨论,反映了社区对细节的关注。
“👀 One thing is for sure, he is like a Jesus who created an environment that even AI beginners can easily use. :)”
- 亮点:幽默的比喻,强调了作者工作对初学者的友好性。
“😂 Fantastic job! I have used the Colabs and I can say Unsloth indeed works.”
- 亮点:用户对Unsloth工具的实际效果表示肯定。
“🤔 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 训练加速的讨论为该领域的发展提供了有价值的思路和方向。
感谢您的耐心阅读!来选个表情,或者留个评论吧!