Cómo generar perfiles de tu modelo en VMs de Cloud TPU

La creación de perfiles te permite optimizar el rendimiento del entrenamiento de tu modelo en Cloud TPU. Usa TensorBoard y el complemento de TensorBoard de Cloud TPU para generar perfiles de tu modelo.

Para obtener más información sobre cómo usar TensorBoard con uno de los frameworks compatibles, consulta los siguientes documentos:

Requisitos previos para generar perfiles de una secuencia de comandos de entrenamiento

Antes de usar las herramientas de generación de perfiles de TPU, debes hacer lo siguiente:

  1. Inicia una sesión de entrenamiento de modelos

    1. Configura una TPU v4-8 para entrenar un modelo. El procedimiento de creación de perfiles descrito en este documento utiliza un modelo ResNet, pero puedes utilizar otro modelo siempre que se entrene en una TPU v4.
    2. En la VM de TPU, agrega una línea para iniciar el servidor del generador de perfiles a la secuencia de comandos de entrenamiento.

      Para el entrenamiento de ResNET, la secuencia de comandos de entrenamiento está en /usr/share/tpu/tensorflow/resnet50_keras/resnet50.py.

      Inserta las líneas resaltadas en resnet50.py. En la parte superior del archivo, agrega la siguiente importación:

      import tensorflow.compat.v2 as tf2
      

      Justo antes de que las secuencias de comandos inicien el bucle de entrenamiento, agrega la línea destacada:

      if name == 'main':
       tf.logging.set_verbosity(tf.logging.INFO)
       tf2.profiler.experimental.server.start(6000)
       app.run(main)
      

      El servidor del generador de perfiles de TensorFlow se inicia en la VM de TPU cuando ejecutas la secuencia de comandos.

    3. Comienza el entrenamiento de modelos.

      Ejecuta la secuencia de comandos de entrenamiento y espera hasta que veas un resultado que indique que el modelo se está entrenando de forma activa. El resultado depende del código y el modelo. Busca un resultado como Epoch 1/100. De forma alternativa, puedes navegar a la página de Cloud TPU en la consola de Google Cloud, seleccionar tu TPU y ver el gráfico de uso de CPU. Si bien el gráfico de uso de CPU no muestra el uso de TPU, es un buen indicador de que la TPU está entrenando el modelo.

Comienza a generar perfiles del entrenamiento de modelos

Cuando se esté entrenando el modelo, abre otra ventana de la terminal o Cloud Shell. Sigue estos pasos para comenzar a generar perfiles del entrenamiento de modelos.

  1. En la ventana o shell nueva, conéctate a la VM de TPU con redirección de puertos.

    gcloud compute tpus tpu-vm ssh your-vm --zone=us-central2-b --ssh-flag="-4 -L 9001:localhost:9001"
    

    La redirección de puertos permite que tu navegador local se comunique con el servidor de TensorBoard que se ejecuta en la VM de TPU.

  2. Instala los requisitos de TensorFlow {: id="install-tensorboard"}.

    La VM de TPU tiene TensorBoard instalado de forma predeterminada. También puedes instalar TensorFlow de forma manual. De cualquier manera, es posible que se requieran algunas dependencias adicionales. Para instalar estas dependencias en tu VM de TPU, ejecuta lo siguiente:

    pip3 install -r /usr/share/tpu/models/official/requirements.txt
    
  3. Instala el complemento de TensorBoard de Cloud TPU {: id="install-plugin"}.

    Desde la VM de TPU, ejecuta los siguientes comandos:

     pip3 install --upgrade "cloud-tpu-profiler>=2.3.0"
     pip3 install tensorflow
     pip3 install tensorboard_plugin_profile
    
  4. Inicia el servidor de TensorBoard

    Ejecuta TensorBoard y crea un directorio de registro (logdir) en la VM de TPU en la que TensorBoard puede escribir datos de creación de perfiles. Especifica el directorio de registro con la marca --logdir. Por ejemplo:

    mkdir log-directory
    TPU_LOAD_LIBRARY=0 tensorboard --logdir log-directory --port 9001
    

TensorBoard inicia un servidor web y muestra la URL:

Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.3.0 at http://localhost:9001 (Press CTRL+C to quit)

Abre un navegador web y ve a la URL que se muestra en el resultado de TensorBoard. Selecciona Perfil en el menú desplegable en la parte superior derecha de la página de TensorBoard. La lista de herramientas de generación de perfiles disponibles se muestra en el menú desplegable tools, en la barra lateral izquierda.

imagen

Captura un perfil en las VMs de TPU

  1. Selecciona el botón CAPTURE PROFILE.
  2. Elige el botón de selección Dirección IP.
  3. Escribe HOSTNAME:6000 en el campo Profile Service URL.
  4. Selecciona el botón CAPTURE.

imagen

Ver datos de perfil con TensorBoard

Después de capturar un perfil, TensorBoard muestra overview_page. En el panel izquierdo, se muestra la lista de herramientas de generación de perfiles que puedes usar.

imagen

Perfil

La pestaña Perfil se muestra después de que hayas capturado algunos datos del modelo. Es posible que debas hacer clic en el botón de actualización en la página de TensorBoard. Una vez que los datos están disponibles, si haces clic en la pestaña Perfil, se mostrará una selección de herramientas que te ayudarán con el análisis del rendimiento. Puedes usar cualquiera de las siguientes herramientas para generar perfiles de tu modelo.

Página de descripción general del perfil

La página de descripción general (overview_page), disponible en la página Perfil, proporciona una vista de nivel superior sobre el rendimiento de tu modelo durante una ejecución de captura. En la página, se muestra una descripción general agregada de todas tus TPU y un análisis general de la canalización de entrada. Hay una opción para seleccionar TPU individuales en el menú desplegable Host.

En la página, se muestran los datos en los siguientes paneles:

imagen

  • Resumen de rendimiento (Performance summary)

    • Uso de FLOPS: el porcentaje de uso de las unidades de la matriz de TPU
  • Diez operaciones principales de TensorFlow en TPU Muestra las operaciones de TensorFlow que consumieron más tiempo:

    Cada fila muestra el tiempo propio de una operación (como el porcentaje de tiempo que se tardó en completar todas las operaciones), el tiempo acumulativo, la categoría, el nombre y la tasa de FLOPS que se alcanzó.

  • Entorno de ejecución (Run environment)

    • La cantidad de hosts usados
    • El tipo de TPU que se usa
    • La cantidad de núcleos de TPU

Analizador de canalización de entrada

El analizador de la canalización de entrada proporciona información detallada acerca de tus resultados de rendimiento. La herramienta te indica de inmediato si tu programa está vinculado a la entrada y puede guiarte en el análisis del dispositivo y del lado del host para depurar cualquier etapa de la canalización que esté creando cuellos de botella.

Consulta la guía sobre el rendimiento de la canalización de entrada para obtener más información acerca de la optimización del rendimiento de la canalización.

Canalización de entrada

Cuando un programa de TensorFlow lee datos de un archivo, el proceso de lectura se divide en varias etapas de procesamiento de datos conectadas en serie. El resultado de una etapa es la entrada de la siguiente. Este sistema de lectura se denomina canalización de entrada.

Una canalización típica para leer registros de archivos tiene las siguientes etapas:

  1. Lectura de archivos
  2. Procesamiento previo de archivos (opcional)
  3. Transferencia de archivos desde la máquina host hasta el dispositivo

Una canalización de entrada ineficiente puede ralentizar tu aplicación considerablemente. Una aplicación se considera vinculada a la entrada cuando ocupa una parte significativa del tiempo en la canalización de entrada. Usa el analizador de la canalización de entrada para comprender dónde es ineficiente la canalización de entrada.

Panel de canalización de entrada

Para abrir el analizador de la canalización de entrada, selecciona Perfil y, luego, input_pipeline_analyzer del menú desplegable Herramientas.

En el panel, se muestran detalles del análisis del dispositivo y del host.

Análisis del lado del dispositivo: Muestra detalles sobre los tiempos de los pasos del dispositivo.

  • Estadísticas de paso de tiempo del dispositivo
  • Porcentaje del tiempo de paso del dispositivo que espera datos de entrada

Análisis del lado del host

En esta sección, se muestran los detalles del análisis del lado del host divididos en varias categorías:

  • Ubicación de datos en cola para transferirlos al dispositivo (Enqueuing data to be transferred to device). El tiempo dedicado a ubicar datos en una cola de entrada antes de transferirlos al dispositivo.
  • Procesamiento previo de los datos: El tiempo dedicado a las operaciones de procesamiento previo, como la descompresión de imágenes.
  • Leer datos de archivos por adelantado: El tiempo dedicado a leer archivos, incluidos el almacenamiento en caché, la carga previa y la intercalación.
  • Reading data from files on demand (Lectura de datos a partir de archivos según demanda) El tiempo dedicado a leer datos de archivos sin almacenamiento en caché, intercalación ni carga previa.
  • Otras operaciones de lectura o procesamiento de datos: Es el tiempo dedicado a otras operaciones relacionadas con entradas sin usar tf.data.

imagen

Para ver las estadísticas de las operaciones de entrada individuales y sus categorías desglosadas por tiempo de ejecución, expande la sección Show Input Op statistics.

Aparecerá una tabla de datos de origen como la que se muestra a continuación:

imagen

Cada entrada de la tabla contiene la siguiente información:

  1. Input Op (Operación de entrada) Muestra el nombre de la operación de entrada en TensorFlow.
  2. Recuento: Muestra la cantidad total de instancias de la operación que se ejecutaron durante el período de generación de perfiles.
  3. Tiempo total (en ms): Muestra la suma acumulativa de tiempo empleado en cada una de las instancias de la operación.
  4. Porcentaje de tiempo total (Total Time %): Muestra el tiempo total empleado en una operación como una fracción del tiempo total dedicado al procesamiento de entrada.
  5. Tiempo propio total (en ms): Muestra el tiempo acumulado en todas las instancias de la función. El tiempo propio mide el tiempo empleado dentro del cuerpo de la función, sin incluir el tiempo dedicado a cualquier función que llame. Por ejemplo, Iterator::PaddedBatch::Filter llama a Iterator::PaddedBatch::Filter::ForeverRepeat::Map, por lo que su tiempo propio total se excluye del tiempo propio total del último.
  6. Porcentaje de tiempo propio total Muestra el tiempo propio total como una fracción del tiempo total dedicado al procesamiento de entrada.
  7. Categoría: Muestra la categoría de procesamiento de la operación de entrada.

Perfil de operaciones

El perfil de operaciones es una herramienta de Cloud TPU que muestra las estadísticas de rendimiento de las operaciones XLA ejecutadas durante un período de perfilado. El perfil de operación muestra lo siguiente:

  • Qué tan bien tu aplicación usa Cloud TPU, lo que se expresa como el porcentaje de tiempo empleado en las operaciones por categoría y la utilización de los FLOPS de TPU.
  • Las operaciones que más tiempo consumieron. Estas operaciones son objetivos de optimización potenciales.
  • Detalles de las operaciones individuales, incluidas la forma, el relleno y las expresiones que usan la operación.

Puedes usar el perfil de operaciones para encontrar objetivos de optimización. Por ejemplo, puedes usar el perfil de operación para identificar qué operaciones de XLA tardan más en ejecutarse y cuántos FLOPS de TPU consumen.

Usa el perfil de operaciones

La herramienta de perfil de operaciones contiene estadísticas de rendimiento de las operaciones de XLA. Para ver los datos del perfil de operaciones en TensorBoard, haz clic en la pestaña Perfil en la parte superior de la pantalla y selecciona op_profile en el menú desplegable Herramientas. Verás una pantalla como la que se muestra a continuación:

imagen

  1. Sección Descripción general: Muestra el uso de Cloud TPU y proporciona sugerencias para la optimización.
  2. Panel de control: Contiene controles que permiten configurar la cantidad de operaciones que se muestran en la tabla, así como las operaciones que se muestran y el modo en que se ordenan.
  3. Tabla de operaciones: Muestra una lista de las categorías principales de operaciones de TensorFlow asociadas con las operaciones de XLA. Estas operaciones se ordenan por el porcentaje de uso de Cloud TPU.
  4. Tarjetas de detalles de las operaciones: Muestran detalles sobre las operaciones que aparecen cuando señalas una operación de la tabla. Estos detalles incluyen el uso de FLOPS, la expresión en la que se usa la operación y el diseño de la operación (ajuste).

Tabla de operaciones de XLA

La tabla de operaciones muestra las categorías de operaciones de XLA ordenadas del porcentaje de uso de Cloud TPU más alto al más bajo. En la tabla, se muestra el porcentaje de tiempo necesario, el nombre de la categoría de la operación, el nombre de la operación de TensorFlow asociado y el porcentaje de uso de FLOPS para la categoría. Para mostrar (o bien ocultar) las diez operaciones de XLA que más tiempo consumen en una categoría, haz clic en el triángulo junto al nombre de la categoría en la tabla.

imagen

  1. Tiempo: Muestra el porcentaje total de tiempo empleado por todas las operaciones de esa categoría. Puedes hacer clic para expandir la entrada y ver un desglose del tiempo empleado por cada operación individual.
  2. Las diez operaciones principales: Es el botón de activación junto al nombre de una categoría que oculta o muestra las diez operaciones más lentas dentro de la categoría. Si se muestra una entrada de operación de fusión en la lista de operaciones, puedes expandirla para ver las operaciones a nivel de elementos que no son de fusión.
  3. TensorFlow Op (Operación de TensorFlow) muestra el nombre de la operación de TensorFlow asociado con la operación de XLA.
  4. FLOPS: Muestra el uso de FLOPS, es decir, la cantidad medida de FLOPS expresada como un porcentaje de los FLOPS máximos de Cloud TPU. Cuanto más alto sea el porcentaje de uso de FLOPS, más rápido se ejecutarán las operaciones. La celda de la tabla responde a un código de colores: el verde significa uso alto de FLOPS (deseado) y el rojo significa uso bajo de FLOPS (no deseado).

Tarjetas de detalles de la operación

Cuando seleccionas una entrada de tabla, aparece una tarjeta en la que se muestran detalles sobre la operación de XLA o su categoría. Una tarjeta típica luce como se muestra a continuación:

imagen

  • Nombre y Categoría: Muestra el nombre y la categoría de la operación de XLA destacada.
  • FLOPS usage Muestra el uso de FLOPS como un porcentaje del total de FLOPS posibles.
  • Expresión: Muestra la expresión de XLA que contiene la operación.
  • Uso de memoria Muestra el porcentaje máximo de uso de memoria por parte de tu programa.
  • Layout (Solo para operaciones convolucionales): Muestra la forma y el diseño de un tensor, incluida una descripción de cualquier relleno realizado por el compilador de XLA.

Interpreta los resultados

En el caso de las operaciones convolucionales, el bajo uso de FLOPS de TPU puede deberse a uno de los siguientes motivos, o a ambos:

  • relleno (uso parcial de las unidades de la matriz)
  • la operación de convolución depende de la memoria

En esta sección, se interpretan algunas métricas de rendimiento de un modelo con bajo uso de FLOP. En este ejemplo, fusión de salida y convolución dominaron el tiempo de ejecución. Hubo muchas operaciones de vectores o escalares que tenían un bajo uso de FLOP.

Una estrategia de optimización para este tipo de perfil podría ser transformar las operaciones de vector o escalares en operaciones convolucionales.

En el siguiente ejemplo, %convolution.399 muestra menos FLOPS y uso de memoria que %convolution.340 en el ejemplo anterior.

imagen

En este ejemplo, el tamaño del lote se rellena a 128 y el tamaño del atributo se rellena a 8. En este caso, solo el 5% de las unidades matriciales se usan de manera eficaz. El uso se calcula de la siguiente manera: (((batch_time * num_of_features) / padding_size ) / num_of_cores). Compara los FLOPS de este ejemplo con %convolution.340 del ejemplo anterior, que no usa relleno.

Lector de seguimiento

El lector de seguimiento es una herramienta de análisis del rendimiento de Cloud TPU disponible en la página Perfil. La herramienta usa el visualizador de perfilado de eventos de seguimiento de Chrome, por lo que solo funciona en el navegador Chrome.

El lector de seguimiento muestra un cronograma que presenta la siguiente información:

  • Duración de las operaciones que ejecutó tu modelo de TensorFlow.
  • La parte del sistema (máquina host o TPU) que ejecutó una operación. Por lo general, la máquina anfitrión ejecuta operaciones de entrada, que realizan un procesamiento previo de los datos de entrenamiento y los transfieren a la TPU, mientras que la TPU ejecuta el entrenamiento de modelos real.

El lector de seguimiento te permite identificar problemas de rendimiento en tu modelo y, luego, tomar medidas para resolverlos. Por ejemplo, en un nivel alto, puedes identificar si la entrada o el entrenamiento de modelos tarda la mayor parte del tiempo. Si desglosas los datos, puedes identificar qué operaciones de TensorFlow tardan más en ejecutarse.

El lector de seguimiento tiene un límite de 1 millón de eventos para cada Cloud TPU. Si necesitas evaluar más eventos, usa el lector de seguimiento de transmisión en su lugar.

Interfaz del lector de seguimiento

Para abrir el lector de seguimiento, ve a TensorBoard, haz clic en la pestaña Perfil (Profile) en la parte superior de la pantalla y elige trace_viewer en el menú desplegable Herramientas (Tools). Aparece el lector y muestra tu ejecución más reciente:

imagen

Esta pantalla contiene los siguientes elementos principales (marcados con números en la captura de pantalla anterior):

  1. Menú desplegable Runs: Contiene todas las ejecuciones para las que capturaste información de seguimiento. La vista predeterminada es la ejecución más reciente, pero puedes abrir el menú desplegable para seleccionar otra ejecución.
  2. Menú desplegable Tools Selecciona diferentes herramientas de generación de perfiles.
  3. Desplegable de host: Selecciona un host que contiene un conjunto de Cloud TPU.
  4. Panel de cronograma: Muestra las operaciones que Cloud TPU y la máquina anfitrión ejecutaron en el tiempo.
  5. Panel de detalles: Muestra información adicional sobre las operaciones seleccionadas en el panel Cronograma.

Aquí puedes ver el panel de cronograma con más detalle:

imagen

El panel de cronograma contiene los siguientes elementos:

  1. Barra superior Contiene varios controles auxiliares.
  2. Eje de tiempo: Muestra el tiempo en relación con el comienzo del seguimiento.
  3. Etiquetas de segmento y segmento: Cada sección contiene varios segmentos y tiene un triángulo a la izquierda en el que puedes hacer clic para expandir y contraer la sección. Hay una sección para cada elemento de procesamiento del sistema.
  4. Selector de herramientas: Contiene varias herramientas para interactuar con el lector de seguimiento.
  5. Eventos Muestra el tiempo durante el cual se ejecutó una operación o la duración de los metaeventos, como los pasos de entrenamiento.
  6. Barra de pestañas vertical Esta barra no tiene un propósito útil para Cloud TPU. La barra es parte de la herramienta de visualización de seguimiento de uso general que proporciona Chrome y que se usa para diversas tareas de análisis de rendimiento.

Secciones y pistas

El lector de seguimiento contiene las siguientes secciones:

  • Una sección para cada nodo TPU, etiquetada con el número del chip TPU y el núcleo de TPU dentro del chip (por ejemplo, "Chip 2: TPU Core 1"). Cada sección de nodo TPU contiene los siguientes puntos:
    • Paso: Muestra la duración de los pasos de entrenamiento que se estaban ejecutando en la TPU.
    • TensorFlow Ops (Operaciones de TensorFlow) Muestra las operaciones de TensorFlow ejecutadas en la TPU.
    • XLA Ops Muestra las operaciones de XLA que se ejecutaron en la TPU. (Cada operación se traduce en una o varias operaciones de XLA. El compilador de XLA traduce las operaciones de XLA en un código que se ejecuta en la TPU).
  • Una sección para los subprocesos que se ejecutan en la CPU del host,etiquetada como "Subprocesos del host". La sección contiene una pista por cada subproceso de CPU. Nota: Puedes ignorar la información que se muestra junto con las etiquetas de las secciones.

Selector de herramientas de cronograma

Puedes interactuar con la vista de cronograma mediante el selector de herramientas de cronograma en TensorBoard. Haz clic en una herramienta del cronograma para activarla y destacarla. A fin de mover el selector de herramientas de cronograma, haz clic en el área con puntos ubicada en la parte superior y, luego, arrastra el selector hacia donde quieras ubicarlo.

Usa las herramientas de cronograma como se indica a continuación:

Herramienta de selección
Haz clic en un evento para seleccionarlo o arrastra para seleccionar varios eventos. Se mostrará información adicional acerca de los eventos seleccionados (nombre, hora de inicio y duración) en el panel de detalles.

Herramienta de desplazamiento lateral
Arrastra para desplazar la vista del cronograma de forma horizontal y vertical.

Herramienta de zoom
Arrastra hacia arriba para acercar o arrastra hacia abajo si quieres alejar a lo largo del eje horizontal (tiempo). La posición horizontal del cursor del mouse determina el centro alrededor del cual se aplica el zoom.

Nota: Si la herramienta de zoom permanece activa después de soltar el botón del mouse, haz clic en la vista de cronograma para desactivarla.

Herramienta de sincronización
Arrastra de forma horizontal para marcar un intervalo de tiempo. La duración del intervalo aparece en el eje de tiempo. Para ajustar el intervalo, arrastra sus extremos. A fin de borrar el intervalo, haz clic en cualquier punto dentro de la vista de cronograma.

Si seleccionas otra herramienta, el intervalo permanecerá marcado.

Visor de memoria

El lector de memoria te permite visualizar el pico de uso de memoria y las tendencias de uso de memoria de tu programa.

La interfaz de usuario del lector de memoria se ve de la siguiente manera:

imagen

  1. Desplegable Host: Selecciona un host de TPU y los módulos del optimizador de alto nivel (HLO) de XLA que se visualizarán.
  2. Descripción general de la memoria: Muestra la asignación de memoria máxima y el tamaño sin rellenar.
  3. Gráfico de espacio de trabajo: Muestra el uso máximo de memoria y un trazado de las tendencias de uso de memoria de tu programa. Apunta a un búfer en uno de los gráficos de búferes para mostrar información adicional en la tarjeta de asignación de búferes.
  4. Gráficos de búferes Dos gráficos que muestran la asignación de búfer en el uso máximo de memoria. Apunta a un búfer en uno de los gráficos de búferes para mostrar información adicional en la tarjeta de detalles del búfer.
  5. Tarjeta de detalles de asignación de búfer Muestra los detalles de asignación de un búfer.

Panel de descripción general del uso de la memoria

El panel de descripción del uso de la memoria (panel superior) muestra el nombre del módulo y la asignación de memoria máxima establecida cuando el tamaño total de la asignación de búfer alcanza el máximo. También se muestra el tamaño de la asignación máxima sin rellenar a los efectos de la comparación.

imagen

Gráfico del espacio de trabajo

En este gráfico, se muestran los picos de uso de memoria y las tendencias de uso de memoria de tu programa. La línea vertical indica el uso máximo de memoria para el programa. En este gráfico, se muestra si tu programa puede adaptarse al espacio de memoria global disponible.

imagen

Cada punto del gráfico representa un “punto del programa” en el programa HLO de XLA. En la línea, se muestra cómo cambia el uso de memoria de tu programa con el tiempo.

Interacción con los elementos del gráfico de búferes

Cuando apuntas a un búfer en los gráficos de búferes, aparece una línea horizontal que muestra la vida útil del búfer en el gráfico del espacio de trabajo.

imagen

El espesor de la línea horizontal indica la magnitud relativa del tamaño del búfer en relación con la asignación de memoria máxima. La longitud de la línea indica la vida útil del búfer.

Gráficos de búferes

Dos gráficos muestran el desglose del uso de memoria en el uso máximo.

imagen

  • By Program Order Muestra los búferes de izquierda a derecha en el orden en que estaban activos durante la ejecución del programa.

  • By Size Muestra los búferes que estuvieron activos durante la ejecución del programa en orden decreciente.

Tarjeta de detalles de asignación de búfer

Cuando apuntas a un búfer que se muestra en uno de los gráficos de búferes, aparece una tarjeta de detalles de asignación de búfer. Una tarjeta de detalles típica luce como se muestra a continuación:

imagen

  1. Nombre: Nombre de la operación de XLA.
  2. Category (Categoría): la categoría de la operación.
  3. Tamaño: Es el tamaño de la asignación del búfer (incluido el relleno).
  4. Unpadded size (Tamaño sin padding): Es el tamaño de la asignación del búfer sin relleno.
  5. Expansión: Corresponde a la magnitud relativa del tamaño del búfer con relleno en comparación con el tamaño sin rellenar.
  6. Memoria adicional: Indica cuánta memoria adicional se usa para el relleno.
  7. Forma: Describe el rango, el tamaño y el tipo de datos del array n-dimensional.
  8. TensorFlow op name (Nombre de la operación de TensorFlow): Muestra el nombre de la operación de TensorFlow asociada con la asignación del búfer.
  9. Tipo de asignación: Indica la categoría de asignación del búfer: Parámetro, Salida, Thread-local y Temporal (por ejemplo, la asignación de búfer dentro de una fusión).

Errores por falta de memoria

Si ejecutas un modelo y recibes un error de "memoria insuficiente", sigue los lineamientos que se indican en este documento para capturar un perfil. Espera hasta que la secuencia de comandos entrene el modelo antes de iniciar el generador de perfiles. El resultado de la generación de perfiles puede ayudarte a comprender qué causó el error.