Código de error: E0102

Categoría: Tiempo de ejecución: Desajuste del búfer de entrada del programa

Este error se produce cuando el tiempo de ejecución de XLA detecta un desajuste entre el tamaño de un búfer de memoria que espera un programa compilado y el tamaño del búfer que se proporciona durante el tiempo de ejecución.

Mensaje de error de muestra:

XlaRuntimeError: INVALID_ARGUMENT: Executable(jit_embedding_pipeline_step_fn) expected parameter 2482 of size 5242880 (bf16[16,1280,40]{2,1,0:T(8,128)(2,1)}) but got buffer with incompatible size 1638400 (bf16[16,1280,40]{1,2,0:T(8,128)(2,1)}): while running replica 0 and partition 0 of a replicated computation (other replicas may have failed as well).

Backends de XLA: TPU

Descripción general

El mensaje de error indica los tamaños esperados y reales, así como las formas y los diseños de los tensores. Ten en cuenta que estos errores pueden ocurrir incluso si dos tensores tienen la misma forma, pero su tamaño en la memoria puede ser diferente si su diseño físico (cómo se dividen y organizan los datos en el hardware) es diferente.

Estos errores se deben principalmente a lo siguiente:

  • Desajuste de la configuración de XLA y el punto de control: Se entrena un modelo y se guarda un punto de control. El diseño físico de los pesos en ese punto de control está determinado por la versión y la configuración exactas de XLA (p.ej., marcas de XLA) en ese momento. Más adelante, este punto de control se carga en un entorno diferente en el que cambió la configuración. Una marca nueva, un valor predeterminado diferente o un cambio en el código del modelo o de XLA pueden hacer que el tiempo de ejecución espere un diseño físico diferente para los pesos. Cuando el búfer anterior del punto de control se pasa al nuevo programa XLA compilado, el tiempo de ejecución arroja un error.
  • Diseños específicos de hardware o topología: El compilador XLA puede elegir diferentes diseños físicos para los tensores para optimizar el rendimiento en diferentes hardware. Un diseño que es óptimo para la TPU v4 puede ser diferente de una TPU v5 o incluso para diferentes porciones de pod del mismo chip (p. ej., 4x4x4 vs. 4x8). El error se produce cuando se compila un modelo con una suposición sobre el diseño de una topología, pero en el tiempo de ejecución se programa en una topología diferente, o bien hay un error en la lógica de diseño del compilador para una pieza de hardware específica.

Depuración

  • Garantiza la coherencia de la configuración entre la exportación del modelo y las nuevas ejecuciones desde los puntos de control
    • Evita usar puntos de control antiguos con código nuevo, a menos que estés seguro de que no se realizaron cambios que afecten el diseño.
    • Si sospechas que hay un desajuste entre el punto de control y la configuración, la solución más confiable es volver a exportar el modelo guardado con la misma base de código (y actual) y la configuración que usas para la inferencia o el ajuste.
    • Verifica si hay cambios de configuración (p.ej., marcas de XLA) entre las dos ejecuciones.
  • Diseños específicos de hardware o topología
    • Verifica si hay desajustes en la versión de hardware y la topología si cambias de hardware o topologías.