Add model card for smolVLA
Browse files
README.md
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
library_name: pytorch
|
| 3 |
+
license: apache-2.0
|
| 4 |
+
tags:
|
| 5 |
+
- foundation
|
| 6 |
+
- amd
|
| 7 |
+
- rocm
|
| 8 |
+
- robotics
|
| 9 |
+
pipeline_tag: robotics
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+

|
| 13 |
+
|
| 14 |
+
# SmolVLA: Optimized for AMD ROCm
|
| 15 |
+
|
| 16 |
+
SmolVLA (vision-language-action) is a behavior-cloning policy from Hugging Face LeRobot for 6-DOF robot arm control. This repository packages inference for robot arm action prediction using **PyTorch**, exported and validated for **AMD ROCm** so it runs efficiently on AMD GPUs and CPUs.
|
| 17 |
+
|
| 18 |
+
This is based on the implementation of SmolVLA found [here](https://huggingface.co/lerobot/smolvla_base).
|
| 19 |
+
This repository contains configurations and scripts optimized for **AMD® ROCm™** platforms. You can use the [smolVLA AMD scripts](https://github.com/AMD-PAVS/physical_ai_sdk/blob/main/models/smolVLA) to reproduce results or export with custom configurations. More details on model performance can be found [here](#accuracy-pipeline).
|
| 20 |
+
|
| 21 |
+
---
|
| 22 |
+
|
| 23 |
+
## Task Overview
|
| 24 |
+
|
| 25 |
+
**Task:** Robot arm action prediction (vision-language-action)
|
| 26 |
+
|
| 27 |
+
**Dataset:** BlankHead/so101_redcube_greencloth_3cams (LeRobot format)
|
| 28 |
+
|
| 29 |
+
**Output metrics:** MAE, RMSE (per-joint and per-episode)
|
| 30 |
+
|
| 31 |
+
> **PyTorch note:** CPU runs FP32; GPU runs BF16. No NPU (VitisAI) path is available — `make setup-npu`, `make benchmark-npu`, and `make evaluate-npu` print an informational note and exit cleanly.
|
| 32 |
+
|
| 33 |
+
---
|
| 34 |
+
|
| 35 |
+
## AMD ROCm Optimization
|
| 36 |
+
|
| 37 |
+
This model export has been adapted and validated for **AMD Instinct™ / Radeon™ GPUs** running **ROCm**, as well as AMD CPUs. Key points:
|
| 38 |
+
|
| 39 |
+
- Validated backend: **PyTorch** (native ROCm HIP kernels), FP32 on CPU, BF16 on GPU.
|
| 40 |
+
- No code changes required versus the upstream SmolVLA implementation — only environment/runtime configuration differs.
|
| 41 |
+
- No NPU (VitisAI) fallback path is available for this model.
|
| 42 |
+
|
| 43 |
+
| Runtime | Precision | Backend | Hardware | Notes |
|
| 44 |
+
|---|---|---|---|---|
|
| 45 |
+
| PyTorch | FP32 | HIP (ROCm) | AMD CPU | — |
|
| 46 |
+
| PyTorch | BF16 | HIP (ROCm) | AMD Instinct™ / Radeon™ GPU | No NPU path available |
|
| 47 |
+
|
| 48 |
+
---
|
| 49 |
+
|
| 50 |
+
## Getting Started
|
| 51 |
+
|
| 52 |
+
For setup instructions, evaluation scripts, and custom configuration options, see the [smolVLA on GitHub](https://github.com/AMD-PAVS/physical_ai_sdk/blob/main/models/smolVLA).
|
| 53 |
+
|
| 54 |
+
---
|
| 55 |
+
|
| 56 |
+
## Model Details
|
| 57 |
+
|
| 58 |
+
**Model Type:** Vision-language-action policy for robot arm control
|
| 59 |
+
|
| 60 |
+
**Base Model:** `lerobot/smolvla_base`
|
| 61 |
+
|
| 62 |
+
**Model Stats:**
|
| 63 |
+
- Precision tested: FP32 (CPU), BF16 (GPU)
|
| 64 |
+
- Configurable runtime knobs: `rtc_config.enabled` (Real-Time Chunking), `num_steps` (flow-matching denoising passes per chunk), `n_action_steps` (actions consumed per chunk)
|
| 65 |
+
|
| 66 |
+
---
|
| 67 |
+
|
| 68 |
+
## Accuracy Pipeline
|
| 69 |
+
|
| 70 |
+
Open-loop offline evaluation is fully implemented: `make evaluate-<device>` runs inference on recorded dataset episodes and computes per-joint and per-episode MAE / RMSE against the recorded ground-truth actions. Lower is better for both metrics.
|
| 71 |
+
|
| 72 |
+
### Metrics Explained
|
| 73 |
+
|
| 74 |
+
| Metric | Description |
|
| 75 |
+
|--------|-------------|
|
| 76 |
+
| MAE | Mean Absolute Error — average absolute difference between predicted and ground-truth joint positions across all timesteps. Lower is better. |
|
| 77 |
+
| RMSE | Root Mean Squared Error — penalizes large deviations more heavily than MAE. Lower is better. |
|
| 78 |
+
|
| 79 |
+
### Accuracy Results
|
| 80 |
+
|
| 81 |
+
**Published Results** — Dataset: `BlankHead/so101_redcube_greencloth_3cams` (13 episodes, chunked_rtc mode):
|
| 82 |
+
|
| 83 |
+
<!-- accuracy-table-start -->
|
| 84 |
+
| Metric | Value |
|
| 85 |
+
|--------|-------|
|
| 86 |
+
| Average MAE | 3.9521 |
|
| 87 |
+
| Average RMSE | 7.7251 |
|
| 88 |
+
<!-- accuracy-table-end -->
|
| 89 |
+
|
| 90 |
+
**Per-joint breakdown:**
|
| 91 |
+
|
| 92 |
+
| Joint | Avg MAE | Avg RMSE |
|
| 93 |
+
|-------|---------|----------|
|
| 94 |
+
| shoulder_pan | 3.3654 | 5.1317 |
|
| 95 |
+
| shoulder_lift | 7.8224 | 14.0630 |
|
| 96 |
+
| elbow_flex | 4.9989 | 8.7409 |
|
| 97 |
+
| wrist_flex | 2.4138 | 3.4653 |
|
| 98 |
+
| wrist_roll | 2.6728 | 3.9475 |
|
| 99 |
+
| gripper | 2.4394 | 4.5340 |
|
| 100 |
+
|
| 101 |
+
---
|
| 102 |
+
|
| 103 |
+
## Dig Deeper
|
| 104 |
+
|
| 105 |
+
Want to explore the full evaluation scripts, config options, and other AMD-optimized model examples?
|
| 106 |
+
|
| 107 |
+
📂 **[View the full project on GitHub](https://github.com/AMD-PAVS/physical_ai_sdk/blob/main/models/smolVLA)**
|
| 108 |
+
|
| 109 |
+
The GitHub repository includes:
|
| 110 |
+
- Setup and prerequisites for ROCm environments
|
| 111 |
+
- Open-loop dataset evaluation with trajectory plots and comparison videos
|
| 112 |
+
- Latency benchmarking with Chrome trace output
|
| 113 |
+
- PEFT/LoRA-aware checkpoint loading and runtime chunking configuration
|