ONNX backed array library compliant with Array API standard.
Project description
ndonnx
An ONNX-backed array library that is compliant with the Array API standard.
Installation
Releases are available on PyPI and conda-forge.
# using pip
pip install ndonnx
# using conda
conda install ndonnx
# using pixi
pixi add ndonnx
Development
You can install the package in development mode using:
git clone https://github.com/quantco/ndonnx
cd ndonnx
# For Array API tests
git submodule update --init --recursive
pixi shell
pre-commit run -a
pip install --no-build-isolation --no-deps -e .
pytest tests -n auto
Quick start
ndonnx
is an ONNX based python array library.
It has a couple of key features:
-
It implements the
Array API
standard. Standard compliant code can be executed without changes across numerous backends such as likeNumPy
,JAX
and nowndonnx
.import numpy as np import ndonnx as ndx from jax.experimental import array_api as jxp def mean_drop_outliers(a, low=-5, high=5): xp = a.__array_namespace__() return xp.mean(a[(low < a) & (a < high)]) np_result = mean_drop_outliers(np.asarray([-10, 0.5, 1, 5])) jax_result = mean_drop_outliers(jxp.asarray([-10, 0.5, 1, 5])) onnx_result = mean_drop_outliers(ndx.asarray([-10, 0.5, 1, 5])) assert np_result == onnx_result.to_numpy() == jax_result == 0.75
-
It supports ONNX export. This allows you persist your logic into an ONNX computation graph.
import ndonnx as ndx import onnx # Instantiate placeholder ndonnx array x = ndx.array(shape=("N",), dtype=ndx.float32) y = mean_drop_outliers(x) # Build and save ONNX model to disk model = ndx.build({"x": x}, {"y": y}) onnx.save(model, "mean_drop_outliers.onnx")
You can then make predictions using a runtime of your choice.
import onnxruntime as ort import numpy as np inference_session = ort.InferenceSession("mean_drop_outliers.onnx") prediction, = inference_session.run(None, { "x": np.array([-10, 0.5, 1, 5], dtype=np.float32), }) assert prediction == 0.75
In the future we will be enabling a stable API for an extensible data type system. This will allow users to define their own data types and operations on arrays with these data types.
Array API coverage
Array API compatibility is tracked in api-coverage-tests
. Missing coverage is tracked in the skips.txt
file. Contributions are welcome!
Summary(1119 total):
- 898 passed
- 210 failed
- 11 deselected
Run the tests with:
pixi run arrayapitests
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 ndonnx-0.5.0.tar.gz
.
File metadata
- Download URL: ndonnx-0.5.0.tar.gz
- Upload date:
- Size: 299.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f40bacbdd4e2e02b8fb799c18f52a3b53d28fa800651ee316934983e144f7ad9 |
|
MD5 | 12c54181a704245daf0170417d44c09e |
|
BLAKE2b-256 | f2e7993974ace48b19bade56730225016619f18397a508a1f1c51fb2639b8699 |
File details
Details for the file ndonnx-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: ndonnx-0.5.0-py3-none-any.whl
- Upload date:
- Size: 45.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e15142369acac39b24461f50bacfca9cb4b7cf5b02a3ac29794c51de6a3ccb4a |
|
MD5 | 0b0d3fd515c58461fb8bbae6317d9334 |
|
BLAKE2b-256 | 356ab98c04e901d7a1609b6c00f82af433797d4e6a894f253db7c93e59e9d957 |