- Notifications
You must be signed in to change notification settings - Fork497
On-device AI across mobile, embedded and edge for PyTorch
License
pytorch/executorch
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
ExecuTorch is an end-to-end solution for on-device inference and training. It powers much of Meta's on-device AI experiences across Facebook, Instagram, Meta Quest, Ray-Ban Meta Smart Glasses, WhatsApp, and more.
It supports a wide range of models including LLMs (Large Language Models), CV (Computer Vision), ASR (Automatic Speech Recognition), and TTS (Text to Speech).
Platform Support:
Operating Systems:
- iOS
- Mac
- Android
- Linux
- Microcontrollers
Hardware Acceleration:
- Apple
- Arm
- Cadence
- MediaTek
- OpenVINO
- Qualcomm
- Vulkan
- XNNPACK
Key value propositions of ExecuTorch are:
- Portability: Compatibility with a wide variety of computing platforms,from high-end mobile phones to highly constrained embedded systems andmicrocontrollers.
- Productivity: Enabling developers to use the same toolchains and DeveloperTools from PyTorch model authoring and conversion, to debugging and deploymentto a wide variety of platforms.
- Performance: Providing end users with a seamless and high-performanceexperience due to a lightweight runtime and utilizing full hardwarecapabilities such as CPUs, NPUs, and DSPs.
To get started you can:
- Visit theStep by Step Tutorial on getting things running locally and deploy a model to a device
- Use thisColab Notebook to start playing around right away
- Jump straight into LLMs use cases by following specific instructions forLlama andLlava
We welcome any feedback, suggestions, and bug reports from the community to helpus improve our technology. Check out theDiscussion Board or chat real time with us onDiscord
We welcome contributions. To get started review theguidelines and chat with us onDiscord
executorch├── backends # Backend delegate implementations.├── codegen # Tooling to autogenerate bindings between kernels and the runtime.├── configurations├── docs # Static docs tooling.├── examples # Examples of various user flows, such as model export, delegates, and runtime execution.├── exir # Ahead-of-time library: model capture and lowering APIs.| ├── _serialize # Serialize final export artifact.| ├── backend # Backend delegate ahead of time APIs| ├── capture # Program capture.| ├── dialects # Op sets for various dialects in the export process.| ├── emit # Conversion from ExportedProgram to ExecuTorch execution instructions.| ├── operator # Operator node manipulation utilities.| ├── passes # Built-in compiler passes.| ├── program # Export artifacts.| ├── serde # Graph module serialization/deserialization.| ├── verification # IR verification.├── extension # Extensions built on top of the runtime.| ├── android # ExecuTorch wrappers for Android apps.| ├── apple # ExecuTorch wrappers for iOS apps.| ├── aten_util # Converts to and from PyTorch ATen types.| ├── data_loader # 1st party data loader implementations.| ├── evalue_util # Helpers for working with EValue objects.| ├── gguf_util # Tools to convert from the GGUF format.| ├── kernel_util # Helpers for registering kernels.| ├── memory_allocator # 1st party memory allocator implementations.| ├── module # A simplified C++ wrapper for the runtime.| ├── parallel # C++ threadpool integration.| ├── pybindings # Python API for executorch runtime.| ├── pytree # C++ and Python flattening and unflattening lib for pytrees.| ├── runner_util # Helpers for writing C++ PTE-execution tools.| ├── testing_util # Helpers for writing C++ tests.| ├── training # Experimental libraries for on-device training├── kernels # 1st party kernel implementations.| ├── aten| ├── optimized| ├── portable # Reference implementations of ATen operators.| ├── prim_ops # Special ops used in executorch runtime for control flow and symbolic primitives.| ├── quantized├── profiler # Utilities for profiling runtime execution.├── runtime # Core C++ runtime.| ├── backend # Backend delegate runtime APIs.| ├── core # Core structures used across all levels of the runtime.| ├── executor # Model loading, initialization, and execution.| ├── kernel # Kernel registration and management.| ├── platform # Layer between architecture specific code and portable C++.├── schema # ExecuTorch PTE file format flatbuffer schemas.├── scripts # Utility scripts for building libs, size management, dependency management, etc.├── tools # Development tool management.├── devtools # Model profiling, debugging, and introspection.├── shim # Compatibility layer between OSS and Internal builds├── test # Broad scoped end-to-end tests.├── third-party # Third-party dependencies.├── util # Various helpers and scripts.
ExecuTorch is BSD licensed, as found in the LICENSE file.
About
On-device AI across mobile, embedded and edge for PyTorch