Path: blob/master/site/es-419/guide/migrate/tpu_estimator.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Migrar de TPUEstimator a TPUStrategy
Esta guía demuestra cómo migrar sus flujos de trabajo que se ejecutan en TPUs desde la API TPUEstimator
de TensorFlow 1 a la API TPUStrategy
de TensorFlow 2.
En TensorFlow 1, la API
tf.compat.v1.estimator.tpu.TPUEstimator
le permite entrenar y evaluar un modelo, así como realizar inferencias y guardar su modelo (para ser distribuido) en TPUs (en la nube).En TensorFlow 2, para realizar un entrenamiento síncrono en TPUs y TPU Pods (una recolección de dispositivos TPU conectados por interfaces de red dedicadas de alta velocidad), es necesario usar una estrategia de distribución de TPUs:
tf.distribute.TPUStrategy
. La estrategia puede funcionar con las API de Keras [incluyendo para la construcción de modelos (tf.keras.Model
), optimizadores (tf.keras.optimizers.Optimizer
) y entrenamiento (Model.fit
)] así como con un bucle de entrenamiento personalizado (contf.function
ytf.GradientTape
).
Para ver ejemplos de TensorFlow 2 de principio a fin, consulte la guía Utilizar TPUs (concretamente, la sección Clasificación en TPUs) y el tutorial Cómo resolver tareas GLUE utilizando BERT en TPU. También le puede resultar útil la guía Entrenamiento distribuido, que cubre todas las estrategias de distribución de TensorFlow, incluyendo TPUStrategy
.
Preparación
Empieza con imports y un conjunto de datos sencillo a modo de demostración:
TensorFlow 1: Impulsar un modelo en TPUs con TPUEstimator
Esta sección de la guía muestra cómo realizar el entrenamiento y la evaluación con tf.compat.v1.estimator.tpu.TPUEstimator
en TensorFlow 1.
Para usar un TPUEstimator
, defina primero algunas funciones: una función de entrada para los datos de entrenamiento, una función de entrada de evaluación para los datos de evaluación y una función de modelo que indique al TPUEstimator
cómo se define la op de entrenamiento con las características y las etiquetas:
Con esas funciones definidas, cree un objeto tf.distribute.cluster_resolver.TPUClusterResolver
que facilite la información del cluster, y un objeto tf.compat.v1.estimator.tpu.RunConfig
. Junto con la función modelo que ha definido, ahora puede crear un TPUEstimator
. Aquí, simplificará el flujo omitiendo el guardado de puntos de verificación. Después, especificará el tamaño del lote tanto para el entrenamiento como para la evaluación para el TPUEstimator
.
Llame a TPUEstimator.train
para comenzar el entrenamiento del modelo:
Luego, llame a TPUEstimator.evaluate
para evaluar el modelo usando los datos de la evaluación:
TensorFlow 2: Impulsar un modelo sobre TPUs con Keras Model.fit y TPUStrategy
En TensorFlow 2, para entrenar sobre los trabajadores TPU, use tf.distribute.TPUStrategy
junto con las APIs de Keras para la definición y entrenamiento / evaluación del modelo (consulte la guía Utilizar TPU para ver más ejemplos de entrenamiento con Model.fit
de Keras y un bucle de entrenamiento personalizado (con tf.function
y tf.GradientTape
)).
Dado que necesita realizar algún trabajo de inicialización para conectarse al cluster remoto e inicializar los trabajadores de la TPU, comience creando un TPUClusterResolver
para proveer la información del cluster y conectarse al mismo. Puede aprender más en la sección Inicialización de TPU de la guía Utilizar TPUs.
A continuación, una vez preparados sus datos, creará una TPUStrategy
, definirá un modelo, métricas y un optimizador en el ámbito de esta estrategia.
Para lograr una velocidad de entrenamiento comparable con TPUStrategy
, procure elegir un número para steps_per_execution
en Model.compile
porque éste especifica el número de lotes a ejecutar durante cada llamada a tf.function
, y es crítico para el rendimiento. Este argumento es similar a iterations_per_loop
usado en un TPUEstimator
. Si utiliza bucles de entrenamiento personalizados, debe asegurarse de que se ejecutan varios pasos dentro de la función de entrenamiento que usa tf.function
. Vaya a la sección Mejorar el rendimiento con múltiples pasos dentro de tf.function de la guía Utilizar TPUs para obtener más información.
tf.distribute.TPUStrategy
puede admitir formas dinámicas acotadas, en cuyo caso puede inferirse el límite superior del cálculo de la forma dinámica. Pero las formas dinámicas pueden suponer cierta sobrecarga de rendimiento en comparación con las formas estáticas. Así que, en general, se recomienda que las formas de entrada sean estáticas si es posible, especialmente en el entrenamiento. Una op común que devuelve una forma dinámica es tf.data.Dataset.batch(batch_size)
, ya que el número de muestras que quedan en un flujo puede ser inferior al tamaño del lote. Por lo tanto, al entrenar sobre la TPU, debería usar tf.data.Dataset.batch(..., drop_remainder=True)
para obtener el mejor rendimiento en el entrenamiento.
Una vez hecho esto, ya está listo para entrenar el modelo con el conjunto de datos de entrenamiento:
Por último, evalúe el modelo usando el conjunto de datos de evaluación:
Siguientes pasos
Para obtener más información sobre TPUStrategy
en TensorFlow 2, tenga en cuenta los siguientes recursos:
Guía: Utilizar TPUs (que cubre el entrenamiento con Keras
Model.fit
/un bucle de entrenamiento personalizado contf.distribute.TPUStrategy
, así como consejos para mejorar el rendimiento contf.function
)
Para saber más sobre cómo personalizar su entrenamiento, consulte:
Las TPU (ASIC especializadas de Google para el aprendizaje automático) están disponibles a través de Google Colab, la Cloud TPU Research Cloud y Cloud TPU.