StableHLO è un insieme di operazioni per le operazioni di alto livello (HLO) nei modelli di machine learning (ML). In sostanza, si tratta di un livello di portabilità tra diversi framework ML e compilatori ML: i framework ML che producono programmi StableHLO sono compatibili con i compilatori ML che utilizzano programmi StableHLO.
Il nostro obiettivo è semplificare e accelerare lo sviluppo di ML creando una maggiore interoperabilità tra vari framework di ML (come TensorFlow, JAX e PyTorch) e compilatori di ML (come XLA e IREE).
Funzionalità e inizio utilizzo
L'attuale release di StableHLO include molte funzionalità e traguardi importanti:
- Completamente specificato: la specifica StableHLO è definita per circa 100 operazioni con verificatori e inferenza del tipo, nonché funzionalità di dinamismo e quantizzazione.
- Compatibilità garantisce la compatibilità con le versioni precedenti per 5 anni e con le versioni successive per 2 anni, consentendo il deployment a lungo termine di server / edge e cicli di aggiornamento annuali.
- Interprete di riferimento con supporto di operazioni statiche e dinamiche, incluse le API C++ e Python.
- Estensione tramite operazioni composite e chiamate personalizzate per consentire esperimenti rapidi o per modellare operazioni specifiche del fornitore.
- API C++/Python per le funzionalità di base e file dev-wheel notturni per un onboarding più semplice.
- Tutorial di Colab per dimostrare le API Python per l'estrazione di StableHLO da vari framework, nonché altre funzioni di utilità.
- Suite di dati di test di 3000 file di test, inclusi programmi dinamici e quantizzati e risultati di riferimento per i test di integrazione del fornitore, i test di compatibilità in avanti / indietro e una copertura del codice superiore al 90%.
- Trasformazioni dei programmi per la semplificazione dei programmi indipendentemente dall'hardware, affinamento dei programmi con struttura dinamica mediante argomenti di input concreti, e conversioni in dialetti MLIR a monte come linalg o tosa.
- Guidato dalla community con molti contributi dell'ecosistema per le trasformazioni, nonché RFC per le modifiche all'insieme di operazioni: nuovi tipi FP8, operazioni collective_broadcast, gather / scatter batched, quantizzazione ibrida, API di interprete, decomposizioni CHLO, trasformazioni di semplificazione StableHLO e altro ancora.
Sviluppatori di modelli che vogliono utilizzare StableHLO o XLA per compilare il progetto di ML, consulta la documentazione corrispondente per il tuo framework ML:
Sviluppatori di compilatori che vogliono integrare StableHLO, consulta la nostra documentazione introduttiva su questo sito, inclusi tutorial e dettagli per gli sviluppatori. Consulta la sezione della community di questa pagina per eventuali domande, problemi o assistenza per l'onboarding.
Istruzioni per la compilazione
Per le istruzioni di compilazione, consulta StableHLO su GitHub.
Community
La creazione di un livello di portabilità straordinario tra i framework e i compilatori ML richiede la collaborazione di tutto il settore dell'IA, quindi siamo felici di ricevere il tuo aiuto per il progetto StableHLO.
Utilizziamo i problemi / le richieste di pull di GitHub per organizzare lo sviluppo e openxla-discuss per avere discussioni più lunghe. Abbiamo anche un #stablehlo
canale sul server Discord di OpenXLA.