O StableHLO é um conjunto de operações para operações de alto nível (HLO, na sigla em inglês) em modelos de machine learning (ML). Essencialmente, é uma camada de portabilidade entre diferentes frameworks e compiladores de ML: os frameworks de ML que produzem programas StableHLO são compatíveis com os compiladores de ML que consomem programas StableHLO.
Nosso objetivo é simplificar e acelerar o desenvolvimento de ML, criando mais interoperabilidade entre vários frameworks de ML (como TensorFlow, JAX e PyTorch) e compiladores de ML (como XLA e IREE).
Recursos e primeiros passos
A versão atual do StableHLO inclui muitos recursos e marcos importantes:
- Especificado por completo:a especificação StableHLO é definida para todas as ~100 operações com verificadores e inferência de tipo, além de recursos de dinamismo e quantização.
- Garantias de compatibilidade de 5 anos e 2 anos para frente, permitindo a implantação de servidor / borda de longo prazo e ciclos de atualização anuais.
- Intérprete de referência com suporte a operações estáticas e dinâmicas, incluindo APIs C++ e Python.
- Extensibilidade com operações compostas e chamadas personalizadas para permitir a experimentação rápida ou para modelar operações específicas do fornecedor.
- APIs C++/Python para recursos principais e arquivos nightly dev-wheel para uma integração mais fácil.
- Tutoriais do Colab para demonstrar APIs do Python para extrair StableHLO de vários frameworks, bem como outras funções de utilitário.
- Conjunto de dados de teste de 3 mil arquivos de teste, incluindo programas dinâmicos e quantizados e resultados de ouro para testes de integração do fornecedor, testes de compatibilidade para frente / para trás e cobertura de código de mais de 90%.
- Transformações de programa para simplificação de programas independentes de hardware, refinando programas com formato dinâmico usando argumentos de entrada concretos e conversões para dialetos MLIR upstream, como linalg ou tosa.
- Orientado pela comunidade com muitas contribuições do ecossistema para transformações, bem como RFCs para mudanças de opset: novos tipos de FP8, collective_broadcast, operações de coleta / dispersão em lote, quantização híbrida, APIs de intérprete, decomposições de CHLO, transformações de simplificação de StableHLO e muito mais.
Desenvolvedores de modelos que querem usar o StableHLO ou o XLA para compilar seu projeto de ML consulte a documentação correspondente do framework de ML:
Desenvolvedores de compiladores que querem integrar o StableHLO, confira nossa documentação de início neste site, incluindo tutoriais e detalhes para desenvolvedores. Consulte a seção da comunidade desta página para receber suporte de integração, perguntas ou problemas encontrados.
Criar instruções
Consulte StableHLO no GitHub para ver instruções de build.
Comunidade
Criar uma camada de portabilidade incrível entre frameworks e compiladores de ML exige colaboração em todo o setor de ML. Por isso, agradecemos sua ajuda no projeto StableHLO.
Usamos problemas / solicitações de pull do GitHub para organizar o desenvolvimento e
openxla-discuss
para ter discussões mais longas. Também temos um canal #stablehlo
no servidor do Discord do OpenXLA.