Convert SmolVLA to ExecuTorch for inference on Arm CPUs
Who is this for?
This is an advanced topic for machine learning developers who want to export a vision-language-action model to ExecuTorch for inference on an Arm CPU.
What will you learn?
Upon completion of this Learning Path, you will be able to:
- Export SmolVLA from PyTorch to ExecuTorch, and lower the model to run on Arm CPU using the XNNPACK backend.
- Run the FP32 ExecuTorch model on Arm CPU and validate its output against the PyTorch model.
- Export a model to ExecuTorch with eligible linear weights quantized to INT8.
- Compare outputs and latency between the FP32 and INT8 models running on the Arm CPU.
Prerequisites
Before starting, you will need the following:
- An AArch64 Ubuntu system with at least 20 GB of free storage. This Learning Path was tested on NVIDIA’s DGX Spark
- Familiarity with Python, PyTorch, and the Linux command-line
Summary
This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
.pte sizes.Frequently asked questions
These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
python scripts/prepare_inputs.py and python scripts/validate_pte.py. Confirm that the output reports Accuracy gate passed and points to the FP32 validation report.artifacts/fp32 when you use the default configuration. To change the location, set SMOLVLA_ARTIFACTS_DIR to an absolute path and use the same location for the FP32 benchmark.--input-suite, or set the SMOLVLA_INPUT_SUITE environment variable to use it.[8/8] Native accuracy gate passed. The script stores the artifacts in artifacts/int8. Use --output-dir to choose another location../scripts/run_runner.sh, then run python scripts/validate_runner.py. Confirm that the output says Native split orchestrator output matches the full PyTorch reference.