(user-pathways)= # Find Your Path in ExecuTorch **ExecuTorch** serves a wide range of users — from ML engineers taking their first steps in on-device inference, to embedded systems developers targeting bare-metal microcontrollers, to researchers pushing the boundaries of LLM deployment. This page helps you navigate directly to the content most relevant to your experience level, goals, and target platform. --- ## Step 1: What best describes your experience? ::::{grid} 3 :gutter: 3 :::{grid-item-card} 🟢 New to ExecuTorch :class-header: bg-success text-white :link: pathway-beginner :link-type: doc **Beginner** You are familiar with PyTorch but have not yet deployed a model to an edge device. You want a clear, guided path from installation to your first on-device inference. +++ → **Beginner Pathway** ::: :::{grid-item-card} 🟡 I know the basics :class-header: bg-warning text-dark :link: pathway-quickstart :link-type: doc **Quick Start** You have some experience with model export or mobile ML, and want to get a model running as fast as possible without reading through every concept first. +++ → **Quick Start Pathway** ::: :::{grid-item-card} 🔴 Experienced / Production :class-header: bg-danger text-white :link: pathway-advanced :link-type: doc **Advanced** You are building production systems, integrating custom backends, optimizing for constrained hardware, or working with LLMs on edge devices. +++ → **Advanced Pathway** ::: :::: --- ## Step 2: What is your primary goal? Use the decision matrix below to jump directly to the most relevant section based on your goal and target platform. ```{list-table} ExecuTorch Decision Matrix :header-rows: 1 :widths: 25 20 20 20 15 * - **Goal** - **Android** - **iOS / macOS** - **Desktop / Server** - **Embedded / MCU** * - Run a pre-exported model quickly - {doc}`android-section` - {doc}`ios-section` - {doc}`getting-started` - {doc}`embedded-section` * - Export my own PyTorch model - {doc}`using-executorch-export` - {doc}`using-executorch-export` - {doc}`getting-started` - {doc}`using-executorch-export` * - Deploy an LLM (Llama, Phi, etc.) - {doc}`llm/llama` - {doc}`llm/run-on-ios` - {doc}`llm/working-with-llms` - — * - Use hardware acceleration (NPU/GPU) - {doc}`android-qualcomm` - {doc}`ios-coreml` - {doc}`desktop-backends` - {doc}`embedded-backends` * - Integrate a custom backend delegate - {doc}`backend-development` - {doc}`backend-development` - {doc}`backend-development` - {doc}`backend-development` * - Profile and debug my model - {doc}`devtools-tutorial` - {doc}`devtools-tutorial` - {doc}`devtools-tutorial` - {doc}`devtools-tutorial` * - Build from source - {doc}`using-executorch-building-from-source` - {doc}`using-executorch-building-from-source` - {doc}`using-executorch-building-from-source` - {doc}`using-executorch-building-from-source` ``` --- ## Step 3: What is your role? Different roles have different entry points into ExecuTorch. Select the one that best matches your background. ::::{grid} 2 :gutter: 3 :::{grid-item-card} 🤖 ML Engineer :class-header: bg-primary text-white You work primarily in Python, train models with PyTorch, and want to deploy them efficiently to edge devices. **Start here:** - {doc}`getting-started` — Installation and first export - {doc}`using-executorch-export` — Model export and lowering - {doc}`backends-overview` — Choose the right backend - {doc}`quantization` — Reduce model size and latency ::: :::{grid-item-card} 📱 Mobile Developer :class-header: bg-primary text-white You build Android or iOS applications and need to integrate an on-device ML model into your app. **Start here:** - {doc}`android-section` — Android integration guide - {doc}`ios-section` — iOS integration guide - {doc}`getting-started` — Export a model for your platform - {doc}`using-executorch-android` — Full Android API reference ::: :::{grid-item-card} ⚙️ Backend / Systems Developer :class-header: bg-primary text-white You are implementing a hardware backend, writing C++ runtime integrations, or contributing to ExecuTorch internals. **Start here:** - {doc}`backend-development` — Backend delegate development - {doc}`backend-delegates-integration` — Integrating a backend - {doc}`running-a-model-cpp-tutorial` — C++ runtime APIs - {doc}`new-contributor-guide` — Contributing to ExecuTorch ::: :::{grid-item-card} 🔌 Embedded Developer :class-header: bg-primary text-white You target microcontrollers, DSPs, or other resource-constrained hardware where memory and compute are tightly limited. **Start here:** - {doc}`embedded-section` — Embedded platforms overview - {doc}`embedded-backends` — Available embedded backends - {doc}`portable-cpp-programming` — Portable C++ for constrained devices - {doc}`pico2_tutorial` — MNIST on Raspberry Pi Pico2 ::: :::: --- ## Step 4: What is your model's status? The right workflow depends on whether you are starting from scratch, using a supported model, or working with a custom architecture. ```{list-table} Model Status Routing :header-rows: 1 :widths: 30 70 * - **Model Status** - **Recommended Path** * - Using a supported LLM (Llama, Phi, Qwen, SmolLM) - Use the {doc}`llm/export-llm` script for a streamlined export with quantization and optimization built in. Pre-exported models are also available on `HuggingFace ExecuTorch Community `_. * - Using a HuggingFace model - Use {doc}`llm/export-llm-optimum` (Optimum ExecuTorch) for broad HuggingFace model support with familiar APIs. * - Using a custom PyTorch model - Follow {doc}`getting-started` for the standard export flow, then consult {doc}`using-executorch-export` for advanced lowering options. * - Model requires dynamic shapes - See the dynamic shapes section in {doc}`using-executorch-export` and the {doc}`export-overview` for constraints. * - Model uses unsupported operators - Consult {doc}`kernel-library-custom-aten-kernel` to register custom kernels, or {doc}`compiler-custom-compiler-passes` for graph-level transformations. * - Pre-exported `.pte` file available - Skip export entirely and go directly to {doc}`getting-started` (Running on Device section) or your platform guide. ``` --- ## Not sure where to start? If you are completely new to ExecuTorch, the recommended entry point is the **{doc}`getting-started`** guide, which walks through installation, exporting a MobileNet V2 model, and running inference in under 15 minutes. For a high-level conceptual overview before diving into code, read {doc}`intro-overview` and {doc}`intro-how-it-works`. ```{toctree} :hidden: :maxdepth: 1 :caption: User Pathways pathway-beginner pathway-quickstart pathway-advanced ```