# Edge AI on Arm: PyTorch and ExecuTorch rock-paper-scissors

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/training-inference-pytorch/)
- [Set up your environment](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/training-inference-pytorch/env-setup-1/)
- [Train and Test the rock-paper-scissors Model](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/training-inference-pytorch/fine-tune-2/)
- [Run the model on Corstone-320 FVP](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/training-inference-pytorch/fvp-3/)
- [Next Steps](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/training-inference-pytorch/_next-steps/)

## About this Learning Path

| Skill level:        | Introductory       |
|---------------------|--------------------|
| Reading time:       | 1 hr               |
| Last updated:       | 13 Aug 2026        |

| Author:             | Dominica Abena O. Amanfo |
|---------------------|--------------------------|
| Arm IP:             | [Cortex-M](https://support.arm.com/?tab=compute-ip&Product%20Type=Microcontrollers) [Ethos-U](https://support.arm.com/?tab=compute-ip&Product%20Type=Neural%20Processing%20Units) |
| Tags:               | ML, Linux, tinyML, Computer Vision, Edge AI, CNN, PyTorch, ExecuTorch |

### Who is this for?
This is an introductory topic for machine learning developers who want to deploy TinyML models on Arm-based edge devices using PyTorch and ExecuTorch.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Train a small Convolutional Neural Network (CNN) for image classification using PyTorch
- Use synthetic data generation for training a model when real data is limited
- Convert and optimize a PyTorch model to an ExecuTorch program (`.pte`) for Arm-based devices
- Run the trained model locally as an interactive mini-game to demonstrate inference

### Prerequisites
Before starting, you will need the following:
- Basic understanding of machine learning concepts
- Familiarity with Python and the PyTorch library
- Completion of the Learning Path [Introduction to TinyML on Arm using PyTorch and ExecuTorch](/learning-paths/embedded-and-microcontrollers/introduction-to-tinyml-on-arm/)
- An x86 Linux host machine or VM running Ubuntu 22.04 or later

### Summary
You’ll build a rock-paper-scissors prototype with PyTorch and ExecuTorch on Arm. First, you’ll create a lightweight image-classification CNN, train it, export a `.pte` program, and run the command-line mini-game. Then, you’ll compile the model with the Ahead-of-Time Arm compiler and run it on the Corstone-320 Fixed Virtual Platform with Ethos-U delegation.

### Frequently asked questions

<details>
<summary>Where should I put the rock–paper–scissors script before training?</summary>
Place the script in the ExecuTorch repository under the Arm examples directory at `\$HOME/executorch/examples/arm`.
</details>

<details>
<summary>How do I launch the mini‑game after training?</summary>
Run the script with the play option. The mini‑game uses the best weights found on disk.
</details>

<details>
<summary>How do I know the export to ExecuTorch worked?</summary>
A successful export produces a `.pte` file. Check that the file is created in the expected location after running the export step.
</details>

<details>
<summary>Do I need a dataset or camera for training?</summary>
You don’t need an external dataset or camera because you’ll use synthetic data generation for training. The model learns to classify images of the letters R, P, and S.
</details>

<details>
<summary>Which log messages confirm that the model starts on the Corstone-320 FVP?</summary>
Check the FVP output for the model loading and `Running method forward` messages. An `EthosUBackend.cpp` initialization message confirms that the Ethos-U backend starts during inference.
</details>
