Releases: pytorch/executorch
Releases · pytorch/executorch
stable-2023-09-12
New models enabled (e2e tested via portable lib):
- MobileBert
Export API
- Two stage export API
- We are in the process of moving away from
exir.capture(): Please refer to this issue #290 for more details. Also look at the updated doc at https://github.com/pytorch/executorch/blob/stable/docs/website/docs/tutorials/exporting_to_executorch.md
- We are in the process of moving away from
exir.serialize- The
exir.serializemodule was renamed toexir._serializeand is now private
- The
transform()- For perform passes on the same dialect, use transform()
Runtime API
- Method
- Added
set_output_data_ptr(), which is a simpler and safer way to set the output buffers if they were not memory-planned Program::load_method()now accepts an optionalEventTracerparameter for non-global profiling and event data collection
- Added
Delegation API
backend.init()andbackend.execute()API changes.BackendInitContextis a new added argument forbackend.initandBackendExecutionContextis the new added argument forbackend.execute().- How to rebase on these apis changes?
- For backend.init, if
runtime_allocatoris not used, just mark context is not used with__ET_UNUSED. Otherwise,runtime_allocatorcan be accessed from the context. - For backend.execute, nothing has been added to
contextyet, just mark it with__ET_UNUSEDdirectly. We’ll add event tracer for profiling viacontextsoon.
- For backend.init, if
backend.preprocess()API changes- Updated backend.preprocess:
def preprocess( edge_program: ExportedProgram, compile_specs: List[CompileSpec], ) -> PreprocessResult
- How to rebase on this API changes?
- Wrap the result like
PreprocessResult(processed_bytes=bytes)
- Wrap the result like
- Updated backend.preprocess:
- Partitioner.partition API changes
- Updated Partition class definition. Move partition_tags from class attribute to be part of the
ParititionResult.def partition(self, graph_module: GraphModule) -> PartitionResult
- How to rebase on this API change?
- Wrap both
partition_tagsand thetagged_graphtogether asPartitionResult
- Wrap both
- Updated Partition class definition. Move partition_tags from class attribute to be part of the
- Example Quantizer and Delegate e2e demo
- Added an example to show to add a quantizer and have it working with delegate to fully delegated a quantized MobileNetV2 model to the example backend.
XnnpackDelegate
- In an effort to align better with the rest of the Executorch AoT stack, XnnpackDelegate added preliminary support to also handle graphs exported with the canonical capture config (i.e. CaptureConfig.enable_aot=True and CaptureConfig._unlift=False)
SDK
- DelegateMappingBuilder to generate debug handle mapping AOT for delegates
- BundledProgram enabled for usage with examples (more API changes to come in subsequent releases to improve usability, these will be breaking API changes)** **
- Documentation:
- Example code pointers:
Misc
- Linter enabled
pytestenabled. Rerunpip install .to installpytestand other deps- gtest enabled via buck, for example, run gtest for
runtime/core/tmp/buck2 test runtime/core/test/…
- Index operator rewrite:
- Fixed bug related to null indices.
- Implemented full Numpy’s advanced indexing functionality (now it is possible to use multidimensional indices, and masks that only index a subspace).
- Build/CMake
- CMake release build mode with size optimization flags. We have an example in
examples/selective_build/test_selective_build.sh
- CMake release build mode with size optimization flags. We have an example in
stable-2023-08-29
New models enabled (e2e tested via portable lib):
- Wav2Letter
- Inception V3 and Inception V4
- Resnet18 and Resnet50
Quantization:
- Enabled E2E MobileNet V2:
- Model can be quantized and run with portable + quantized op (for quantize/dequantize ops) lib.
Follow, https://github.com/pytorch/executorch/blob/main/examples/README.md#quantization, to run a quantized model via portable lib.
- Model can be quantized and run with portable + quantized op (for quantize/dequantize ops) lib.
- MobileNet V3:
- Needs bumping up the pytorch nightly version (dev20230828) in order to enable MobileNet V3 quantization. However, this breaks ViT export, hence this cut will skip MobileNet V3 quantization until we resolve ViT export breakage.
Delegation:
- API update:
- [breaking changes] delegate AOT APIs are moved from
executorch/backends/toexecutorch/exir/backend. To address the breakage: Updatefrom executorch.backends.backend_detailstofrom executorch.exir.backend.backend_details, andfrom executorch.backends.backend_apitofrom executorch.exir.backend.backend_api
- [breaking changes] delegate AOT APIs are moved from
- XNNPACK:
- XNNPACK delegated models can run on Mac/Linux in OSS
- XNNPACK lowering workflow examples have been added for MobileNet V2 (with quantization and delegation) and MobileNet V3 (with delegation)
- Showcase preliminary XNNPACK perf stats on Linux x86 & Mac M1
Selective build:
- Added buck2 examples to demonstrate 3 APIs to do selective build on any executorch runtime build
- Run test_selective_build.sh
stable-2023-08-15
- New models in example folder:
- Torchvision ViT. Run the example from
executorchdir:python3 -m examples.export.export_example --model_name="vit"buck2 run //examples/executor_runner:executor_runner -- --model_path vit.pte
- Torchvision ViT. Run the example from
- Quantization workflow example added and validated to work with MV2:
python3 -m examples.quantization.example --model_name mv2
- CMake build:
- executor_runner can be built via cmake. See cmake_build_system.md.
- Custom ops:
- Add examples to register custom ops into EXIR and Executorch runtime.
- Note: buck2 in test_custom_ops.sh should point to installed buck2 if it is not accessible in system’s PATH
stable-2023-08-01
Initial release to early users.