Skip to main content

Energizer

A small PyTorch-like deep-learning library for Apple Silicon, used as a testbed to study what the Apple Neural Engine (ANE) can and cannot do for training.

Lint License: MIT

This repository contains

  1. energizer/ – the library: autograd, layers, optimizers, an MLX/Metal backend, a Core ML compiler (backpack) and a data-parallel layer (parallel).
  2. experiments/ – the measurement harness behind the paper. Every number is regenerated from raw JSON Lines in results/ by a script.
  3. paper/ – manuscript sources and generated tables.
  4. docs/ – research plan, hardware/software claims, API reference.

What runs where (important)

Path in this repo Silicon actually used Notes
device="cpu" CPU NumPy
device="mlx" GPU (Metal) MLX. Not the ANE. Formerly called "gpu", kept as deprecated alias.
energizer.backpack (Core ML) CPU / GPU / ANE Inference only. Core ML decides placement; see docs/claims.md.

MLX has no ANE backend. The ANE is only reachable through Core ML, which exposes no public training or backward-pass API; Core ML also gives no control over placement beyond MLComputeUnits.

Quickstart

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest tests
import energizer as ez

model = ez.Sequential(ez.Linear(784, 256), ez.ReLU(), ez.Linear(256, 10)).to("mlx")
x = ez.Tensor.randn(32, 784, device="mlx")
loss = ez.CrossEntropyLoss()(model(x), ez.Tensor.zeros((32,), device="mlx"))
loss.backward()

Full API: docs/api.md.

Reproducing the results

make smoke        # a few configs, ~minutes, validates the toolchain
make sweep        # placement / latency sweep (step 3)
sudo -E make power  # same sweep + powermetrics (needs root)
make baselines    # MLX vs PyTorch-MPS vs Core ML (step 4)
make tables       # results/*.jsonl -> paper/tables/*.tex

Each result file starts with an env record (chip, macOS build, library versions, git commit, dirty flag) so a number can always be traced to the setup that produced it. Requirements: Apple Silicon Mac, macOS 14.4+ (for MLComputePlan), Python 3.10-3.12. Power needs sudo for powermetrics.

Research plan

See docs/research_plan.md for the ordered work items (backend claim fix, harness, sweeps, baselines, MLX-native backward, hybrid ANE-forward / GPU-backward prototype, private-API decision) and their status.

Citation

See CITATION.cff.

License

MIT, see LICENSE.

Author

Florian GRIMA – @fgrimaepitech

Metadata

Release files for energizer 0.2.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 energizer 0.2.0
File Size Uploaded
energizer-0.2.0.tar.gz 69.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for energizer 0.2.0
File Interpreter ABI Platform
energizer-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 139.0 kB

Release files / energizer-0.2.0.tar.gz

Download URL energizer-0.2.0.tar.gz
Size 69.3 kB
Tags Source
SHA-256 checksum
How to use checksums
283e39bf2074bc12253ceb04463f62036e0159a343073926d36e22a263957e65
BLAKE2b-256 checksum
How to use checksums
dad04151c6ef92a802aa64ff79f46e1d906137ff6d8f9c10dace57e6ec0b83eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / energizer-0.2.0-py3-none-any.whl

Download URL energizer-0.2.0-py3-none-any.whl
Size 69.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20509cca494a00a2986bbf0f790fd6e7ad9a084a9d61c4c4f00c5a556a8b6ee6
BLAKE2b-256 checksum
How to use checksums
5bf93c2f934dafeb9ed252e9a72c4c799be861008657afd0b7d4db48852ddf5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log
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