Herramienta de estadísticas de operaciones de HLO
Puedes usar las estadísticas de operaciones de HLO para ver las estadísticas de rendimiento de las operaciones del optimizador de alto nivel (HLO) que se ejecutan durante una sesión de generación de perfiles. Esta herramienta es valiosa para identificar posibles objetivos de optimización del rendimiento, ya que destaca las operaciones que consumen más tiempo en tu gráfico de HLO durante el período de perfilado.
Plataformas compatibles
TPU: Compatible
GPU: Compatible
En el caso de las GPUs, las operaciones de HLO tienen una relación N:M con los kernels que se ejecutan. Para obtener estadísticas a nivel del kernel, consulta la herramienta Estadísticas del kernel de la GPU.
Componentes de la herramienta de estadísticas de operaciones de HLO
La herramienta HLO Op Stats tiene los siguientes componentes clave:
- Tabla de estadísticas de operaciones de HLO: Este es el componente principal, que presenta un desglose detallado de cada operación de HLO ejecutada durante la sesión de generación de perfiles en formato tabular. Hay una fila para cada operación de HLO distinta y columnas que capturan varios detalles sobre esa operación.
- Un selector desplegable te permite decidir qué columnas deseas visualizar para cada operación de HLO.
- También puedes filtrar las filas por categoría de operación de HLO a través de un segundo selector desplegable.
- Los cuadros de búsqueda te permiten filtrar por IDs de programas específicos, operaciones de HLO, el texto de la operación de HLO o el nombre de la operación del framework. Los filtros seleccionan la cadena proporcionada que aparece en cualquier parte de la columna correspondiente.
- Sección de gráficos resumidos: Esta sección tiene gráficos que resumen la tabla detallada por operación de las siguientes maneras:
- Un gráfico circular que muestra la fracción de tiempo que consumen las diferentes categorías de operaciones de HLO.
- Un gráfico circular que muestra la fracción de tiempo que consumen diferentes operaciones de HLO individuales (truncadas a las operaciones Top-N, con el resto clasificado como "Otro" para mejorar la legibilidad).
- Un gráfico circular que muestra la fracción del tiempo total dedicado a las operaciones que forman parte de la rematerialización. XProf recibe esta información de los metadatos del compilador asociados con el perfil.
- Un gráfico circular que muestra las categorías de operaciones de HLO a las que se destina el tiempo de rematerialización (si corresponde).
- Tiempo dedicado a la compilación externa: La compilación externa es una función de TensorFlow que permite que ciertas operaciones dentro de un cálculo de XLA se ejecuten de forma transparente en la CPU del host en lugar del dispositivo acelerador (p.ej., tf.summary o tf.print que requiere acceso de E/S que el dispositivo no posee).
- Un gráfico que traza los GFLOPS/s para todas las operaciones de HLO, ordenadas por el tiempo propio total.
- Solo para TPU, tiempo por HLO por grupo de réplicas: Un menú desplegable te permite elegir entre las diferentes operaciones colectivas que se ejecutaron durante la sesión de generación de perfiles. Es posible que se hayan ejecutado diferentes instancias de esa operación colectiva entre diferentes grupos de réplicas (p.ej., AllGather); un gráfico de pastel muestra la distribución del tiempo entre estas diferentes instancias.
Detalles de la tabla de estadísticas de operaciones de HLO
Puedes hacer clic en cualquiera de los encabezados de las columnas para ordenar la tabla de estadísticas de operaciones de HLO. El orden predeterminado se basa en el tiempo propio total de la operación (etiquetado como “rank” en la tabla).
La tabla incluye la siguiente información para cada operación de HLO:
- Nombre de la operación: Es el nombre único que el compilador de XLA asigna a la operación de HLO.
- ID de programa: Es un identificador para el módulo de HLO con el que está asociada esta operación.
- Categoría de operación de HLO: El compilador XLA las define en gran medida. Además, XProf emplea heurísticas para identificar y categorizar ciertas operaciones (p. ej., fusiones de convolución).
- Texto de la operación de HLO: El compilador de XLA lo proporciona y, además, incluye detalles como los tipos y las formas de las entradas o los parámetros.
- Nombre de la operación del framework: Es la operación a nivel del framework (p.ej., JAX) que generaron esta operación de HLO.
- Ocurrencias: Es la cantidad total de veces que se ejecutó esta operación de HLO específica durante el período de perfilado.
- Tiempo total (μs): Es el tiempo acumulado que se dedicó a ejecutar esta operación en todas sus ocurrencias. Si esta operación tiene operaciones secundarias (p.ej., dentro de una fusión), este tiempo incluye el tiempo dedicado a esas operaciones secundarias.
- Tiempo promedio (μs): Es el tiempo promedio por ejecución de esta operación de HLO, incluido el tiempo dedicado a las operaciones secundarias, si las hay.
- Tiempo propio total (μs): Es el tiempo acumulado que se dedica solo al cuerpo de esta operación de HLO, sin incluir el tiempo dedicado a sus operaciones secundarias.
- Tiempo propio promedio (μs): Es el tiempo promedio por ejecución de esta operación de HLO, sin incluir el tiempo dedicado a sus operaciones secundarias.
- Tiempo propio total (%): Es el tiempo propio de la operación como porcentaje del tiempo total en el dispositivo en todas las operaciones.
- Porcentaje de tiempo propio total acumulado (%): Es una suma continua del porcentaje de tiempo propio total (%) de todas las operaciones que aparecen antes en el orden de "rango".
- Detención de DMA (%): Es el porcentaje del tiempo total durante el cual la operación se detuvo debido a operaciones de acceso directo a la memoria (DMA).
- Consumo de ancho de banda (uso/s) para FLOP, HBM y memorias internas de TPU si están disponibles (p.ej., CMEM solo está presente en la TPU v4). Todos se calculan con el análisis de costos estático del compilador (numerador) y el tiempo de ejecución perfilado (denominador).
- GFLOPS/s del modelo: El compilador XLA calcula el costo de GFLOPs, y el perfil mide el tiempo.
- GFLOPS/s normalizados: Normaliza los FLOP calculados por el compilador por operación según su precisión numérica y los FLOP máximos compatibles con el dispositivo para diferentes precisiones. Por ejemplo, TPU v6e admite el doble de operaciones de FLOP máximas en int8 que en bf16. XProf se normaliza a bf16 de forma predeterminada.
- Ancho de banda de memoria: Es la cantidad de bytes por segundo que consume la operación, desde cualquier memoria (p.ej., VMEM y HBM de TPU en el chip). El compilador de XLA proporciona la cantidad de “bytes” y la duración se mide en el perfil.
- Ancho de banda de HBM: Es la cantidad de bytes por segundo que se consumen específicamente de la HBM.
- Intensidad operativa: Se calcula como la proporción de FLOPS por bytes, como se define para el análisis de techo.
- Límite de procesamiento o memoria: Según el modelo de techo, esta columna indica si el rendimiento de la operación está limitado principalmente por las capacidades de procesamiento o el ancho de banda de la memoria.
- Rematerialización: Indica si la operación fue parte de una rematerialización.
- Compilación externa: Indica si la operación se ejecutó en la CPU del host con la función de compilación externa de TensorFlow.
- Autotuned: Indica si XLA ajustó automáticamente la operación. Para obtener más información, consulta Ajuste automático y Ajuste automático persistente.