Hoja de ruta de StableHLO

Al momento de escribir, StableHLO está listo para reemplazar MHLO/HLO como interfaz del compilador. TensorFlow, JAX y PyTorch lo pueden producir; XLA y IREE pueden consumirlo. Además, tiene todas las funciones públicas que proporciona MHLO/HLO, así como funcionalidades adicionales.

En este documento, se describen los próximos pasos para el proyecto StableHLO, se categoriza el trabajo en curso que se refleja en la Herramienta de seguimiento de errores y se organiza en entregas previstas.

Logros

En 2023, planeamos dos grandes hitos: 1) StableHLO v0.9, que proporcionará una versión inicial del opset y garantías de compatibilidad iniciales, 2) StableHLO v1.0, que implementará mejoras de alta prioridad y comenzará a proporcionar garantías de compatibilidad completas.

StableHLO v0.9 duplicará MHLO/HLO, lo que se mejoró con una especificación para operaciones de forma estática y garantías de compatibilidad iniciales. Según el RFC de compatibilidad, esta versión proporcionará 1 mes de retrocompatibilidad. Estas garantías moderadas permitirán adquirir experiencia en la evolución de dialectos y permitirán un tiempo de limpieza antes de que entren en vigencia las garantías completas. Planeamos lanzar StableHLO v0.9 durante el primer trimestre de 2023.

StableHLO v1.0 implementará mejoras de prioridad alta, incluida la limpieza del contrato de frontend (con el objetivo de que los programas de StableHLO solo incluyan operaciones del dialecto StableHLO, en lugar de la mezcla actual de dialectos y atributos no registrados) y proporcionar una implementación de referencia. Planeamos lanzar StableHLO v1.0 durante el segundo semestre de 2023.

Flujos de trabajo

Para organizar el desarrollo en función de los eventos importantes antes mencionados, categorizamos los tickets en la Herramienta de seguimiento de errores en varios flujos de trabajo y los vinculamos a los eventos importantes. Una cantidad limitada de tickets (menos del 10%) no se asigna a ningún flujo de trabajo específico y no forman parte de ningún evento importante específico.

(P0) El flujo de trabajo de Implementación de compatibilidad se dedica a implementar la RFC de compatibilidad junto con un conjunto de pruebas de compatibilidad. Se espera que la mayor parte de este trabajo se complete en StableHLO v0.9, mientras que el resto se realizará en StableHLO v1.0.

(P0) El flujo de trabajo del contrato de frontend consiste en implementar el 100% de las funciones que usan los frontends de StableHLO, pero que aún no están en la especificación de StableHLO. El objetivo de este flujo de trabajo es garantizar que los programas StableHLO solo incluyan operaciones del dialecto StableHLO, en lugar de la mezcla actual de dialectos y atributos no registrados. Planeamos completar la totalidad o casi todo el trabajo de este flujo de trabajo en StableHLO v1.0.

(P0) El flujo de trabajo de implementación de referencia organiza el trabajo de implementación de un intérprete para el 100% de las operaciones estables, como se define en la especificación de StableHLO. Planeamos completar todo o casi todo el trabajo en este flujo de trabajo en EstableHLO v1.0.

(P0) El flujo de trabajo de Documentación se dedica a proporcionar toda la información que los productores o consumidores de StableHLO podrían necesitar. La especificación de StableHLO es un entregable importante, así como una referencia para la API de StableHLO y el formato de serialización StableHLO. Las partes críticas del flujo de trabajo se entregarán en StableHLO v1.0, con elementos de menor prioridad que se abordarán de forma continua.

(P1) El flujo de trabajo del conjunto de cumplimiento consiste en la entrega de un conjunto de pruebas que compara una implementación de referencia con las implementaciones que proporcionan los backends de StableHLO. Las pruebas para la implementación de referencia proporcionarán un conjunto de ordenaciones de conformidad, por lo que este flujo de trabajo no tiene prioridad P0. Sin embargo, ampliar este conjunto con casos de prueba adicionales interesantes puede ser un área útil para trabajos futuros.

(P1) El flujo de trabajo de Cumplimiento de especificaciones garantiza que el 100% de las operaciones de StableHLO se implementen en el dialecto StableHLO, como se define en la especificación de StableHLO. El dialecto StableHLO ya cumple razonablemente, por lo que este flujo de trabajo no tiene prioridad P0, pero aún quedan muchos elementos menores (especialmente en los casos límite de la implementación del verificador) y se abordarán de manera continua.

(P1) El flujo de trabajo de Nuevas funciones concluye la hoja de ruta de StableHLO y consta de una colección variada de funcionalidades nuevas para el opset StableHLO (no el dialecto StableHLO ni las vinculaciones de StableHLO, que serían otros flujos de trabajo). Se planea entregar algunas de estas funciones nuevas en la versión 1.0 de StableHLO, pero, por el momento, la mayoría son elementos de menor prioridad que no forman parte de ningún evento importante específico.

(P1) El flujo de trabajo de la API pública está dedicado a entregar vinculaciones de C/C++/Python para el dialecto estable. Las vinculaciones de C++/Python existentes ya son bastante razonables, por lo que este flujo de trabajo no tiene prioridad P0. Sin embargo, queda bastante trabajo por hacer, en especial con respecto a proporcionar estabilidad para estas vinculaciones, que, por el momento, no está cubierto por el RFC de compatibilidad, pero es probable que sea un área útil en trabajos futuros.