Skip to content

[ET][native] Bundle sample method calls in .ptn packages - #24171

Merged
meta-codesync[bot] merged 5 commits into
gh/digantdesai/177/basefrom
gh/digantdesai/177/head
Oct 28, 2026
Merged

meta-codesync[bot] merged 5 commits into
gh/digantdesai/177/basefrom
gh/digantdesai/177/head

Conversation

@digantdesai

@digantdesai digantdesai commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Stack from ghstack (oldest at bottom):

A .ptn can carry recorded method calls under samples/<method>/<set>/
as index.json plus data.safetensors; program loaders ignore them. A
sample is an ordered list of calls from the initial state with no reset
between, so stateful methods such as LLM prefill then teacher-forced decode
can be checked. Tolerance resolves per call, then sample, then set, and
write_samples warns above 1e-3.

write_samples and read_samples live in
exir/_serialize/_ptn_samples.py. The spec is in backends/native/README.md;
review it first.

Authored with Claude Code.

Differential Revision: D125544384

@pytorch-bot

pytorch-bot Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/24171

Note: Links to docs will display an error until the docs builds have been completed.

❌ 1 New Failure, 2 Cancelled Jobs, 1 Pending

As of commit a1b2448 with merge base 4db778e (image):

NEW FAILURE - The following job has failed:

CANCELLED JOBS - The following jobs were cancelled. Please retry:

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@github-actions

Copy link
Copy Markdown

This PR needs a release notes: label

If your change should be included in the release notes (i.e. would users of this library care about this change?), please use a label starting with release notes:. This helps us keep track and include your important work in the next release notes.

To add a label, you can comment to pytorchbot, for example
@pytorchbot label "release notes: none"

For more information, see
https://github.com/pytorch/pytorch/wiki/PyTorch-AutoLabel-Bot#why-categorize-for-release-notes-and-how-does-it-work.

[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
@meta-codesync
meta-codesync Bot merged commit ec7a7d9 into gh/digantdesai/177/base Oct 28, 2026
218 of 221 checks passed
@meta-codesync
meta-codesync Bot deleted the gh/digantdesai/177/head branch October 28, 2026 12:58
@meta-codesync
meta-codesync Bot deployed to cherry-pick-bot October 28, 2026 12:58 Active
meta-codesync Bot pushed a commit that referenced this pull request Oct 28, 2026
Stack from [ghstack](https://github.com/ezyang/ghstack/tree/0.15.0) (oldest at bottom):
* #24175
* #24174
* #24173
* __->__ #24172
* #24171

Moves the prefill and decode loop of `run_llm` into `generate`, which takes
a `NextToken` callback mapping logits to the next token. `run_llm` passes
`greedy_argmax_last_row`, so behavior is unchanged. The verify mode later
in the stack uses it to force sample tokens.

Authored with Claude Code.

Differential Revision: D125544385

Pull Request resolved: #24172
meta-codesync Bot pushed a commit that referenced this pull request Oct 28, 2026
Stack from [ghstack](https://github.com/ezyang/ghstack/tree/0.15.0) (oldest at bottom):
* #24175
* #24174
* __->__ #24173
* #24172
* #24171

Adds `read_sample_set`, which reads one `samples/<method>/<set>/` from a
`.ptn` into calls with resolved tolerance. It validates like `read_samples`
and rejects scalar and list values.

Authored with Claude Code.

Differential Revision: D125544386

Pull Request resolved: #24173
meta-codesync Bot pushed a commit that referenced this pull request Oct 28, 2026
Stack from [ghstack](https://github.com/ezyang/ghstack/tree/0.15.0) (oldest at bottom):
* #24175
* __->__ #24174
* #24173
* #24172
* #24171

`export_hf_llm --samples N` adds a `golden` set to `forward`: per
prompt, a prefill and 4 decode calls, each decode fed the previous eager
argmax. Tolerance is (1e-3, 1e-3) for float and (2.0, 5e-2) for quantized
weights, where engines quantize activations differently from torchao.

Authored with Claude Code.

Differential Revision: D125544388

Pull Request resolved: #24174
meta-codesync Bot pushed a commit that referenced this pull request Oct 28, 2026
Stack from [ghstack](https://github.com/ezyang/ghstack/tree/0.15.0) (oldest at bottom):
* __->__ #24175
* #24174
* #24173
* #24172
* #24171

`run_hf_llm --verify_samples <set>` replays a sample set through `generate()`,
with a fresh context per sample. Each call's logits are compared under
the sample's tolerance, then the sample's next token is forced. Exits 1 on
any mismatch.

Authored with Claude Code.

Differential Revision: D125544389

Pull Request resolved: #24175
JakeStevens pushed a commit that referenced this pull request Oct 28, 2026
This PR was created by the merge bot to help merge the original PR into
the main branch.
ghstack PR number: #24171 by
@digantdesai
^ Please use this as the source of truth for the PR details, comments,
and reviews
ghstack PR base:
https://github.com/pytorch/executorch/tree/gh/digantdesai/177/base
ghstack PR head:
https://github.com/pytorch/executorch/tree/gh/digantdesai/177/head
Merge bot PR base: https://github.com/pytorch/executorch/tree/main
Merge bot PR head:
https://github.com/pytorch/executorch/tree/gh/digantdesai/177/orig
Differential Revision:
[D125544384](https://our.internmc.facebook.com/intern/diff/D125544384/)
@diff-train-skip-merge

Co-authored-by: Digant Desai <digantdesai@meta.com>

This branch was successfully deployed

1 active and 1 inactive deployments
cherry-pick-bot — a1b24480 Deployed Oct 28, 2026 by meta-codesync[bot] via Try to create a PR with ghstack /orig branch #1868
cadence — a1b24480 Deployed Oct 28, 2026 by digantdesai via hifi-op-test / hifi4 #34995
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants