Roadmap di StableHLO

Al momento della scrittura, StableHLO è pronto a sostituire MHLO/HLO come interfaccia di compilazione. Può essere prodotto da TensorFlow, JAX e PyTorch, può essere utilizzato da XLA e IREE e dispone di tutte le funzionalità pubbliche fornite da MHLO/HLO e di funzionalità aggiuntive.

Questo documento descrive i passaggi successivi per il progetto StableHLO, classificando il lavoro in corso riflesso nell'Issue Tracker e organizzando questo lavoro in risultati finali pianificati.

Traguardi

Nel 2023, stiamo pianificando due grandi traguardi: 1) StableHLO v0.9, che fornirà una versione iniziale dell'ambiente e delle garanzie di compatibilità iniziale, 2) StableHLO v1.0 che implementerà miglioramenti ad alta priorità e inizierà a fornire garanzie di compatibilità completa.

StableHLO v0.9 rispecchierà MHLO/HLO, arricchito con una specifica per operazioni in formato statico e garanzie di compatibilità iniziale. Secondo la RFC di compatibilità, questa release fornirà 1 mese di compatibilità con le versioni precedenti e successive. Queste garanzie moderate consentiranno di fare esperienza con l'evoluzione del dialetto e daranno un po' di tempo per la pulizia prima che le garanzie diventino effettive. Abbiamo in programma di rilasciare StableHLO v0.9 nel primo trimestre del 2023.

StableHLO v1.0 implementerà miglioramenti ad alta priorità, tra cui la pulizia del contratto di frontend (con l'obiettivo che i programmi StableHLO includano solo operazioni del dialetto StableHLO, anziché la combinazione odierna di dialetti e attributi non registrati) e fornendo un'implementazione di riferimento. Abbiamo in programma di rilasciare StableHLO v1.0 nella seconda metà del 2023.

Flussi di lavoro

Per organizzare lo sviluppo verso le tappe sopra citate, abbiamo classificato i ticket nell'Issue Tracker in più flussi di lavoro e collegato questi flussi di lavoro agli obiettivi. Un numero limitato di ticket (inferiore al 10%) non viene assegnato a un flusso di lavoro specifico e non fanno parte di un traguardo specifico.

(P0) Il flusso di lavoro per l'implementazione della compatibilità è dedicato all'implementazione di RFC di compatibilità insieme a una suite di test di compatibilità. La maggior parte di questo lavoro dovrebbe essere completata in StableHLO v0.9, mentre il resto in StableHLO v1.0.

(P0) Il flusso di lavoro del contratto di frontend consiste nell'implementazione del 100% delle funzionalità utilizzate dai frontend StableHLO, ma non ancora nella specifica StableHLO. L'obiettivo di questo flusso di lavoro è garantire che i programmi StableHLO includano solo operazioni del dialetto StableHLO anziché la combinazione odierna di dialetti e attributi non registrati. Stiamo pianificando di completare tutto o quasi tutto il lavoro di questo flusso di lavoro in StableHLO v1.0.

(P0) Il flusso di lavoro Implementazione di riferimento organizza il lavoro sull'implementazione di un interprete per il 100% delle operazioni StableHLO, come definito nella specifica StableHLO. Abbiamo intenzione di completare tutto o quasi tutto il lavoro di questo flusso di lavoro in StableHLO v1.0.

(P0) Il flusso di lavoro della documentazione è dedicato a fornire tutte le informazioni necessarie per i produttori o i consumatori di StableHLO. La specifica StableHLO è un prodotto principale, nonché un riferimento per l'API StableHLO e il formato di serializzazione StableHLO. Le parti fondamentali del flusso di lavoro verranno distribuite in StableHLO v1.0, con una gestione continua degli elementi con priorità più bassa.

(P1) Il flusso di lavoro della suite di conformità consiste nella distribuzione di una suite di test che confronta un'implementazione di riferimento con le implementazioni fornite dai backend StableHLO. I test per l'implementazione di riferimento forniranno tipi di suite di conformità, quindi questo flusso di lavoro non ha priorità P0. Tuttavia, estendere ulteriormente questa suite con ulteriori scenari di test interessanti sarà probabilmente un'area utile per lavorazioni future.

(P1) Il flusso di lavoro per la conformità delle specifiche assicura che il 100% delle operazioni StableHLO venga implementato nel dialetto StableHLO come definito nella specifica StableHLO. Il dialetto StableHLO è già ragionevolmente conforme, quindi questo flusso di lavoro non ha la priorità P0, ma molti elementi minori rimangono (soprattutto nei casi limite dell'implementazione della verifica) e verranno gestiti in modo continuativo.

(P1) Il flusso di lavoro delle nuove funzionalità conclude la roadmap di StableHLO e consiste di una raccolta ragtag di nuove funzionalità per l'opset StableHLO (non il dialetto StableHLO o le associazioni StableHLO, che sarebbero altri flussi di lavoro). Alcune di queste nuove funzionalità saranno distribuite in StableHLO 1.0, ma la maggior parte è attualmente costituita da elementi con priorità inferiore che non fanno parte di un traguardo specifico.

(P1) Il flusso di lavoro dell'API pubblica è dedicato alla distribuzione di associazioni C/C++/Python per il dialetto StableHLO. Le associazioni C++/Python esistenti sono già abbastanza ragionevoli, quindi questo flusso di lavoro non ha priorità P0. Tuttavia, rimane ancora da fare un bel po' di lavoro, in particolare per fornire stabilità per queste associazioni, che al momento non è coperto dalla RFC di compatibilità, ma che probabilmente sarà un'area utile per il lavoro futuro.