Preguntas frecuentes: Cloud TPU en TensorFlow

¿Qué modelos admite Cloud TPU? Puedes encontrar una lista de modelos compatibles aquí: Modelos oficiales compatibles.

¿Puedo usar Cloud TPU para la inferencia? Puedes realizar inferencias en un modelo entrenado en Cloud TPU con el método tf.keras.Model.predict de Keras.

¿Hay operaciones de TensorFlow integradas que no estén disponibles en Cloud TPU?

Hay algunas operaciones de TensorFlow integradas que no están disponibles actualmente en Cloud TPU. Consulta la página sobre operaciones de TensorFlow disponibles, en la que se detallan las soluciones alternativas actuales.

¿Puedo entrenar un modelo de aprendizaje por refuerzo (RL) con una Cloud TPU?

El aprendizaje por refuerzo cubre un amplio arreglo de técnicas, algunas de las cuales no son compatibles actualmente con las abstracciones de software para las TPU. Algunas configuraciones de aprendizaje por refuerzo requieren que se ejecute un "entorno de simulación" de caja negra mediante una CPU como parte del ciclo de entrenamiento. Descubrimos que estos no pueden seguir el ritmo de Cloud TPU y, por lo tanto, generan ineficiencias significativas.

¿Puedo usar incorporaciones con una Cloud TPU?

Sí. Puedes usar la capa de TPU para admitir las incorporaciones en los modelos de Keras. En capas y modelos personalizados, puedes usar tf.nn.embedding_lookup().

¿Puedo usar secuencias de longitud variable con Cloud TPU?

Existen varios métodos para representar secuencias de longitud variable en TensorFlow, incluido el relleno, tf.while_loop(), las dimensiones de tensor inferidas y el agrupamiento. Por desgracia, el motor de ejecución actual de Cloud TPU es compatible con un subconjunto de estos. Las secuencias de longitud variable deben implementarse mediante tf.while_loop(), tf.dynamic_rnn(), la agrupación, el relleno o la concatenación de secuencias.

¿Puedo entrenar una red neuronal recurrente (RNN) en Cloud TPU?

Sí. Para entrenar una RNN con TensorFlow, usa las capas Keras RNN.

¿Puedo entrenar una red generativa adversaria (GAN) con Cloud TPU?

Por lo general, el entrenamiento de las GAN requiere alternar frecuentemente entre el entrenamiento del generador y el discriminador. El motor de ejecución actual de la TPU solo es compatible con un grafo único de ejecución. A fin de alternar entre grafos, se requiere una recopilación completa, que puede tardar 30 segundos o más.

Una posible solución alternativa es calcular siempre la suma de las pérdidas tanto para el generador como para el discriminante, pero multiplicar estas pérdidas por dos tensores de entrada: g_w y d_w. En lotes en los que se debería entrenar al generador, puedes pasar g_w=1.0 y d_w=0.0, y viceversa para lotes en los que se debería entrenar al discriminante.

¿Puedo entrenar un modelo de aprendizaje de tareas múltiples con Cloud TPU?

Si estas tareas pueden representarse como un gran grafo único con una función de pérdida agregada, no se necesita asistencia especial para el aprendizaje de tareas múltiples. Sin embargo, actualmente, el motor de ejecución de la TPU solo es compatible con un solo grafo de ejecución. Por lo tanto, no es posible alternar rápidamente entre grafos de ejecución múltiples que compartan variables, pero que tengan estructuras diferentes. Para cambiar los grafos de ejecución, se debe volver a ejecutar el paso de compilación del grafo, lo cual puede tardar 30 segundos o más.

¿Cloud TPU es compatible con el modo inmediata de TensorFlow?

En TensorFlow, los usuarios pueden usar un decorador @tf.function para compilar en XLA y usar la TPU con el modo ansioso por TensorFlow.

¿Cloud TPU admite el paralelismo de modelos?

Actualmente, no se admite el paralelismo de modelos (o la ejecución de programas no idénticos en varios núcleos dentro de un solo dispositivo de Cloud TPU).

¿Cómo puedo inspeccionar el valor real de los tensores intermedios en Cloud TPU, como con tf.Print o tfdbg?

Actualmente, esta capacidad no es compatible con Cloud TPU. Una buena práctica es depurar tus modelos en la CPU/GPU con TensorBoard y, luego, cambiar a Cloud TPU cuando tu modelo esté listo para operaciones completas. entrenamiento a escala.

Mis requisitos de entrenamiento son demasiado complejos o especializados para la API de compilación y ajuste de Keras. ¿Hay una API de nivel inferior que pueda usar?

Si necesitas un control de nivel inferior cuando usas TensorFlow, puedes usar bucles de entrenamiento personalizados. En la documentación de TensorFlow, se describe cómo usar bucles de entrenamiento personalizados específicamente con TPU y para el caso más general mediante tf.distribute.