Path: blob/master/site/es-419/guide/migrate/tpu_embedding.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Migrar de TPU embedding_columns a capa TPUEmbedding
Esta guía demuestra cómo migrar el entrenamiento de incorporación en TPUs de la API embedding_column
de TensorFlow 1 con TPUEstimator
a la API de la capa TPUEmbedding
de TensorFlow 2 con TPUStrategy
.
Las incorporaciones son matrices (grandes). Son tablas de búsqueda que mapean a partir de un espacio de características disperso a vectores densas. Las incorporaciones ofrecen representaciones eficientes y densas que captan las similitudes y relaciones complejas entre las características.
TensorFlow incluye soporte especializado para el entrenamiento de incorporaciones en TPUs. Este soporte de incorporación específico de TPU le permite entrenar incorporaciones que son más grandes que la memoria de un solo dispositivo TPU, y usar entradas dispersas y desiguales en TPUs.
En TensorFlow 1,
tf.compat.v1.estimator.tpu.TPUEstimator
es una API de alto nivel que encapsula el entrenamiento, la evaluación, la predicción y la exportación para su servicio con TPUs. Tiene un soporte especial paratf.compat.v1.tpu.experimental.embedding_column
.Para implementarlo en TensorFlow 2, use la capa
tfrs.layers.embedding.TPUEmbedding
de TensorFlow Recommenders. Para el entrenamiento y la evaluación, use una estrategia de distribución TPU (tf.distribute.TPUStrategy
) que sea compatible con las API de Keras para, por ejemplo, la construcción de modelos (tf.keras. Model
), optimizadores (tf.keras.optimizers.Optimizer
), y entrenamiento conModel.fit
o un bucle de entrenamiento personalizado contf.function
ytf.GradientTape
.
Para más información, consulte la documentación de la API de la capa tfrs.layers.embedding.TPUEmbedding
, así como los documentos de tf.tpu.experimental.embedding.TableConfig
y tf.tpu.experimental.embedding.FeatureConfig
. Para una visión general de tf.distribute.TPUStrategy
, consulte la guía Entrenamiento distribuido y la guía Utilizar TPUs. Si está migrando de TPUEstimator
a TPUStrategy
, consulte la guía de migración de TPU.
Preparación
Comience instalando TensorFlow Recommenders e importando algunos paquetes necesarios:
Y prepare un conjunto de datos sencillo para fines de demostración:
TensorFlow 1: Entrene incorporaciones en TPUs con TPUEstimator
En TensorFlow 1, se preparan incorporaciones TPU usando la API tf.compat.v1.tpu.experimental.embedding_column
y entrene/evalúe el modelo sobre TPUs con tf.compat.v1.estimator.tpu.TPUEstimator
.
Las entradas son números enteros que van de cero al tamaño del vocabulario para la tabla de incorporación TPU. Comience por codificar las entradas en ID categórica con tf.feature_column.categorical_column_with_identity
. Use "sparse_feature"
para el parámetro key
, ya que las características de entrada son de valor entero, mientras que num_buckets
es el tamaño del vocabulario para la tabla de incorporación (10
).
A continuación, convierta las entradas categóricas dispersas en una representación densa con tpu.experimental.embedding_column
, donde dimension
es la anchura de la tabla de incorporación. Almacenará un vector de incorporación para cada uno de los num_buckets
.
Ahora, defina la configuración de incorporación específica de la TPU mediante tf.estimator.tpu.experimental.EmbeddingConfigSpec
. Más tarde se la pasará a tf.estimator.tpu.TPUEstimator
como parámetro embedding_config_spec
.
A continuación, para usar un TPUEstimator
, defina:
Una función de entrada para los datos de entrenamiento
Una función de entrada de evaluación para los datos de evaluación
Una función modelo para dar instrucciones al
TPUEstimator
sobre 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 ofrezca la información del clúster, 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 ahorro de puntos de verificación. A continuación, especificará el tamaño del lote tanto para el entrenamiento como en 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 evaluación:
TensorFlow 2: Entrene incorporaciones en TPUs con 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, prepare sus datos. Esta operación es similar a cómo creó un conjunto de datos en el ejemplo de TensorFlow 1, excepto que ahora se pasa a la función del conjunto de datos un objeto tf.distribute.InputContext
en lugar de un dict params
. Puede usar este objeto para determinar el tamaño del lote local (y para qué host es esta canalización, de modo que pueda particionar adecuadamente sus datos).
Al usar la API
tfrs.layers.embedding.TPUEmbedding
, es importante incluir la opcióndrop_remainder=True
al procesar por lotes el conjunto de datos conDataset.batch
, ya queTPUEmbedding
requiere un tamaño de lote fijo.Además, debe usarse el mismo tamaño de lote para la evaluación y el entrenamiento si tienen lugar en el mismo conjunto de dispositivos.
Por último, debe usar
tf.keras.utils.experimental.DatasetCreator
junto con la opción de entrada especial (experimental_fetch_to_device=False
) entf.distribute.InputOptions
(que alberga configuraciones específicas de la estrategia). Esto se demuestra a continuación:
Después, una vez preparados los datos, creará una TPUStrategy
, y definirá un modelo, métricas y un optimizador bajo el ámbito de esta estrategia (Strategy.scope
).
Debería elegir un número para steps_per_execution
en Model.compile
ya que 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 TPUEstimator
.
Las características y la configuración de la tabla que se especificaron en TensorFlow 1 a través de tf.tpu.experimental.embedding_column
(y tf.tpu.experimental.shared_embedding_column
) pueden especificarse directamente en TensorFlow 2 a través de un par de objetos de configuración:
tf.tpu.experimental.embedding.FeatureConfig
tf.tpu.experimental.embedding.TableConfig
(Consulte la documentación de la API asociada para ver más detalles).
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
Encontrará más información sobre cómo configurar las incorporaciones específicas de TPU en los documentos de la API:
tfrs.layers.embedding.TPUEmbedding
: particularmente sobre la configuración de funciones y tablas, configuración del optimizador, creación de un modelo (usando la API funcional de Keras o mediante subclasestf.keras.Model
), entrenamiento/evaluación y entrega de modelos contf.saved_model
tf.tpu.experimental.embedding.TableConfig
tf.tpu.experimental.embedding.FeatureConfig
Para más información sobre TPUStrategy
en TensorFlow 2, considere 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.