趋近智
tf.distribute.Strategy 概述训练机器学习模型的需要常常超出单个计算设备的承载能力。内存限制了模型和数据批次的大小,而计算能力限制则导致训练时间过长。分布式机器学习通过在多个处理单元(可以是单机上的多个GPU,也可以是集群中的多台机器)上并行化训练过程,提供了一条解决途径。
分布式训练的核心目的是加速学习过程,或让单个设备无法容纳的模型得以训练,其方法是分担工作负载。这种分担通常遵循两种主要方式之一:数据并行或模型并行。
数据并行是加速训练最常用的方式。其基本思路很简单:在多个处理单元(常被称为“工作器”)上复制整个模型,然后为每个工作器提供输入数据批次的不同切片。
典型的流程如下:
数据并行的一个图示。输入数据被拆分,每个工作器使用模型副本处理其数据切片,梯度被合并,参数在所有副本间同步更新。
数据并行有效地增加了每步处理的总批次大小,可能加快收敛速度并缩短训练时间。同步是一个重要方面。同步训练会等待所有工作器完成梯度计算后才进行聚合和更新,这能确保一致性,但也可能因最慢的工作器(“落后者”问题)而出现瓶颈。异步训练允许工作器独立更新模型,这可以提高吞吐量,但可能因梯度过时而导致训练稳定性降低。TensorFlow的tf.distribute.Strategy API提供了处理这两种方法的方式。
模型并行采用不同的方法。它不是复制模型,而是将模型本身拆分到不同的设备上。每个设备只包含模型层和参数的一部分。处理数据时,激活会随着输入通过各层,依次从一个设备流向下一个设备。
模型并行(有时称为流水线并行)的一个图示。模型被拆分到不同设备上,数据依次流经各个部分。
这种方法通常用于模型过大以至于单个设备内存无法容纳的情况,即便批次大小很小也如此。常见例子包括非常深的网络或带有巨大嵌入表的模型。模型并行面临的挑战通常是设备利用率不高;当一个设备在计算时,其他设备可能闲置等待数据。更高级的流水线并行技术尝试通过重叠计算阶段来减轻此问题。
实践中,对于在大型集群上训练的超大型模型,有时会使用结合数据并行和模型并行的方法。
分布式训练过程带来了单设备设置中不存在的复杂性:
了解这些基本原理和挑战对于有效运用分布式训练技术非常有必要。TensorFlow的tf.distribute.Strategy API,我们将在接下来的章节中介绍,它提供了一种高级抽象,旨在处理许多这些复杂性,让您能够更专注于模型架构和训练逻辑,同时发挥分布式计算的优势。
这部分内容有帮助吗?
tf.distribute.Strategy API,涵盖各种分布式训练设置和示例。© 2026 ApX Machine Learning用心打造