正规网站模板设计图,做视频必须知道的一些网站,西安网阔云信息科技有限公司,郴州网站建设方案策划LLMs之Framework#xff1a;Hugging Face Accelerate后端框架之FSDP和DeepSpeed的对比与分析 导读#xff1a;该文章阐述了FSDP和DeepSpeed在实现上的差异#xff0c;Accelerate如何统一它们的行为#xff0c;并提供指导帮助用户在两种后端之间切换。同时也讨论了低精度优化…LLMs之FrameworkHugging Face Accelerate后端框架之FSDP和DeepSpeed的对比与分析 导读该文章阐述了FSDP和DeepSpeed在实现上的差异Accelerate如何统一它们的行为并提供指导帮助用户在两种后端之间切换。同时也讨论了低精度优化的内存与收敛权衡。 背景痛点DeepSpeed和PyTorch FSDP是两种流行的ZeRO Redundancy Optimizer(Zero)算法实现在模型训练过程中可能会产生不同的结果。DeepSpeed和FSDP处理混合精度的方式不同导致在相同的学习率下收敛表现有差异。 解决方案 在Hugging Face Accelerate中同时支持DeepSpeed和FSDP后端。 针对FSDP新增了mixed-precision模式以与DeepSpeed保持一致同时也保留了原有的低精度模式。 新增概念指南帮助用户在DeepSpeed和FSDP之间无缝切换。 核心思路步骤 发现问题根源在于DeepSpeed总是在内部将权重参数升级为FP32精度而FSDP遵循PyTorch默认行为。 DeepSpeed由于内部升精度会在低精度下出现不收敛的情况。 新增FSDP的mixed-precision模式在优化器步骤前也将参数升级为FP32。 提供指南介绍如何在DeepSpeed和FSDP间切换配置分片策略、权重预取等。 优势 统一了DeepSpeed和FSDP在Accelerate中的表现提供了可选的高低精度模式。 指南让用户可以顺畅切换不同后端充分利用两种方案的优势。 为大规模对齐任务等提供了更好的性能和灵活性选择。 目录
Hugging Face Accelerate后端框架之FSDP和DeepSpeed的对比与分析
相关论文
《A Hugging Face Accelerate Story of Multiple Backends: FSDP and DeepSpeed》的翻译与解读
核心要点梳理DeepSpeed对比FSDP Hugging Face Accelerate后端框架之FSDP和DeepSpeed的对比与分析
相关论文
《A Hugging Face Accelerate Story of Multiple Backends: FSDP and DeepSpeed》的翻译与解读 地址 论文地址https://huggingface.co/blog/deepspeed-to-fsdp-and-back 时间 2024年6月13日 作者 Yu Chin Fabian、aldo pareja、Zachary Mueller、Stas Bekman 总结 总的来说该文章阐述了FSDP和DeepSpeed在实现上的差异Accelerate如何统一它们的行为并提供指导帮助用户在两种后端之间切换。同时也讨论了低精度优化的内存与收敛权衡。 核心要点梳理DeepSpeed对比FSDP 框架差异 DeepSpeed 和 FSDP 是两种流行的优化器分片(ZeRO算法)实现各自有不同的精度处理方式。DeepSpeed 默认在 fp32 精度下操作FSDP 更灵活可以选择更低的精度。 DeepSpeed 和 PyTorch 中的 FSDP 是社区中两种流行的 ZeRO Redundancy Optimizer (Zero) 算法实现用于分布式训练大型模型。Hugging Face Accelerate 允同时支持这两个框架之间无缝切换。 是否可互换 DeepSpeed 和 FSDP 在损失收敛上有明显差异造成差异的原因在于精度处理不同。可以通过调整学习率可改善 FSDP 表现。 在实验中使用 Mistral-7B 模型进行训练时DeepSpeed 的损失收敛良好而 FSDP 的损失没有减少收敛效果较差。通过将学习率根据 GPU 数量进行调整FSDP 的表现有所改善。 精度问题 DeepSpeed 使用 fp32FSDP 允许低精度操作。 DeepSpeed 内部使用全精度fp32进行优化这可能导致在低精度下不收敛的问题。FSDP 不强制使用全精度允许在低精度(如BF16)下操作从而提供了更大的灵活性。 DeepSpeed 内部总是将参数提升到 fp32 进行计算这在小规模 GPU 环境中可能增加内存消耗。FSDP 则允许使用低精度操作更适合内存受限的场景但收敛可能较慢。DeepSpeed 的upcasting方式则收敛更快但内存开销较大。 协调改进 FSDP 在 Accelerate 中增加了自动提升精度功能支持混合精度和低精度模式。 为了更好协调 DeepSpeed 和 FSDP Hugging Face Accelerate 为 FSDP 增加了自动提升精度的功能。FSDP 现在可以在“混合精度”和“低精度”两种模式下操作。 为统一两种后端Hugging Face Accelerate为FSDP 引入了混合精度模式与DeepSpeed 行为一致在FP32上进行优化。 因此Accelerate下FSDP 有两种模式 默认低精度模式参数保持载入精度(如BF16)内存占用少 混合精度模式参数在FP32上优化行为与DeepSpeed 一致 性能对比 FSDP 和 DeepSpeed 在 IBM Granite 7B 上表现相似处理速度和效率接近。 使用 IBM Granite 7B 模型进行吞吐量比较FSDP 和 DeepSpeed 的表现相似。 在四个 A100 GPU 上进行测试FSDP 和 DeepSpeed 的每秒处理的 token 数量和模型 FLOP 利用率相近。 结论与思考 提供迁移指南通过配置文件可在两个框架间切换。 Hugging Face Accelerate提供了帮助用户在两个框架之间迁移的概念指南。通过修改 Accelerate 配置文件可以轻松在 FSDP 和 DeepSpeed 之间切换。 Accelerate提供了新的概念指南帮助用户在两种后端之间迁移包括分片策略、模型加载、权重预取等。通过Accelerate的命令行和插件类可以轻松切换FSDP 和DeepSpeed 后端。