English

SmolVLA

A compact, efficient, and powerful vision-language-action model for modern robotics.

🚀 Meet SmolVLA

SmolVLA is a groundbreaking Vision-Language-Action (VLA) model with only 450 million parameters, developed by Hugging Face. It's carefully designed for cost-effective deployment on consumer-grade hardware, making advanced robotics technology accessible to more developers and enthusiasts.

Trained on the open community LeRobot dataset, SmolVLA truly embodies the power of open-source collaboration, with performance that matches or exceeds larger proprietary models.

📌 Core Features

Compact and Efficient Architecture

Combines a streamlined SmolVLM-2 vision-language model with a Flow-Matching Transformer action expert for unparalleled efficiency.

Asynchronous Inference

Achieves real-time response by decoupling action prediction from execution, reducing task completion time by approximately 30% on average.

Open and Community-Driven

Fully trained on publicly available LeRobot community datasets on Hugging Face and released as open source, encouraging widespread use and research.

Exceptional Performance

Excels in simulation environments like LIBERO and Meta-World, achieving approximately 78.3% average success rate in real-world tasks.

🎬 Demo Videos

Watch SmolVLA in action as it performs various tasks that showcase its capabilities in real-world environments.

SmolVLA Overview

Community DIY Robot Video

Official Research Paper

For an in-depth look at the technical details, read the official research paper. It provides comprehensive information on model architecture, training methodology, and performance benchmarks.

🛠️ Quick Start Guide

📋 Model Overview

SmolVLA is a 450M parameter vision-language-action model designed for affordable and efficient robotics. It's optimized to run on consumer hardware while maintaining competitive performance.

Parameters: 450M
Downloads: 15,383+ last month
Fine-tuned models: 29 models

1. Environment Setup

Before proceeding, you need to properly install the environment by following the Installation Guide on the docs.

git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[smolvla]"

2. Load Pre-trained Model

The fastest way to experience SmolVLA is to directly load the pre-trained model from Hugging Face.

from lerobot.common.policies.smolvla.modeling_smolvla import SmolVLAPolicy
policy = SmolVLAPolicy.from_pretrained("lerobot/smolvla_base")

3. Fine-tuning the Pre-trained Model

Fine-tune SmolVLA on your specific dataset for better task performance. This example uses the SO101 pick-place dataset.

python lerobot/scripts/train.py \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=lerobot/svla_so101_pickplace \
  --batch_size=64 \
  --steps=20000 \
  --output_dir=outputs/train/my_smolvla \
  --job_name=my_smolvla_training \
  --policy.device=cuda \
  --wandb.enable=true

4. Training from Scratch

Train SmolVLA neural network with pretrained VLM and action expert initialized from scratch.

python lerobot/scripts/train.py \
  --dataset.repo_id=lerobot/svla_so101_pickplace \
  --batch_size=64 \
  --steps=200000 \
  --output_dir=outputs/train/my_smolvla \
  --job_name=my_smolvla_training \
  --policy.device=cuda \
  --wandb.enable=true

🗂️ Dataset Information

SmolVLA is trained on community-contributed datasets. The svla_so101_pickplace dataset contains:

📊 Additional Resources

🤝 Community Fine-tuned Models

Discover amazing applications built by the community! These 29 fine-tuned models showcase the versatility of SmolVLA across various robotic tasks.

📊 Training Dataset Explorer

Explore the svla_so101_pickplace dataset used to train SmolVLA. This interactive viewer shows real robotic demonstrations.

💡 Tip: Use the dataset viewer to understand the action sequences, camera angles, and robot states that SmolVLA learns from.

🌐 Resources & Community

Join us in advancing open, affordable, and efficient robotics. We welcome contributions of data, code improvements, or sharing your projects.

❓ Frequently Asked Questions

Answers to common questions about using SmolVLA with LeRobot robotic arms.

What objects can I use for training? Does size matter? Can I use a cuboid?
There's no strict spec — any object that fits your gripper and is clearly visible to the cameras works. Tutorials often use a small cube (roughly 2–4 cm) with the SO-100/SO-101 arm, and cuboids or other shapes are fine too. The key is consistency: use the same object during data collection and inference, and record data with varied positions and orientations so the policy generalizes better.
Can I use SmolVLA without a wrist (gripper) camera?
Yes. SmolVLA adapts to whatever cameras you record your dataset with, so a single fixed external camera can work. That said, a wrist camera usually improves grasping precision because it gives a close-up view of the object during manipulation. Whatever setup you choose, keep the camera configuration identical between training and inference.
Where can I find 3D-printable (STL) files, e.g. for a camera mount?
The SO-100/SO-101 arms used with LeRobot are open hardware — the printable STL/CAD files live in the SO-ARM100 repository on GitHub (TheRobotStudio). Community-made camera mounts are often shared on Printables/Thingiverse. Check the LeRobot hardware documentation for the current links.
Can I run a trained policy on a Raspberry Pi / edge device?
SmolVLA is lightweight (about 450M parameters) and runs on modest hardware, but real-time inference on a Raspberry Pi CPU alone will be slow. The recommended pattern is SmolVLA's asynchronous inference, which separates action prediction from execution so the policy can run on a more capable machine (even remotely) while the robot executes smoothly. For real-time on-device control, a small GPU/accelerator is preferable.
How do I just “run/execute” a trained policy without recording data?
In LeRobot you run a trained policy through the evaluation/inference script and simply don't keep the dataset. The record loop is reused because it handles robot control; you can point the output at a throwaway directory (or delete it afterwards), or use the dedicated eval/inference command. Check the current LeRobot documentation for the exact command name, since the CLI changes between versions.
What technical level do I need? Is it copy-paste-and-run?
For the standard SO-100/SO-101 workflow it's largely “follow the commands” — you don't need deep ML coding to fine-tune or run the provided scripts. You do need basic comfort with Python and the command line, plus patience for assembling and calibrating the hardware and resolving driver/USB issues. No custom model code is required to get started.
If the cube must be in the same position, why use AI instead of replaying a fixed trajectory?
A fixed trajectory only works when everything is in exactly the same place every time and can't adapt. A learned VLA policy uses camera input to handle varying object positions, orientations and lighting, and can follow different language instructions. Tutorials sometimes fix the position just to keep a first demo simple — the real value of SmolVLA is generalization, which you unlock by training on varied data.