Downloads · 30 days
11
33% of all-time downloads
shraavb/smolvla-jetbot
smolvla-jetbot is a robotics model from shraavb. Use it for the robotics task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as apache-2.0.
A lightweight Vision-Language-Action (VLA) model fine-tuned for controlling JetBot, an NVIDIA Jetson Nano-based differential-drive robot. This model takes camera images and natural language instructions as input and o…
Downloads · 30 days
11
33% of all-time downloads
All-time downloads
33
Public
Repo size
1.1 MB
Likes
0
Public
Click a slice to open those files.
.pt1.1 MB · 99%
From the Hugging Face model README
A lightweight Vision-Language-Action (VLA) model fine-tuned for controlling JetBot, an NVIDIA Jetson Nano-based differential-drive robot. This model takes camera images and natural language instructions as input and outputs motor commands for robot navigation.
SmolVLA-JetBot is designed to bring VLA capabilities to resource-constrained edge devices. It uses a frozen SmolVLM-500M backbone with a custom trainable action head that maps vision-language representations to motor commands.
Base Model: HuggingFaceTB/SmolVLM-500M-Instruct (Frozen)
├── Vision Encoder: SigLIP-400M
├── Language Model: SmolLM-360M
└── Hidden Size: 960
Action Head (Trainable, ~123K parameters):
├── Linear(960 → 128)
├── ReLU + Dropout(0.1)
├── Linear(128 → 2)
└── Tanh → outputs in [-1, 1]
Output: [left_motor_speed, right_motor_speed]
Total Parameters: ~500M (frozen backbone) + 123K (trainable action head)
Memory Footprint: ~1.5GB (vs ~15GB for full OpenVLA models)
The model responds to natural language navigation commands such as:
| Dataset | Samples | Description |
|---|---|---|
| dataset_vla | 10,000 | Primary training data from Isaac Sim with domain randomization |
| dataset_vla_synthetic | 1,000 | Initial synthetic data |
| dataset_vla_synthetic_large | 2,000 | Extended synthetic data |
| dataset_turn_right_10k | 10,000 | Focused on right-turn instructions (~23% right-turn commands) |
Instruction Distribution:
| Hyperparameter | Value |
|---|---|
| Optimizer | AdamW |
| Learning Rate | 5e-5 |
| Weight Decay | 0.01 |
| Batch Size | 2-16 |
| Epochs | 5-20 |
| Warmup | 10% of steps |
| Scheduler | OneCycleLR |
| Loss Function | MSE |
| Gradient Clipping | 1.0 |
| Precision | FP16 (mixed precision) |
Hardware: NVIDIA RTX 4090, 16GB+ VRAM
Training Time: ~2-4 hours for 20 epochs
python -m server.vla_server.fine_tuning.train_smolvla \
--data-dir dataset_vla \
--output-dir models/smolvla_jetbot \
--epochs 20 \
--batch-size 2 \
--lr 5e-5
| Instruction | Avg Left | Avg Right | R-L Diff | Assessment |
|---|---|---|---|---|
| go forward | 0.85 | 0.94 | +0.09 | ✅ Correct |
| turn left | 0.57 | 0.92 | +0.35 | ✅ Correct |
| turn right | 0.64 | 0.95 | +0.31 | ❌ Incorrect (turns left) |
| go towards red ball | 0.86 | 0.45 | -0.41 | ✅ Correct |
Overall Accuracy: 75% (3/4 correct)
Best Validation Loss: 0.0394
pip install transformers torch pillow
from transformers import AutoProcessor, AutoModel
import torch
from PIL import Image
# Load model and processor
processor = AutoProcessor.from_pretrained("HuggingFaceTB/SmolVLM-500M-Instruct")
base_model = AutoModel.from_pretrained("HuggingFaceTB/SmolVLM-500M-Instruct")
# Load fine-tuned action head
action_head = torch.load("path/to/action_head.pt")
# Prepare inputs
image = Image.open("camera_image.jpg")
instruction = "go forward"
inputs = processor(
images=image,
text=f"<image>\n{instruction}",
return_tensors="pt"
)
# Get hidden states
with torch.no_grad():
outputs = base_model(**inputs, output_hidden_states=True)
hidden_states = outputs.hidden_states[-1][:, -1, :] # Last token
# Get motor commands
actions = action_head(hidden_states)
left_speed, right_speed = actions[0].tolist()
print(f"Left motor: {left_speed:.3f}, Right motor: {right_speed:.3f}")
# Start the inference server
python -m server.vla_server.server \
--model-type smolvla \
--fine-tuned \
--model models/smolvla_jetbot/best
# The server accepts ZMQ requests with images and instructions
If you use this model, please cite:
@misc{smolvla-jetbot,
author = {shraavb},
title = {SmolVLA-JetBot: Lightweight Vision-Language-Action Model for Robot Navigation},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/shraavb/smolvla-jetbot}
}
For questions, issues, or contributions, please open an issue on the model repository or contact the developer.