Skip to main content

Core AI PyTorch Extensions (coreai-torch)

Core AI PyTorch Extensions (coreai-torch) is a Python package that bridges PyTorch and Core AI. Use it to bring up an existing PyTorch model into Core AI IR, or to author Core AI models directly from PyTorch by composing the built-in composite op library (coreai_torch.composite_ops), authoring new ops via register_torch_lowering, and authoring inline Metal GPU kernels via TorchMetalKernel. The resulting IR can be compiled and executed efficiently by the Core AI inference stack.

🔗 Jump to: Getting started · Documentation · Contributing · Support · License

Overview

coreai-torch traverses a torch.export.ExportedProgram and produces Core AI IR — the same IR consumed by the Core AI compiler and runtime. The public entry point is TorchConverter, which lowers PyTorch operators to Core AI dialect operations, preserves location and module-stack information for debugging, and provides extension points for custom Metal kernels and submodule externalization.

Getting started

Installation

pip install coreai-torch

Or from source with uv:

uv sync

Usage

TorchConverter accepts models in two forms. Pick based on what you have and whether you need externalization:

You have Use
A decomposed ExportedProgram add_exported_program()
An nn.Module + need externalization add_pytorch_module() with externalize_modules
An nn.Module, no externalization Either method — add_exported_program() is more direct

From an ExportedProgram

You export and decompose the model yourself, then pass the ExportedProgram directly. Use get_decomp_table() so that composite ops (instance_norm, pixel_shuffle, scaled_dot_product_attention) are preserved for optimal runtime performance.

import torch
from coreai_torch import TorchConverter, get_decomp_table

model = ...  # your nn.Module
model.eval()

# Export and decompose — this is your responsibility
ep = torch.export.export(model, args=(torch.randn(1, 3, 224, 224),))
ep = ep.run_decompositions(get_decomp_table())

# Convert to Core AI IR
converter = TorchConverter().add_exported_program(ep)
coreai_program = converter.to_coreai()
coreai_program.optimize()

From an nn.Module

Pass your model and an export_fn that returns a decomposed ExportedProgram. This is equivalent to calling add_exported_program() with the result of export_fn.

import coreai_torch
from coreai_torch import TorchConverter

model = ...  # your nn.Module
model.eval()
sample = (torch.randn(1, 3, 224, 224),)

converter = TorchConverter().add_pytorch_module(
    model,
    export_fn=lambda m: torch.export.export(m, args=sample).run_decompositions(
        coreai_torch.get_decomp_table()
    ),
)
coreai_program = converter.to_coreai()
coreai_program.optimize()

Documentation

  • API reference and conversion guides — see the docs/ directory
  • Supported model types and ops — see the operator coverage notebooks under docs/

Building docs locally

uv sync --extra docs
uv run jupyter-book build docs/
open docs/_build/html/index.html

Development

Setting up pre-commit hooks

This repo uses pre-commit to run linting and formatting checks automatically. Install the hooks once after cloning:

pre-commit install --hook-type pre-commit --hook-type pre-push

Running tests

uv sync --extra test
uv run pytest tests/ -n auto

Testing notebooks

uv run pytest docs/ --nbmake -v

Contributing

We welcome contributions within a defined scope. Please read CONTRIBUTING.md carefully before opening a pull request or issue — particularly the section on contribution scope.

Support

Security and code of conduct

Security vulnerability reporting and the Code of Conduct for this project are governed at the org level via the Apple Open Source .github repository.

License

This project is licensed under the BSD 3-Clause License.

Related projects

  • Core AI — Apple's on-device AI inference stack
  • Core AI Optimization — model compression for deployment on Apple Silicon
  • Core AI Models — ready-to-run optimized models, Python reproduction scripts, and Swift utilities for on-device integration

Release files for coreai-torch 0.4.2

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

Source distribution (sdist)

Source distribution for coreai-torch 0.4.2
File Size Uploaded
coreai_torch-0.4.2.tar.gz 252.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for coreai-torch 0.4.2
File Interpreter ABI Platform
coreai_torch-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 491.7 kB

Release files / coreai_torch-0.4.2.tar.gz

Download URL coreai_torch-0.4.2.tar.gz
Size 252.5 kB
Tags Source
SHA-256 checksum
How to use checksums
233e5bb069620acba71d7609f143144b76140fda74ff3ea797d7bf43d80f1e57
BLAKE2b-256 checksum
How to use checksums
da4a7ba9af90ffd9a04e5f2916fc6e5d0a3768bf32ccaaa7d611589e758f12ae
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 Aug 24, 2026.

Transparency log

Release files / coreai_torch-0.4.2-py3-none-any.whl

Download URL coreai_torch-0.4.2-py3-none-any.whl
Size 239.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6d4349be6002a7a4c4475b65fd3d1bb7d49f01d137ea2c3259989f46c7a8c34e
BLAKE2b-256 checksum
How to use checksums
83771a81d481db9e1aacaacf016fd3eff0d8bb841fddce56046f6fa6dc248873
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 Aug 24, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.3

2 release files

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

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