Repository navigation
feat: add ExecuTorch runtime - #18
Open
leeclemnet wants to merge 2 commits into
Open
leeclemnet wants to merge 2 commits into
leeclemnet wants to merge 2 commits into
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
leeclemnet
force-pushed
the
feat/cpu-runtimes
branch
from
September 29, 2026 20:41
29dfcf5 to
d955761
Compare
leeclemnet
force-pushed
the
feat/executorch-runtime
branch
from
September 29, 2026 20:43
1e60486 to
bff005b
Compare
leeclemnet
force-pushed
the
feat/cpu-runtimes
branch
from
September 29, 2026 21:30
d955761 to
2fd7dbd
Compare
leeclemnet
force-pushed
the
feat/executorch-runtime
branch
from
September 29, 2026 21:30
bff005b to
82d725a
Compare
2 of 7 tasks
leeclemnet
force-pushed
the
feat/cpu-runtimes
branch
from
September 30, 2026 16:34
2fd7dbd to
65ed1a7
Compare
leeclemnet
force-pushed
the
feat/executorch-runtime
branch
from
September 30, 2026 16:34
82d725a to
068f8a6
Compare
leeclemnet
force-pushed
the
feat/cpu-runtimes
branch
from
September 30, 2026 16:53
65ed1a7 to
b40aaf6
Compare
leeclemnet
force-pushed
the
feat/executorch-runtime
branch
from
September 30, 2026 16:53
068f8a6 to
56ecd8f
Compare
Add ExecuTorchRuntime (XNNPACK, cpu) on the Runtime contract. It loads a .pte program and times only Method.execute(). Inputs are cast to the program's dtypes before the timed call, and outputs are cloned after it, because ExecuTorch can reuse its output buffers. No script rows use the runtime yet: a .pte comes from torch.export on the PyTorch model, not from ONNX, and the exported artifacts are not in the bucket. The tests build tiny .pte programs with torch.export. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nnot fail Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
leeclemnet
force-pushed
the
feat/cpu-runtimes
branch
from
September 30, 2026 19:35
b40aaf6 to
fd3ea3e
Compare
leeclemnet
force-pushed
the
feat/executorch-runtime
branch
from
September 30, 2026 19:35
56ecd8f to
e0c7228
Compare
leeclemnet
marked this pull request as ready for review
September 30, 2026 19:37
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
ExecuTorch runtime
What it does: Adds
ExecuTorchRuntime(XNNPACK, devicecpu) on theRuntimecontract. It loads a.pteprogram and times onlyMethod.execute(). No script rows use it yet.Why: A
.ptecomes fromtorch.exporton the PyTorch model, not from ONNX, and the exported artifacts are not in the bucket yet. This PR lands the runtime, so the rows are only a config change when the artifacts exist. Stacked on #16.Change map
sab/runtimes/executorch.py) — inputs are cast to the program's dtypes before the timed call. Outputs are cloned after it, because ExecuTorch can reuse its output buffers on the next call. Inputs are named by position (input0,input1), because a.ptehas no input names.tests/test_executorch.py) — build tiny.pteprograms withtorch.exportandXnnpackPartitioner, and checkrun()against the eager model.pyproject.toml,uv.lock,.github/workflows/tests.yml,README.md) — extraexecutorch. It is not innvidia, because the NVIDIA host runs no ExecuTorch rows. CI installs it.Behavior changes
Watch out for
sab/runtimes/executorch.py:81— the outputs are cloned after the timed call. Without the clone, a later call overwrites the outputs of an earlier one.pyproject.toml:34—executorchpulls a large dependency set (uv.lockgrows by about 800 lines). The lock keeps torch at 2.14.cpuis in this PR. The Core ML backend (npu) comes with the Mac PR.Related Issue(s): n/a
Type of Change
Testing
CPU: ExecuTorch (XNNPACK) on an Apple M4 Max (fp32, on battery). The artifacts are the official exports in
gs://rfdetr/export-2026-09-30. ORT reads the.onnxof the same export. YOLO26 has no official exports, so it has no rows.rfdetr-nanorfdetr-smallrfdetr-mediumrfdetr-largerfdetr-xlargerfdetr-2xlargeChecklist
Additional Context
🤖 Generated with Claude Code