Skip to content

Releases: openxla/stablehlo

StableHLO v1.0 Release

14 May 23:37
797bee2
Compare
Choose a tag to compare

What's new in StableHLO v1.0?

  • Fully specified: the StableHLO Specification is defined for all 98 ops with verifiers and type inference.
  • Compatibility guaranteed battle tested in production workloads, and extended to offer 5 years backward compatibility and 2 years forward compatibility to support long-term deployment and manage version skew across annual update cycles.
  • Dynamism & Quantization formalized and added to the spec, with verification of constraints.
  • Reference interpreter support for static and dynamic ops, including C++ and Python APIs.
  • Extensibility via composite ops to enable experimentation on higher-level ops.
  • C++/Python APIs for core features and nightly dev-wheel files for easier onboarding.
  • Colab tutorials to demonstrate Python APIs for extracting StableHLO from JAX and PyTorch, and for packaging StableHLO in SavedModel.
  • Testdata suite of 3k test files, forward / backward compatibility tests, and >90% code coverage.
  • Web-based documentation at https://openxla.org/stablehlo
  • Program transformations for refining dynamic programs with shape computation support, program simplification, converting to to linalg or tosa dialects, and more.
  • Many community-driven RFCs, opset changes, and contributions: New FP8 types, collective_broadcast, batched gather/scatter ops, hybrid quantization, interpreter APIs, CHLO decompositions, StableHLO simplification transformations, and many more.

What is / isn’t changing?

Extending compatibility guarantees is the biggest change happening at the v1.0 tag. A few ops are on their way out of the opset and are excluded from long-term compatibility, these ops are denoted in the StableHLO Spec > Deprecated Operations.

Aside from that, most existing dev practices will remain the same! We’ll still be evolving the opset, tooling, and APIs to cater to community needs, with opset changes warranting a minor version bump, and patch revisions weekly as we integrate into openxla/xla.

Install via pip

PyPi package will be uploaded shortly (#2346), in the meantime, the easiest way is using the release assets.

pip install stablehlo -f https://github.com/openxla/stablehlo/releases/expanded_assets/v1.0.0

Community Acknowledgements

Lastly, a huge thank you to our quickly growing community – for code contributions, community meeting engagement, RFC feedback, discord discussions, and everything in between!

Especially to our first time contributors since the v0.9.0 release, in alphabetical order:

@Andrew-Cain, @aartbik, @abhigunj, @anakinxc, @apivovarov, @chaserileyroberts, @cryptodeal, @doyeonkim0, @fzakaria, @jakeh-gc, @joker-eph, @jpienaar, @karthikrangasai, @kuhar, @linuxlonelyeagle, @majnemer, @mlevesquedion, @mvpant, @pcoet, @penagos, @penguin-wwy, @pparuzel, @qingyunqu, @scott-griffiths, @sjain-stanford, @srcarroll, @tomnatan30, @xiuhu17, @yinying-lisa-li

Full Changelog: v0.9.0...v1.0.0

dev-wheels

26 Jan 19:08
d4cb569
Compare
Choose a tag to compare
Change secret for wheel publishing (#1955)

The workflow GitHub App default credential in OpenXLA cannot create
GitHub releases.

Follow the convention identified by IREE in OpenXLA which uses a
[repository
secret](https://github.com/openxla/iree/blob/79b6129e2333ae26e7e13b68c27566102dcece6e/.github/workflows/validate_and_publish_release.yml#L112C37-L112C55)
linked to a developers credential with repo permissions.

The secret created here was created by gleasonk@ and the secret at the
moment of this commit belongs to fzakaria@.
It is valid for 1-year.

StableHLO 0.9.0

02 Mar 20:32
c1a47c7
Compare
Choose a tag to compare

StableHLO is an operation set for high-level operations (HLO) in machine learning (ML) models. Essentially, it's a portability layer between different ML frameworks and ML compilers: ML frameworks that produce StableHLO programs are compatible with ML compilers that consume StableHLO programs.

This is the first release of StableHLO that consists of 572 commits by 15 contributors made over the course of more than 6 months. StableHLO is based on the MHLO dialect and the HLO opset which were developed by countless contributors over the course of many years. Thank you, everyone, for your hard work!

Integrations

StableHLO is now available as a drop-in replacement for MHLO/HLO in the role of compiler interface, and it has been used in production since the end of 2022. StableHLO can be produced by TensorFlow, JAX and PyTorch, it can be consumed by XLA and IREE, and it has all the public features provided by MHLO/HLO as well as additional functionality, including a comprehensive specification and compatibility guarantees.

Comprehensive specification

StableHLO comes with a comprehensive specification for 94 statically-shaped operations. The specification is inspired by XLA Operation Semantics which serves as a reference for the HLO opset. In StableHLO, we built upon this work and formalized the semantics of HLO ops, aiming to cover every nook and cranny of their semantics.

Compatibility guarantees

Stability is another big feature of StableHLO. Starting with 0.9.0, we are providing 1 month of forward and backward compatibility guarantees for portable artifacts, with plans to scale up to 5 years later this year. compatibility.md provides more details about what's in scope, what's out of scope and what comes next.

Next steps

At the moment, we are focused on establishing a pristine frontend contract and providing a reference implementation for this contract. After implementing these key new features and making high-priority cleanups in the codebase, we are planning to release StableHLO 1.0.0 in H2 2023. See roadmap.md for more details.