概述
这使得训练具有数千亿参数的巨型语言模型在物理上成为可能。
深入探讨
模型并行性将单个模型划分到多个 GPU 上,因此没有一个设备需要保存所有权重。主要有两种口味。张量(层内)并行性将层内的数学拆分,例如在 GPU 之间切分大型矩阵乘法,每个 GPU 计算部分输出。管道(层间)并行性将不同的连续层分配给不同的 GPU,因此层块 1 位于 GPU 0 上,块 2 位于 GPU 1 上,依此类推,激活像装配线一样向前传递。简单流水线的挑战是“泡沫”:当 GPU 0 在第一批中工作时,下游 GPU 闲置。流水线将每个批次分成微批次,因此所有阶段都保持忙碌,从而显着提高利用率。
现实世界的实施
使用 NVIDIA Megatron-LM 训练 GPT 风格的模型,它通过张量并行性在 GPU 上分割每个 Transformer 层的注意力和前馈矩阵。
使用 GPipe 将巨型视觉或语言模型的不同层放置在单独的加速器上,而微批处理则让它们忙碌起来。
DeepSpeed 的管道引擎将数千亿参数模型划分为跨多个节点的阶段。
将单个 8-GPU 服务器内的张量并行性与跨多个服务器的管道并行性相结合,以训练对于一台机器来说太大的模型。
模型和管道并行性的未来
框架越来越自动化地解决决定如何跨设备划分模型的难题,使用分析和搜索来平衡计算和通信。预计张量、管道和数据并行性(3D 并行性)会更紧密地集成,更智能的微批量调度将几乎消除管道泡沫,以及具有更快互连的硬件,因此跨芯片分割单层对于更大的模型来说变得更便宜和更常规。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
什么是模型和管道并行性?
当模型太大而无法容纳在一个 GPU 上时,模型和管道并行性会将模型本身分割到不同的设备上。这使得训练具有数千亿参数的巨型语言模型在物理上成为可能。
模型和管道并行性解决了什么基本问题?
模型和管道并行性将模型本身跨设备进行分区,从而能够训练远远大于任何单个 GPU 所能容纳的网络。
张量(层内)并行分割如何工作?
张量并行性将计算划分为单层,例如分割一个大的权重矩阵,以便每个 GPU 计算部分输出。
简单的管道并行性中的“泡沫”是什么?
在管道步骤的早期,下游阶段还没有输入并处于空闲状态,浪费 GPU 时间;这种闲置间隙称为泡沫。
管道并行如何减少气泡?
将批次划分为微批次可以让多个微批次同时占据不同的阶段,从而保持所有 GPU 繁忙并减少空闲时间。
为什么张量并行性通常保留在单个节点内?
张量并行性经常进行通信以重新组合部分矩阵结果,因此它被放置在 NVLink 节点内部互连带宽最高的地方。