Path: blob/master/site/zh-cn/guide/migrate/tpu_estimator.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
从 TPUEstimator 迁移到 TPUStrategy
本指南演示了如何将在 TPU 上运行的工作流从 TensorFlow 1 的 TPUEstimator
API 迁移到 TensorFlow 2 的 TPUStrategy
API。
在 TensorFlow 1 中,可以使用
tf.compat.v1.estimator.tpu.TPUEstimator
API 训练和评估模型,以及在 (Cloud) TPU 上执行推断和保存模型(用于应用)。在 TensorFlow 2 中,要在 TPU 和 TPU Pod(通过专用高速网络接口连接的 TPU 设备集合)上进行同步训练,需要使用 TPU 分布策略
tf.distribute.TPUStrategy
。此策略适用于 Keras API(包括用于模型构建 (tf.keras.Model
)、优化器 (tf.keras.optimizers.Optimizer
) 和训练 (Model.fit
) 的 API)以及自定义训练循环(使用tf.function
和tf.GradientTape
)。
对于端到端 TensorFlow 2 示例,请查看使用 TPU 指南(即 TPU 上的分类部分)和在 TPU 上使用 BERT 解决 GLUE 任务教程。您可能还会发现分布式训练指南十分有用,它涵盖了包括 TPUStrategy
在内的所有 TensorFlow 分布策略。
安装
从导入和用于演示目的的简单数据集开始:
TensorFlow 1:使用 TPUEstimator 在 TPU 上驱动模型
指南的这一部分演示了如何在 TensorFlow 1 中使用 tf.compat.v1.estimator.tpu.TPUEstimator
执行训练和评估。
要使用 TPUEstimator
,首先定义几个函数:训练数据的输入函数,评估数据的评估输入函数,以及告知 TPUEstimator
如何使用特征和标签定义训练运算的模型函数:
定义这些函数后,创建一个提供聚簇信息的 tf.distribute.cluster_resolver.TPUClusterResolver
和一个 tf.compat.v1.estimator.tpu.RunConfig
对象。连同您定义的模型函数,现在可以创建一个 TPUEstimator
。在这里,您将通过跳过检查点保存来简化流程。随后,您将为 TPUEstimator
的训练和评估指定批次大小。
调用 TPUEstimator.train
以开始训练模型:
然后,调用 TPUEstimator.evaluate
以使用评估数据评估模型:
TensorFlow 2:使用 Keras Model.fit 和 TPUStrategy 在 TPU 上驱动模型
接下来,准备好数据后,将创建一个 TPUStrategy
,然后在此策略的范围下定义模型、指标和优化器。
要实现与 TPUStrategy
相当的训练速度,应当确保在 Model.compile
中为 steps_per_execution
选择一个数字,因为它指定了每次 tf.function
调用期间要运行的批次数,并且对性能至关重要。此参数类似于 TPUEstimator
中使用的 iterations_per_loop
。如果您使用自定义训练循环,则应确保在 tf.function
修饰过的训练函数中运行多个步骤。如需了解详情,请转到使用 TPU 指南的在 tf.function 中通过多个步骤提升性能部分。
tf.distribute.TPUStrategy
可以支持有界动态形状,即可以推断出动态形状计算的上限。但是,与静态形状相比,动态形状可能会引入一些性能开销。因此,如果有可能,通常建议将输入形状设为静态,尤其是在训练中。返回动态形状的一个常见运算是 tf.data.Dataset.batch(batch_size)
,因为流中剩余的样本数可能小于批次大小。因此,在 TPU 上进行训练时,应使用 tf.data.Dataset.batch(..., drop_remainder=True)
来获得最佳训练性能。
这样,您就可以使用训练数据集训练模型了:
最后,使用评估数据集评估模型:
后续步骤
要详细了解 TensorFlow 2 中的 TPUStrategy
,请查看以下资源:
指南:使用 TPU(涵盖使用 Keras
Model.fit
/自定义训练循环(使用tf.distribute.TPUStrategy
)进行训练,以及使用tf.function
提升性能的技巧)
要详细了解自定义训练,请参阅:
TPU(Google 用于机器学习的专用 ASIC)可通过 Google Colab、TPU Research Cloud 和 Cloud TPU 获得。