Código de error: 0102

Categoría: Tiempo de ejecución: No coincide el búfer de entrada del programa

Este error se produce cuando el tiempo de ejecución de XLA detecta una discrepancia entre el tamaño de un búfer de memoria esperado por un programa compilado y el tamaño del búfer que se proporciona realmente en el tiempo de ejecución.

Ejemplo de mensaje de error:

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).

Back-ends 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 disponen y organizan los datos en el hardware) es diferente.

Estos errores se deben principalmente a los siguientes motivos:

  • Checkpoint and XLA configuration mismatch: 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 nueva marca, 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 del hardware o la topología: El compilador de XLA puede elegir diferentes diseños físicos para los tensores con el objetivo de optimizar el rendimiento en diferentes tipos de hardware. Un diseño óptimo para una TPU v4 podría ser diferente al de una TPU v5, o incluso para diferentes porciones de un 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 hay un error en la lógica de diseño del compilador para una pieza específica de hardware.

Depuración

  • Asegúrate de que la configuración sea coherente entre la exportación del modelo y las repeticiones desde los puntos de control:
    • Evita usar puntos de control antiguos con código nuevo, a menos que tengas la certeza de que no se realizaron cambios que afecten el diseño.
    • Vuelve a exportar el modelo guardado: Si sospechas que hay una discrepancia 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 configuración (actuales) que usas para la inferencia o el ajuste.
    • Verifica si hay cambios en la configuración (p.ej., marcas de XLA) entre las dos ejecuciones.
  • Diseños específicos de hardware o topología:
    • Verifica si hay discrepancias en la versión y la topología del hardware si cambias de hardware o de topología.