大语言模型微调优化技术研究
基于微软论文研究了大语言模型微调的优化技术。重点分析了梯度检查点、LoRA、DeepSpeed ZeRO 和 Flash Attention 四种技术对 GPU 内存和运行时间的影响。实验表明,ZeRO-2 结合 LoRA 是平衡内存与运行时的最佳默认选项;ZeRO-3 配合 LoRA 及 CPU 卸载可支持数十亿参数模型的微调。Flash Attention 2 能显著降低长上下文场景下的资源消耗。文章提供了针对不同模型大小和上下文长度的优化矩阵建议。

基于微软论文研究了大语言模型微调的优化技术。重点分析了梯度检查点、LoRA、DeepSpeed ZeRO 和 Flash Attention 四种技术对 GPU 内存和运行时间的影响。实验表明,ZeRO-2 结合 LoRA 是平衡内存与运行时的最佳默认选项;ZeRO-3 配合 LoRA 及 CPU 卸载可支持数十亿参数模型的微调。Flash Attention 2 能显著降低长上下文场景下的资源消耗。文章提供了针对不同模型大小和上下文长度的优化矩阵建议。

本文基于微软论文,针对大语言模型(LLM)微调过程中的资源预算、运行时间、模型大小和上下文长度等因素进行了详细研究。主要发现如下:
迁移学习为将大型语言模型专化到特定任务或领域提供了有效方法。然而,微调具有数十亿可训练参数的 LLMs 仍具挑战性,主要受限于巨大的内存需求。例如,在全浮点精度下微调一个 10 亿参数模型,每个 GPU 大约需要 24GB 的高带宽内存(HBM)。若无内存优化,微调过程中常会遇到内存不足(OOM)错误。
近年来提出了若干优化技术,但理解复杂且需实验验证。本文旨在简化用户微调过程,深入探讨内存与运行时间的权衡,并提供选择最佳优化配置的指导。
梯度检查点通过在反向传播过程中重新计算激活来节省 GPU 内存,而非在前向传播中保留所有激活。最省内存的策略是在每 n 步保存检查点。这使得能够微调更大的 LLMs,仅增加约 20%-30% 的微调时间。
LoRA 通过冻结预训练权重并注入可训练的秩分解矩阵,减少可训练参数数量。例如,使用 LoRA 微调 700 亿参数模型,可训练参数可减少至约 1.31 亿(占原始模型大小的 -0.19%),降低成本同时保持质量。
ZeRO 冗余优化器通过分区模型状态(参数、梯度、优化器状态)跨数据并行进程,缓解并行局限性。提供三个优化阶段:
Flash Attention 将注意力计算复杂度从二次降为线性。利用分块和重计算技术,最小化 SRAM 与 HBM 之间的读写操作。版本 2 进一步优化了非矩阵乘法操作,并沿序列长度维度并行化。
这些优化彼此正交,可组合使用以获得渐增的效益。
训练期间 GPU 内存消耗主要受以下变量影响:
在混合精度训练中使用 Adam 优化器时,可训练参数、动量和方差以全精度保持。ZeRO-DP 阶段决定了哪些模型状态在 GPU 间分区。理论计算可作为微调前预测内存需求的粗略估计。启用 CPU 卸载优化器状态可将内存使用量减少至不启用时的四分之一。
针对 LLaMA-2-7B 模型的五种配置测试表明:
微调 LLaMA-2 70B 或 Falcon 180B 时,ZeRO-3 是避免 OOM 的关键。实践表明,具有数百亿参数的模型通常与 LoRA 一起微调,并使用 ZeRO-3 与 CPU 卸载。例如,在 8xV100 GPU 上结合 ZeRO-3 + LoRA 对 LLaMA-2 70B 进行微调是可行的。
Flash Attention 2 对长上下文微调至关重要。随着上下文长度增加(如 4096),启用 FA2 相比未启用,GPU 内存使用和运行时间有显著减少。虽然高性能 GPU 可在无 FA2 情况下支持较长上下文,但在兼容架构上激活 FA2 始终是最优选择。
在 V100 GPU(32 GB HBM)等受限环境下:
论文引入了跨模型大小与上下文长度的优化矩阵,指导用户选择适合特定用例的正确优化组合。结果表明,像 DeepSpeed ZeRO 这样的优化对于微调数十亿参数模型不可或缺。结合额外优化以避免内存不足并平衡运行时变得必要。
参考论文: A Study of Optimizations for Fine-tuning Large Language Models 链接: https://arxiv.org/pdf/2406.02290

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online