Repository navigation
Test the ESP-IDF component through the component manager on every emulated target - #24709
Conversation
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/24709
Note: Links to docs will display an error until the docs builds have been completed. ❌ 2 New FailuresAs of commit 622e9d6 with merge base 2d8cd35 ( NEW FAILURES - The following jobs have failed:
This comment was automatically generated by Dr. CI and updates every 15 minutes. |
This PR needs a
|
9ca8878 to
1dc802f
Compare
1dc802f to
c9cb5e4
Compare
c9cb5e4 to
bd1e01c
Compare
fa4e7fb to
96b707b
Compare
|
@claude review effort=max |
|
Claude finished @JakeStevens's task in 37m 4s —— View job PR Review: #24709Nothing blocks this PR, and both items the Nov 6 review requested changes for are fixed. The one new gap is that CI makes the kernel bundles with the unpacked tree's Detailed reviewSummaryThe PR packs the generated component and serves it from a Since the Nov 6 review:
Code Quality
Testing
Specific Comments
RecommendationApprove. Nothing above blocks. I'd still fix where the kernel bundles come from in this PR, since it's the one place the job doesn't test what consumers get. Merge once Test ESP32 Emulators has passed on this head. |
96b707b to
2cd7729
Compare
2cd7729 to
bee0349
Compare
…lated target A new CI job builds the component the way a project using the published component gets it. It generates and packs the component, adds the archive to a file:// component mirror (.ci/scripts/esp_idf_mirror.py writes the layout the registry serves, and refuses conditional dependencies, which it cannot evaluate the way the registry does), and builds idf_component_consumer, which resolves pytorch/executorch from that mirror at the version just generated and esp-nn from the registry. The builds use a fresh ESP-IDF Python environment that the job checks cannot import executorch, with EXECUTORCH_PYTHON unset, so they take the kernel bundles made beforehand. They build a copy of the project, which keeps the component manager's state out of the source tree, and the source, model, kernel bundle and build paths have a space. On ESP-IDF 6.1 the job builds for ESP32 (run on ESP-IDF's QEMU), ESP32-S3, -C3, -C5, -C6 and -P4 (run on esp-emu); on 6.0.1, a second job, for ESP32-S3 and -C6. It also lints the component's manifest, and checks that the lock file records the mirror's archive. Every build runs the smoke model. The ESP32-S3 and -C6 builds also run the MLPerf Tiny streaming wake word model, quantized with the Cadence quantizer and exported by the new idf_component_smoke/export_wakeword_model.py, a test fixture with random weights, as a bundled program of 40 consecutive frames, all 40 of which must match the quantized PyTorch model, and the quantized mul on the esp_nn:: op library; the ESP32-S3 build also runs the ESP-NN delegate program, so the delegate and op library are built from the packed archive against the esp-nn the component manager resolves. The kernel bundles come from the archive's own gen_kernels.py, the copy consumers run. To run a stateful model, the smoke app now runs all of a bundled program's test cases in order on one loaded method, and split_bundled_program.py can repeat them so single-case models still check a second execute. idf_component_consumer reuses the smoke app's main component, so the two cannot drift apart. setup.sh gains --idf-version and, unless --skip-emulator, installs QEMU when esp32 is a target. The workflow now also runs for changes to what the component vendors (runtime, the portable, quantized and prim op kernels, schema, the buffer data loader and flat_tensor schema, codegen, the Cadence AOT and generic kernels, the flatbuffers submodule and build_variables.bzl) and to version.txt. Authored with Claude Code.
bee0349 to
622e9d6
Compare
A new CI job builds the component the way a project using the published
component gets it. It generates and packs the component, adds the archive to a
file:// component mirror (.ci/scripts/esp_idf_mirror.py writes the layout the
registry serves, and refuses conditional dependencies, which it cannot
evaluate the way the registry does), and builds idf_component_consumer, which
resolves pytorch/executorch from that mirror at the version just generated and
esp-nn from the registry. The builds use a fresh ESP-IDF Python environment
that the job checks cannot import executorch, with EXECUTORCH_PYTHON unset, so
they take the kernel bundles made beforehand. They build a copy of the project,
which keeps the component manager's state out of the source tree, and the
source, model, kernel bundle and build paths have a space. On ESP-IDF 6.1 the
job builds for ESP32 (run on ESP-IDF's QEMU), ESP32-S3, -C3, -C5, -C6 and -P4
(run on esp-emu); on 6.0.1, a second job, for ESP32-S3 and -C6. It also lints
the component's manifest, and checks that the lock file records the mirror's
archive.
Every build runs the smoke model. The ESP32-S3 and -C6 builds also run the
MLPerf Tiny streaming wake word model, quantized with the Cadence quantizer
and exported by the new idf_component_smoke/export_wakeword_model.py, a test
fixture with random weights, as a bundled program of 40 consecutive frames,
all 40 of which must match the quantized PyTorch model,
and the quantized mul on the esp_nn:: op library; the ESP32-S3 build also runs
the ESP-NN delegate program, so the delegate and op library are built from the
packed archive against the esp-nn the component manager resolves. The kernel
bundles come from the archive's own gen_kernels.py, the copy consumers run. To run a
stateful model, the smoke app now runs all of a bundled program's test cases
in order on one loaded method, and split_bundled_program.py can repeat them so
single-case models still check a second execute. idf_component_consumer reuses
the smoke app's main component, so the two cannot drift apart.
setup.sh gains --idf-version and, unless --skip-emulator, installs QEMU when
esp32 is a target. The workflow now also runs for changes to what the component
vendors (runtime, the portable, quantized and prim op kernels, schema, the
buffer data loader and flat_tensor schema, codegen, the Cadence AOT and generic
kernels, the flatbuffers submodule and build_variables.bzl) and to version.txt.
Authored with Claude Code.