技术指南

模型和管道并行性

当模型太大而无法容纳在一个 GPU 上时,模型和管道并行性会将模型本身分割到不同的设备上。

阅读时间:2分钟最后更新

概述

This is what makes training giant language models with hundreds of billions of parameters physically possible.

深入探讨

模型并行性将单个模型划分到多个 GPU 上,因此没有一个设备需要保存所有权重。主要有两种口味。张量(层内)并行性将层内的数学拆分,例如在 GPU 之间切分大型矩阵乘法,每个 GPU 计算部分输出。管道(层间)并行性将不同的连续层分配给不同的 GPU,因此层块 1 位于 GPU 0 上,块 2 位于 GPU 1 上,依此类推,激活像装配线一样向前传递。简单流水线的挑战是“泡沫”:当 GPU 0 在第一批中工作时,下游 GPU 闲置。流水线将每个批次分成微批次,因此所有阶段都保持忙碌,从而显着提高利用率。

技术洞察

张量并行性(如在 NVIDIA Megatron-LM 中)按列或行拆分权重矩阵,并使用 all-reduce 重新组合部分结果,从而在快速 NVLink 节点内保持通信。管道并行性(GPipe、PipeDream)将批处理划分为微批处理,这些微批处理以交错的时间表流经各个阶段,从而缩短了空闲“泡沫”时间。两者通常分层在一起,在节点内使用张量并行性,在节点之间使用管道并行性。

战略影响

成本与预算

多年来,架构决策决定着性能和运营成本。

更清晰的判决

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。

质量控制

更好的工程选择可以减少生产中的可靠性事故。

模型和管道并行性的未来

框架越来越自动化地解决决定如何跨设备划分模型的难题,使用分析和搜索来平衡计算和通信。预计张量、管道和数据并行性(3D 并行性)会更紧密地集成,更智能的微批量调度将几乎消除管道泡沫,以及具有更快互连的硬件,因此跨芯片分割单层对于更大的模型来说变得更便宜和更常规。

现实世界的实施

使用 NVIDIA Megatron-LM 训练 GPT 风格的模型,它通过张量并行性在 GPU 上分割每个 Transformer 层的注意力和前馈矩阵。

使用 GPipe 将巨型视觉或语言模型的不同层放置在单独的加速器上,而微批处理则让它们忙碌起来。

DeepSpeed 的管道引擎将数千亿参数模型划分为跨多个节点的阶段。

将单个 8-GPU 服务器内的张量并行性与跨多个服务器的管道并行性相结合,以训练对于一台机器来说太大的模型。

风险与防护栏

优化一项基准测试可以隐藏更广泛的系统弱点。

基础设施和维护成本常常被低估。

随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

实施路线图

1

在实施之前定义延迟、质量和成本目标。

2

在实际负载和数据条件下进行基准测试。

3

仪器监控错误、漂移和用户影响。

4

在扩展之前准备回滚和事件响应路径。

不断探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Model and Pipeline Parallelism quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

开始测验

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一个指南

大型模型的张量并行性

常见问题

What is Model and Pipeline Parallelism?

当模型太大而无法容纳在一个 GPU 上时,模型和管道并行性会将模型本身分割到不同的设备上。这使得训练具有数千亿参数的巨型语言模型在物理上成为可能。

模型和管道并行性解决了什么基本问题?

模型和管道并行性将模型本身跨设备进行分区,从而能够训练远远大于任何单个 GPU 所能容纳的网络。

张量(层内)并行分割如何工作?

张量并行性将计算划分为单层,例如分割一个大的权重矩阵,以便每个 GPU 计算部分输出。

简单的管道并行性中的“泡沫”是什么?

在管道步骤的早期,下游阶段还没有输入并处于空闲状态,浪费 GPU 时间;这种闲置间隙称为泡沫。

管道并行如何减少气泡?

将批次划分为微批次可以让多个微批次同时占据不同的阶段,从而保持所有 GPU 繁忙并减少空闲时间。

为什么张量并行性通常保留在单个节点内?

张量并行性经常进行通信以重新组合部分矩阵结果,因此它被放置在 NVLink 节点内部互连带宽最高的地方。