Colossal AI 并行技术

简介

随着深度学习的发展,对并行训练的需求越来越大。这是因为模型和数据集越来越大,如果我们坚持使用单 GPU 训练,训练过程的等待将会成为一场噩梦。在本节中,我们将对现有的并行训练方法进行简要介绍。如果您想对这篇文章进行补充,欢迎在GitHub论坛上进行讨论。

数据并行

数据并行是最常见的并行形式,因为它很简单。在数据并行训练中,数据集被分割成几个碎片,每个碎片被分配到一个设备上。这相当于沿批次维度训练过程进行并行化。每个设备将持有一个完整的模型副本,并在分配的数据集碎片上进行训练。在反向传播之后,模型的梯度将被全部减少,以便在不同设备上的模型参数能够保持同步。

数据并行

模型并行

在数据并行训练中,一个明显的特点是每个 GPU 持有整个模型权重的副本。这就带来了冗余问题。另一种并行模式是模型并行,即模型被分割并分布在一个设备阵列上。通常有两种类型的并行:张量并行和流水线并行。张量并行是在一个操作中进行并行计算,如矩阵-矩阵乘法。流水线并行是在各层之间进行并行计算。因此,从另一个角度来看,张量并行可以被看作是层内并行,流水线并行可以被看作是层间并行。

张量并行

张量并行训练是将一个张量沿特定维度分成 N 块,每个设备只持有整个张量的 1/N,同时不影响计算图的正确性。这需要额外的通信来确保结果的正确性。

以一般的矩阵乘法为例,假设我们有 C = AB。我们可以将B沿着列分割成 [B0 B1 B2 ... Bn],每个设备持有一列。然后我们将 A 与每个设备上 B 中的每一列相乘,我们将得到 [AB0 AB1 AB2 ... ABn] 。此刻,每个设备仍然持有一部分的结果,例如,设备(rank=0)持有 AB0。为了确保结果的正确性,我们需要收集全部的结果,并沿列维串联张量。通过这种方式,我们能够将张量分布在设备上,同时确保计算流程保持正确。

张量并行

在 Colossal-AI 中,我们提供了一系列的张量并行方法,即 1D、2D、2.5D 和 3D 张量并行。我们将在高级教程中详细讨论它们。

相关文章:

流水线并行

流水线并行一般来说很容易理解。请您回忆一下您的计算机结构课程,这确实存在于 CPU 设计中。

流水线并行

流水线并行的核心思想是,模型按层分割成若干块,每块都交给一个设备。在前向传递过程中,每个设备将中间的激活传递给下一个阶段。在后向传递过程中,每个设备将输入张量的梯度传回给前一个流水线阶段。这允许设备同时进行计算,并增加了训练的吞吐量。流水线并行训练的一个缺点是,会有一些设备参与计算冒泡时间,导致计算资源的浪费。

Source: GPipe

相关文章:

优化器相关的并行

另一种并行方法和优化器相关,目前这种并行最流行的方法是 ZeRO,即零冗余优化器。 ZeRO 在三个层面上工作,以消除内存冗余(ZeRO需要进行fp16训练)。

  • Level 1: 优化器状态在各进程中被划分。
  • Level 2: 用于更新模型权重的32位梯度也被划分,因此每个进程只存储与其优化器状态划分相对应的梯度。
  • Level 3: 16位模型参数在各进程中被划分。

相关文章:

异构系统的并行

上述方法通常需要大量的 GPU 来训练一个大型模型。然而,人们常常忽略的是,与 GPU 相比,CPU 的内存要大得多。在一个典型的服务器上,CPU 可以轻松拥有几百GB的内存,而每个 GPU 通常只有16或32GB的内存。这促使人们思考为什么 CPU 内存没有被用于分布式训练。

最近的进展是依靠 CPU 甚至是 NVMe 磁盘来训练大型模型。主要的想法是,在不使用张量时,将其卸载回 CPU 内存或 NVMe 磁盘。通过使用异构系统架构,有可能在一台机器上容纳一个巨大的模型。

异构系统

相关文章:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2021 AI基础软件架构峰会PPT汇总,共29份。 AI基础设施软件技术横跨深度学习算法、编程语言、编译器、数据库、分布式系统、高性能网络和AI芯片等多个前沿领域,是当前学术界和产业界共同感到兴奋的新领域。 一、AI芯片及编译器 AI芯片软件栈技术挑战和初探 地平线在软硬件协同设计的一些实践 NVIDIA GPU架构下稀疏特性的实践与挑战 二、深度学习框架 当我们谈论框架时,我们在谈论什么? 面向云计算的分布式机器学习优化实践 超大模型高效训练的分布式框架Whale 飞桨:源于产业实践的开源深度学习平台 MegEngine DTR 技术与训练框架技术创新 构建高效易用的图深度学习平台 三、端侧推理 Tengine-边缘AI异构计算平台 面向AIoT的深度学习框架MACE PNNX:PyTorch Neural Network Exchange MNN —— 功能完备的推理引擎 四、MLops及AI工程化落地 建立公开数据集标准,赋能AI工程化落地 字节跳动机器学习系统云原生落地与实践 OpenMLDB:为AI工程化落地高效供给正确数据 开源AI框架的程序接口设计 五、超大规模模型训练 快手八卦!突破 PyTorch、TensorFlow并行瓶颈的训练加速框架到底是啥? Maximizing Parallelism in Distributed Training for Huge Neural Networks 神舟大规模预训练模型 让大规模分布式深度学习变得更方便 六、互联网广告推荐 基于GPU的超大规模离散模型训练框架PaddleBox、FeaBox 浅谈点击率预测模型中Embedding层的学习和训练 XDL训练系统的演进 稀疏模型训练引擎-DeepRec 无量深度学习系统在腾讯推荐类业务的应用 七、前沿应用与基础架构 如何使用 JuiceFS 为 CV 模型训练提速 Milvus+Towhee:向量数据库及embedding流水线
### 回答1: OpenAIColossal AI是一个开放的机器学习框架,而Moss是一种开放式软件,主要用于管理机器学习模型、指标和参数。因此,这两者之间的主要区别在于,Colossal AI提供了一个可以用于开发机器学习模型的框架,而Moss则提供了一种管理和组织机器学习模型的方法。 ### 回答2: Colossal AI和moss是两种不同的人工智能模型和工具。 首先,Colossal AI是一种被广泛用于自然语言处理(NLP)任务的大型AI模型。它基于GPT(Generative Pre-trained Transformer)架构,使用了数以亿计的参数进行模型训练,并能够生成类似人类语言的文本。Colossal AI的优势在于它的语言生成能力和广泛的适用范围,可以应用于机器翻译、文本摘要、对话系统等多个领域。 而moss是一种进行代码相似性检测的工具。它是一种比较算法,通过分析代码的结构和内容,检测出相似的代码片段。moss常用于教育领域,帮助教师发现学生之间的代码抄袭行为,并确定代码相似度。相比于Colossal AI,moss更侧重于静态代码分析和相似性检测。 从使用场景上来看,Colossal AI主要应用于自然语言处理任务,而moss则用于代码相似性检测。两者的目标和应用范围有所不同。 此外,Colossal AI和moss还有一些技术上的区别。Colossal AI是基于深度学习的NLP模型,需要进行大规模的模型训练和调整参数。而moss则是基于代码比较算法,涉及到文本相似性计算和算法设计。从技术角度来看,两者也有明显的差异。 总的来说,Colossal AI和moss是两种不同领域的人工智能模型和工具,分别用于自然语言处理和代码相似性检测。它们的目标、应用范围和技术方法都有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值