Skip to main content

idun

Tabular learning on the Apple silicon GPU. idun trains three learners on Metal, each with a CPU reference backend:

  • idun_gbm (idun.gbm): histogram gradient boosting with LightGBM's model (depth-wise or leaf-wise trees, quantized gradients, categorical splits, seed bags). Its CPU and Metal backends build the same model, bit for bit.
  • idun_tabm (idun.tabm): TabM (Gorishniy et al., ICLR 2025), a parameter-efficient ensemble of MLPs.
  • idun_realmlp (idun.realmlp): RealMLP-TD (Holzmüller et al., NeurIPS 2024).

Every fit is deterministic: the same data, parameters and seed give the same bits, run after run (the networks on the same GPU). The estimators follow scikit-learn's conventions without depending on it.

idun is in alpha (0.1): the interfaces may still change.

Install

pip install idun            # Apple silicon with macOS 15 or later: the Metal wheel; elsewhere the CPU-only wheel
pip install idun-numerai    # the Numerai port

Python 3.12–3.14; the only dependencies are NumPy and numba. Metal needs an Apple silicon Mac (M1 or newer) with macOS 15 or later. On Linux and Intel Macs the same package installs without the Metal library and runs the CPU backends; asking for Metal there raises idun.errors.BackendUnavailableError rather than falling back.

Quick start

import idun
from idun.gbm import GBMRegressor
from idun.realmlp import RealMLPRegressor
from idun.tabm import TabMClassifier

gbm = GBMRegressor(num_trees=300, learning_rate=0.05).fit(X_train, y_train)
pred = gbm.predict(X_test)
cpu = GBMRegressor(num_trees=300, learning_rate=0.05, backend="cpu").fit(X_train, y_train)  # the same trees

clf = TabMClassifier(categorical=["sector"]).fit(X_train, labels)  # any labels, two classes or more
proba = clf.predict_proba(X_test)

mlp = RealMLPRegressor(n_seeds=4).fit(X_train, y_train)  # a bag of four seeds; predicts their mean

gbm.save("gbm.idun")
same = idun.load("gbm.idun")

X is a 2-D NumPy array, a pandas DataFrame or an Arrow table; missing values are allowed. The backend is "metal" by default; pass backend="cpu" (idun_gbm) or backend="reference" (the networks' float64 reference) to run on the CPU. Nothing switches backends behind your back.

Below the estimators: idun.Dataset bins a table once for reuse; the functional layer (idun.gbm.train, idun.tabm.train_tabm, idun.realmlp.train_realmlp, seed bags through train_seeds and predict_mean) trains on binned data or on idun.data.PackedDataset, a memory-mapped, date-sorted panel for data larger than memory, which Metal reads without a copy. The docstrings document every public name.

How it compares

On five OpenML tasks on an Apple M1 (8 GB): idun_gbm's RMSE is within 3 % of the median of LightGBM, XGBoost and scikit-learn's HistGradientBoosting at the same nominal settings; idun_tabm and idun_realmlp are within 2 % of their reference implementations (the tabm package and pytabkit on Torch's MPS device) on every task and better on most, and idun_tabm fits in 0.45 of the reference's time.

Licence

Apache-2.0. The NOTICE file lists the work idun builds on, including MLX's Steel GEMM (MIT), whose structure the networks' GEMM kernel adapts.

Metadata

Release files for idun 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for idun 0.1.0
File Size Uploaded Provenance Actions
idun-0.1.0.tar.gz 151.0 kB Without provenance Details for idun-0.1.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for idun 0.1.0
File Interpreter ABI Platform Actions
idun-0.1.0-py3-none-macosx_15_0_arm64.whl Python 3 none macOS 15.0+ ARM64 Details for idun-0.1.0-py3-none-macosx_15_0_arm64.whl
idun-0.1.0-py3-none-any.whl Python 3 none any Details for idun-0.1.0-py3-none-any.whl

Total release size: 505.5 kB

Release files / idun-0.1.0.tar.gz

Download URL idun-0.1.0.tar.gz
Size 151.0 kB
Tags Source
SHA-256 checksum
How to use checksums
aa8feefb72807a2e65075d5ff97fce4e44fe1276864adcb11e416ecc15ef5a5c
BLAKE2b-256 checksum
How to use checksums
7250a48ef68b266cb113a340b03ea7cf8a7d0f7eccbbf30f876950be44100e5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / idun-0.1.0-py3-none-macosx_15_0_arm64.whl

Download URL idun-0.1.0-py3-none-macosx_15_0_arm64.whl
Size 183.1 kB
Tags Python 3 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
8ab7f7610577a8229636b64016aa2bd224f296c49005dead7faedc1ea3ac62fe
BLAKE2b-256 checksum
How to use checksums
d137d7f9f4c553f4005fd77aa3a300fbb3f269d5d32a71318ba6c1a0fb1f993f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / idun-0.1.0-py3-none-any.whl

Download URL idun-0.1.0-py3-none-any.whl
Size 171.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0063ae002378058450ed77853d4cda7e7197aa932d7627f18ba265220762d170
BLAKE2b-256 checksum
How to use checksums
34cd94ced3a646c1dee8073a7bc37d229d066673b2601b97de62c40cda74a93c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for idun 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

3 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page