AI框架:9大主流分布式深度学习框架简介

这篇具有很好参考价值的文章主要介绍了AI框架:9大主流分布式深度学习框架简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

转载翻译Medium上一篇关于分布式深度学习框架的文章 https://medium.com/@mlblogging.k/9-libraries-for-parallel-distributed-training-inference-of-deep-learning-models-5faa86199c1fmedium.com/@mlblogging.k/9-libraries-for-parallel-distributed-training-inference-of-deep-learning-models-5faa86199c1f

一、训练大模型的基础

大型深度学习模型在训练时需要大量内存来存储中间激活、权重等参数,导致某些模型只能在单个 GPU 上使用非常小的批大小进行训练,甚至无法在单个 GPU上进行训练,使得模型训练在某些情况下非常低效和不可能。

在大规模深度学习模型训练中有个主要范式:

  • 数据并行
  • 模型并行

我们将讨论大规模深度学习模型训练中的核心概念以及在模型训练领域的最新进展和改进方法,然后分享一些实现这些方法的可用库。

1.数据并行

应用数据并行最常见的场景是模型尺寸能够被 GPU 内存容纳,数据批大小会增加模型训练的难度。解决方案是让模型的不同实例在不同的 GPU 和不同批数据上运行,如下图所示。

ai框架,AIGC 人工智能,人工智能,深度学习,框架,pytorch,TensorFlow

模型的每个实例都使用相同的参数进行初始化,但在前向传递期间,不同批次的数据被发送到每个模型。 收集来自每个模型实例的梯度并计算梯度更新。,然后更新模型参数并将其作为更新发送到每个模型实例。

2.模型并行

当单个 GPU无法容纳模型尺寸时,模型并行性变得必要,有必要将模型拆分到多个 GPU 上进行训练。

ai框架,AIGC 人工智能,人工智能,深度学习,框架,pytorch,TensorFlow

通过把一个大模型拆分到多个 GPU 上训练,可以实现模型尺寸超过单个 GPU显存的深度学习模型训练。 这种方法的问题是计算使用效率不高,因为在任何时间点只有一个 GPU 正在使用,而其他 GPU 处于空闲状态。

二、进阶演化

上述两个并行训练范式已有各种优化和增强方法,使训练/推理变得高效,包含如下:

  • TensorParallel
  • Pipeline Model Parallel
  • Zero Redundancy Optimizer (ZeRO)
  • Sharded DDP

三、主流框架

1. Megatron-LM

Megatron 是由 NVIDIA 深度学习应用研究团队开发的大型 Transformer 语言模型,该模型用于研究大规模训练大型语言模型。Megatron 支持transformer模型的模型并行(张量、序列和管道)和多节点预训练,同时还支持 BERT、GPT 和 T5 等模型。

2.DeepSpeed

ai框架,AIGC 人工智能,人工智能,深度学习,框架,pytorch,TensorFlow

DeepSpeed是微软的深度学习库,已被用于训练 Megatron-Turing NLG 530B 和 BLOOM等大型模型。DeepSpeed的创新体现在三个方面:训练 ,推理 ,压缩

DeepSpeed具备以下优势:

  • 训练/推理具有数十亿或数万亿个参数的密集或稀疏模型
  • 实现出色的系统吞吐量并有效扩展到数千个 GPU
  • 在资源受限的 GPU 系统上训练/推理
  • 为推理实现前所未有的低延迟和高吞吐量
  • 以低成本实现极致压缩,实现无与伦比的推理延迟和模型尺寸缩减

3. FairScale

ai框架,AIGC 人工智能,人工智能,深度学习,框架,pytorch,TensorFlow

FairScale(由 Facebook 研究)是一个用于高性能和大规模训练的 PyTorch 扩展库。 FairScale 的愿景如下:

  • 可用性:用户应该能够以最小的认知代价理解和使用 FairScale API。
  • 模块化:用户应该能够将多个 FairScale API 无缝组合为训练循环的一部分。
  • 性能:airScale API 在扩展和效率方面提供了最佳性能。

FairScale 支持Fully Sharded Data Parallel (FSDP),这是扩展大型神经网络训练的推荐方式。

ai框架,AIGC 人工智能,人工智能,深度学习,框架,pytorch,TensorFlow

FSDP workflow from https://pytorch.org/blog/introducing-pytorch-fully-sharded-data-parallel-api/

4. ParallelFormers

ai框架,AIGC 人工智能,人工智能,深度学习,框架,pytorch,TensorFlow

Parallelformers 是一个基于 Megatron-LM 的库。 它与 Huggingface 库很好地集成在一起。 Huggingface 库中的模型可以用一行代码并行化。 目前它只支持推理。

from transformers import AutoModelForCausalLM, AutoTokenizer
from parallelformers import parallelize
model = AutoModelForCausalLM.from_pretrained("EleutherAI/gpt-neo-2.7B")
tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neo-2.7B")

parallelize(model, num_gpus=2, fp16=True, verbose='detail')

5. ColossalAI

ai框架,AIGC 人工智能,人工智能,深度学习,框架,pytorch,TensorFlow

Colossal-AI提供了一组并行组件,可以用来实现定制化的分布式/并行训练,包含以下并行化策略和增强功能:

  • Data Parallelism
  • Pipeline Parallelism
  • **1D,2D,2.5D,****3D**Tensor Parallelism
  • Sequence Parallelism
  • Zero Redundancy Optimizer (ZeRO)
  • Heterogeneous Memory Management (PatrickStar)
  • For Inference**Energon-AI**

6. Alpa

ai框架,AIGC 人工智能,人工智能,深度学习,框架,pytorch,TensorFlow

Alpa是一个用于训练和服务大规模神经网络的系统,具备如下特点:

  • 自动并行化:Alpa基于数据、运算符和管道并行机制自动化地实现单设备代码在分布式集群并行化。
  • 完美的表现:Alpa 在分布式集群上实现了数十亿参数的训练模型的线性缩放。
  • 与机器学习生态系统紧密集成:Alpa由开源、高性能和生产就绪的库(如 Jax、XLA 和 Ray)提供支持。

7. Hivemind

ai框架,AIGC 人工智能,人工智能,深度学习,框架,pytorch,TensorFlow

Hivemind是一个在互联网上使用 Pytorch 进行去中心化深度学习的库。 它主要服务场景是在来自不同大学、公司和志愿者的数百台计算机上训练一个大型模型。

其主要特点是:

  • 没有主节点的分布式训练:分布式哈希表允许连接分散网络中的计算机。
  • 容错反向传播:即使某些节点没有响应或响应时间过长,前向和后向传递也会成功。
  • 分散的参数平均:迭代地聚合来自多个工作人员的更新,而无需在整个网络中同步(论文)。
  • 训练任意大小的神经网络:它们的部分层通过分散的专家混合(论文)分布在参与者之间。

8. OneFlow

OneFlow 是一个深度学习框架,旨在实现用户友好、可扩展和高效。 使用 OneFlow,很容易:

  • 使用类似 PyTorch 的 API 编写模型
  • 使用 Global View API 将模型缩放到 n 维并行/分布式执行
  • 使用静态图编译器加速/部署模型。

9. Mesh-Tensorflow

根据 github 页面:Mesh TensorFlow (mtf) 是一种用于分布式深度学习的语言,能够指定广泛的分布式张量计算类别。 这里的“Mesh”是指处理器或计算设备的互连网络。

其他

1.引用

  • Survey on Large Scale Neural Network Training
  • Dive into Big Model Training
  • How to Train Really Large Models on Many GPUs?
  • https://github.com/qhliu26/BM-Training
  • https://huggingface.co/docs/transformers/v4.17.0/en/parallelism
  • https://pytorch.org/tutorials/beginner/blitz/data_parallel_tutorial.html
  • https://pytorch.org/tutorials/intermediate/model_parallel_tutorial.html
  • https://pytorch.org/tutorials/i

2.参考

https://zhuanlan.zhihu.com/p/582498905文章来源地址https://www.toymoban.com/news/detail-702838.html

到了这里,关于AI框架:9大主流分布式深度学习框架简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式深度学习库BigDL简述

            BigDL是一个在Apache Spark上构建的分布式深度学习库,由英特尔开发并开源。它允许用户使用Scala或Python语言在大规模数据集上进行深度学习模型的训练和推理。BigDL提供了许多常见的深度学习模型和算法的实现,包括卷积神经网络(CNN)、循环神经网络(RNN)等。由

    2024年04月10日
    浏览(38)
  • 机器学习分布式框架ray tune笔记

    Ray Tune作为Ray项目的一部分,它的设计目标是简化和自动化机器学习模型的超参数调优和分布式训练过程。Ray Tune简化了实验过程,使研究人员和数据科学家能够高效地搜索最佳超参数,以优化模型性能。 Ray Tune的主要特点包括: 超参数搜索空间规范 : Ray Tune允许您使用多种方

    2024年02月15日
    浏览(42)
  • 在Kubernetes上部署分布式深度学习训练平台

    作者:禅与计算机程序设计艺术 1.1 什么是深度学习? 1.2 为什么需要深度学习? 1.3 深度学习平台架构图 # 2.基本概念术语说明 2.1 Kubernetes 2.2 GPU 2.3 MPI # 3.核心算法原理和具体操作步骤以及数学公式讲解 3.1 数据加载流程 3.2 网络结构设计 3.3 激活函数设计 3.4 损失函数设计 3

    2024年02月07日
    浏览(40)
  • 机器学习分布式框架ray运行TensorFlow实例

    使用Ray来实现TensorFlow的训练是一种并行化和分布式的方法,它可以有效地加速大规模数据集上的深度学习模型的训练过程。Ray是一个高性能、分布式计算框架,可以在集群上进行任务并行化和数据并行化,从而提高训练速度和可扩展性。 以下是实现TensorFlow训练的概括性描述

    2024年02月15日
    浏览(50)
  • 机器学习分布式框架ray运行xgboost实例

            Ray是一个开源的分布式计算框架,专门用于构建高性能的机器学习和深度学习应用程序。它的目标是简化分布式计算的复杂性,使得用户能够轻松地将任务并行化并在多台机器上运行,以加速训练和推理的速度。Ray的主要特点包括支持分布式任务执行、Actor模型、

    2024年02月15日
    浏览(42)
  • 分布式深度学习中的数据并行和模型并行

    🎀个人主页: https://zhangxiaoshu.blog.csdn.net 📢欢迎大家:关注🔍+点赞👍+评论📝+收藏⭐️,如有错误敬请指正! 💕未来很长,值得我们全力奔赴更美好的生活! 对于深度学习模型的预训练阶段,海量的训练数据、超大规模的模型给深度学习带来了日益严峻的挑战,因此,经

    2024年01月24日
    浏览(44)
  • 【深度学习】【分布式训练】Collective通信操作及Pytorch示例

    相关博客 【Megatron-DeepSpeed】张量并行工具代码mpu详解(一):并行环境初始化 【Megatron-DeepSpeed】张量并行工具代码mpu详解(二):Collective通信操作的封装mappings 【深度学习】【分布式训练】DeepSpeed:AllReduce与ZeRO-DP 【深度学习】混合精度训练与显存分析 【深度学习】【分布式训练

    2023年04月13日
    浏览(36)
  • PyTorch Lightning:通过分布式训练扩展深度学习工作流

              欢迎来到我们关于 PyTorch Lightning 系列的第二篇文章!在上一篇文章中,我们向您介绍了 PyTorch Lightning,并探讨了它在简化深度学习模型开发方面的主要功能和优势。我们了解了 PyTorch Lightning 如何为组织和构建 PyTorch 代码提供高级抽象,使研究人员和从业者能够

    2024年02月11日
    浏览(43)
  • 39学习分布式计算框架 Hadoop 的高可用方案,如 NameNode 集群、ZooKeeper

    Hadoop 是一个分布式计算框架,用于存储和处理大数据。在 Hadoop 集群中,NameNode 是一个关键组件,它负责管理 Hadoop 分布式文件系统(HDFS)中的文件和目录。为了确保高可用性,需要使用多个 NameNode 节点进行冗余备份,并使用 ZooKeeper 进行故障检测和自动故障切换。 以下是学

    2023年04月26日
    浏览(50)
  • 分布式锁简介

    Redis因为单进程、性能高常被用于分布式锁;锁在程序中作用是同步工具,保证共享资源在同一时刻只能被一个线程访问。     Java中经常用的锁synchronized、Lock,但是Java的锁智能保证单机的时候有效,分布式集群环境就无能为力了,这时候需要用到分布式锁。   分布式锁,就

    2023年04月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包