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. Usas TensorBoard y el complemento de Cloud TPU TensorBoard para generar perfiles de tu modelo.

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

Requisitos para generar perfiles de una secuencia de comandos de entrenamiento

Antes de usar las herramientas de perfilado 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. En el procedimiento de creación de perfiles que se describe en este documento, se usa un modelo ResNet, pero puedes usar otro siempre que se entrene en una TPU v4.
    2. En tu VM de TPU, agrega una línea para iniciar el servidor del generador de perfiles en la secuencia de comandos de entrenamiento.

      Para el entrenamiento de ResNET, la secuencia de comandos de entrenamiento se encuentra 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 comiencen 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. Inicia 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 de tu código y modelo. Busca un resultado como Epoch 1/100. Como 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 una buena indicación de que la TPU está entrenando a tu modelo.

Comienza a generar perfiles del entrenamiento de modelos

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

  1. En la ventana o la shell nueva, conéctate a la VM de TPU con la 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 tu VM de TPU.

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

    La VM de TPU tiene instalado TensorBoard de forma predeterminada. También puedes instalar TensorFlow de forma manual. De cualquier manera, es posible que se requieran algunas dependencias adicionales. Instala estas dependencias en la VM de TPU con el siguiente comando:

    pip3 install -r /usr/share/tpu/models/official/requirements.txt
    
  3. Instala el complemento Cloud TPU TensorBoard {: 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 el 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 su 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 de 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 de la barra lateral izquierda.

imagen

Captura un perfil en VMs de TPU

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

imagen

Consulta los datos de perfil con TensorBoard

Después de capturar un perfil, TensorBoard muestra overview_page. En el panel izquierdo, se mostrará 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 Actualizar 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 el perfil 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 del 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. Existe 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
  • Top diez operaciones de TensorFlow en TPU: Muestra las operaciones de TensorFlow que más tiempo consumieron:

    Cada fila muestra el tiempo propio de una operación (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 utilizados
    • El tipo de TPU que se usó
    • 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 por el análisis del dispositivo y del lado del host para depurar cualquier etapa de la canalización que cree 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. La salida 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 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 los 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 tiempo del paso del dispositivo
  • Porcentaje de 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, desglosado 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.
  • Data Dataprep: Tiempo dedicado a las operaciones de procesamiento previo, como la descompresión de imágenes.
  • Leer datos de archivos por adelantado: Tiempo dedicado a leer archivos, incluido el almacenamiento en caché, la carga previa y la intercalación.
  • Reading data from files on demand (Lectura de datos de archivos a pedido) Es 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: Tiempo dedicado a otras operaciones relacionadas con la entrada que no usan 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 TensorFlow de la operación de entrada.
  2. Recuento (Count) muestra la cantidad total de instancias de la operación que se ejecutó durante el período de generación de perfiles.
  3. Tiempo total (en ms): Muestra la suma acumulativa del tiempo empleado en cada una de las instancias de 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 empleado en el 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, excluyendo el tiempo dedicado a las funciones a las que llama. Por ejemplo, Iterator::PaddedBatch::Filter llama a Iterator::PaddedBatch::Filter::ForeverRepeat::Map, por lo que su autotiempo total se excluye del tiempo propio total de la última.
  6. Total Self-time % (Porcentaje de tiempo propio total) (Total self-time %) muestra el tiempo propio total como una fracción del tiempo total dedicado al procesamiento de entrada.
  7. Category: 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 de XLA ejecutadas durante un período de perfilado. El perfil de operación muestra la siguiente información:

  • 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 tiempo 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 operación en TensorBoard, haz clic en la pestaña Perfil (Profile) en la parte superior de la pantalla y, luego, selecciona op_profile en el menú desplegable Herramientas (Tools). Verás una pantalla como la siguiente:

imagen

  1. Sección de descripción general Muestra el uso de Cloud TPU y proporciona sugerencias para la optimización.
  2. Panel de control: Contiene controles que te permiten establecer la cantidad de operaciones que se muestran en la tabla, qué operaciones se muestran y cómo se ordenan.
  3. Tabla de operaciones: Enumera las categorías principales de operaciones de TensorFlow asociadas con las operaciones de XLA. Estas operaciones se ordenan según el porcentaje de uso de Cloud TPU.
  4. Tarjetas de detalles de operaciones Muestra detalles sobre las operaciones que aparecen cuando señalas una operación en la tabla. Estos detalles incluyen el uso de FLOPS, la expresión en la que se usa la operación y el diseño (ajuste) de la operación.

Tabla de operaciones de XLA

En la tabla de operaciones, se enumeran las categorías de operaciones de XLA en orden del porcentaje de uso de Cloud TPU más alto al más bajo. En la tabla, se muestra el porcentaje de tiempo empleado, 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 también ocultar) las diez operaciones de XLA que más tiempo consumen de una categoría, haz clic en el triángulo junto al nombre de la categoría en la tabla.

imagen

  1. Tiempo (Time) 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. Top diez Ops: El botón de activación junto al nombre de una categoría muestra/oculta las diez operaciones que más tiempo consumieron 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 de no fusión que contiene.
  3. TensorFlow Op (Operación de TensorFlow): Muestra el nombre de la operación de TensorFlow asociada a la operación de XLA.
  4. FLOPS muestra el uso de FLOPS, que es 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 la tabla, aparece una tarjeta con detalles sobre la operación de XLA o la categoría de la operación. Una tarjeta típica luce como se muestra a continuación:

imagen

  • Name y Category: Muestra el nombre y la categoría de la operación de XLA destacada.
  • Uso de FLOPS Muestra el uso de FLOPS como un porcentaje del total de FLOPS posible.
  • En Expresión, se muestra la expresión de XLA que contiene la operación.
  • Uso de memoria: Muestra el porcentaje del uso máximo 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 del relleno que realiza el compilador 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 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 ofrece una interpretación de 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 vectoriales o escalares con 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 de la matriz se usan de manera efectiva. La utilización se calcula de la siguiente manera: ((batch_time * num_of_features) / padding_size / num_of_cores). Compara los FLOPS de este ejemplo con el %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, a un nivel alto, puedes identificar si la entrada o el entrenamiento de modelos tardan la mayor parte del tiempo. Si desglosas los datos, puedes identificar las operaciones de TensorFlow que más tardan 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 Profile (Perfil) en la parte superior de la pantalla y selecciona trace_viewer en el menú desplegable Tools (Herramientas). 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 de ejecuciones (Runs drop-down). 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 una ejecución diferente.
  2. Menú desplegable de herramientas (Tools) Selecciona diferentes herramientas de generación de perfiles.
  3. Menú desplegable de host (Host) Selecciona un host que contiene un conjunto de Cloud TPU.
  4. En el panel de cronograma, se muestran las operaciones que Cloud TPU y la máquina anfitrión ejecutaron en el tiempo.
  5. Panel de detalles: Muestra información adicional para las operaciones seleccionadas en el panel de 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 secciones y pistas: Cada sección contiene varias pistas 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 forma parte de la herramienta de visualización de seguimiento de uso general que proporciona Chrome y que se utiliza para varias tareas de análisis de rendimiento.

Secciones y pistas

El lector de seguimiento contiene las siguientes secciones:

  • Una sección para cada nodo de TPU, etiquetada con el número de chip TPU y del nodo TPU dentro del chip (por ejemplo, "Chip 2: TPU Core 1"). Cada sección de nodo TPU contiene los siguientes puntos:
    • En Paso, se muestra la duración de los pasos de entrenamiento que se ejecutaron en la TPU.
    • Operaciones de TensorFlow: Muestra las operaciones de TensorFlow que se ejecutaron en la TPU.
    • Operaciones de XLA: 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. Puedes hacer clic en una herramienta de cronograma o usar las siguientes combinaciones de teclas para activar y destacar una herramienta. 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 si quieres 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 las tendencias pico y de uso de memoria de tu programa.

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

imagen

  1. Menú desplegable Host: Selecciona un host de TPU y los módulos del optimizador de alto nivel (HLO) de XLA para visualizar.
  2. Descripción general de la memoria Muestra la asignación de memoria máxima y el tamaño sin relleno.
  3. Gráfico del espacio de trabajo: Muestra el uso máximo de memoria y un trazado de las tendencias de uso de memoria del 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: Son 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 su tarjeta de detalles.
  5. La tarjeta de detalles de asignación del 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 un trazado de las tendencias de uso de memoria de tu programa. La línea vertical indica el uso máximo de memoria del programa. En este gráfico, se muestra si tu programa puede caber en el 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úfer, en el gráfico del espacio de trabajo aparece una línea horizontal que muestra la vida útil del búfer.

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 momento de uso máximo.

imagen

  • By Program Order (Por orden del programa) muestra los búferes de izquierda a derecha en el orden en que estuvieron 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 del 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. 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. Unpadding size: El tamaño de la asignación del búfer sin relleno.
  5. Expansión: 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. Shape: Describe el rango, el tamaño y el tipo de datos del arreglo n-dimensional.
  8. TensorFlow op name: Muestra el nombre de la operación de TensorFlow asociada con la asignación del búfer.
  9. Allocation type: Indica la categoría de asignación de búfer: Parámetro, Salida, Local de subproceso y Temporal (por ejemplo, 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 de 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.