Convert StableHLO models into Apple Core ML format
Project description
Convert StableHLO models into Apple Core ML format
This repo is currently experimental!
Only a subset of the StableHLO operations have been implemented, and some of them may have restrictions.
Due to the current dot_general op implementation, it is only possible to target iOS >= 18.
Look in the tests
directory, to see what has currently been tested.
The package is published to PyPi as stablehlo-coreml-experimental
.
Converting a model
To convert a StableHLO module, do the following:
import coremltools as ct
from stablehlo_coreml.converter import convert
from stablehlo_coreml import DEFAULT_HLO_PIPELINE
mil_program = convert(hlo_module, minimum_deployment_target=ct.target.iOS18)
cml_model = ct.convert(
mil_program,
source="milinternal",
minimum_deployment_target=ct.target.iOS18,
pass_pipeline=DEFAULT_HLO_PIPELINE,
)
For a Jax project, the hlo_module
can be obtained the following way:
import jax
from jax._src.lib.mlir import ir
from jax._src.interpreters import mlir as jax_mlir
from jax.export import export
import jax.numpy as jnp
def jax_function(a, b):
return jnp.einsum("ij,jk -> ik", a, b)
context = jax_mlir.make_ir_context()
input_shapes = (jnp.zeros((2, 4)), jnp.zeros((4, 3)))
jax_exported = export(jax.jit(jax_function))(*input_shapes)
hlo_module = ir.Module.parse(jax_exported.mlir_module(), context=context)
For the Jax example to work, you will additionally need to install absl-py
and flatbuffers
as dependencies.
For additional examples see the tests
directory.
Notes
coremltools
supports up to python 3.11. Do not run hatch with a newer version. Can be controlled using fxexport HATCH_PYTHON=python3.11
- Run tests using
hatch run test:pytest tests
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file stablehlo_coreml_experimental-0.0.6.tar.gz
.
File metadata
- Download URL: stablehlo_coreml_experimental-0.0.6.tar.gz
- Upload date:
- Size: 26.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.27.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 784e5b575c0a623732b401bfcdc9bb34b87664b6f76c08ffba584cf2e56ff634 |
|
MD5 | e323dbe232a95a87d526c01c6bda3206 |
|
BLAKE2b-256 | 0beb61818bd6a9c6bebf613e1548843cffdb42aac3d0146abdb9d91208d321c6 |
File details
Details for the file stablehlo_coreml_experimental-0.0.6-py3-none-any.whl
.
File metadata
- Download URL: stablehlo_coreml_experimental-0.0.6-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.27.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7072e717d63d8506610bcc0d0974cde8c62047be40b32dcaf7c9374d89e2f997 |
|
MD5 | 222a44feb8b7aa0fc7160ae0ce1c8f48 |
|
BLAKE2b-256 | 5f5f9ae9151d159e4678212a799134c5500bc8429ec0f1df053e95ab4c583827 |