GPU并行计算策略介绍 您所在的位置:网站首页 超算与并行计算 GPU并行计算策略介绍

GPU并行计算策略介绍

2023-03-14 18:25| 来源: 网络整理| 查看: 265

通常 GPU 并行计算有两种策略。

模型并行 这种并行模式将计算任务拆分成若干个更小但不同的任务。尤其 是大模型参数量过大的原因,一般不能将一个模型完整地装载至一张 GPU 卡,甚至是一个节点(含有多张卡)。此时往往要根据模型的不同功能组件 或者对长 Tensor 进行切分,将经过切分的子任务分配到不同的 GPU 卡中。 如果不同部分存在数据和功能上的逻辑相关性,也可以组成一道流水线。

数据并行 这种并行模式将数据分解为多个部分,让每个运算单元分别去计 算一个或多个小块数据,最后进行汇总。由于不需要对训练过程部分的代 码大幅改动,是使用率较高的并行方式。从标准的数据并行(Data Parallel, DP),发展到分布式数据并行(Distributed Data Parallel,DDP),再到目前 的完全分片数据并行(Fully Sharded Data Parallel,FSDP), 在并行通信效 率上得到了大幅提升。机器学习中的随机梯度下降法(Stochastic Gradient Descent,SGD),极大促进了这类并行策略在深度学习训练过程中的应用。

一般来说,CPU 的多线程编程偏向于第一种并行模式,优点是可以带 来更高的并行效率,可以处理超过单个计算节点位宽的数据。缺点是不同计 算单元之间的同步和通信机制的设计要求较高,随着并行节点的增加,通信 的计算资源消耗快速增加。GPU 并行编程模式则偏向于第二种,优点是并 行算法设计相对简单,容易增加新的计算节点。缺点是要求每个计算节点必 须有足够的容量,可以装载整个模型。这对大模型而言往往是不可实现的。 因此现实中,大模型的训练部署往往采用混合方式。例如将整个 GPU 集群 以数据并行的方式分成若干块,每块装入一个大模型。块内按照任务并行的 方式,将大模型分解成如干与每块 GPU 容量匹配的子任务,每块 GPU 对 应一个子任务,可以是大模型不同的网络组件,甚至可以是长 Tensor 分成 多个短 Tensor 进行并行计算。如果设计合理,还可以做到不同网络组件的 流水线并行,通过一种“接力”的方式并行提高计算效率。

即使目前业界已有的 GPU 分布式训练方案,也严重依赖于服务器之间 的通信、拓扑、模型并行、流水并行等底层问题的解决情况。如果只有分布 式训练框架,甚至都无法正常启动训练过程。这也是为什么 GPT-3 已经发 布了一年,却只有少数企业可以复现 GPT-3。目前,已经公布明确已经完成 千亿参数规模大模型训练的框架主要是 NVIDIA 开发的 Megatron-LM 、经 过微软深度定制开发的 DeepSpeed、国产百度飞浆 PaddlePaddle 和华为昇 思 MindSpore。大多数并行框架都支持 PyTorch 分布式训练,可以完成百 亿参数规模的模型训练。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有