--- library_name: physicalai-train tags: - robotics-ai-suite - physical-ai - "category:action-policies-vla" - "chipset:ptl" license: apache-2.0 base_model: - HuggingFaceVLA/smolvla_libero title: "SmolVLA" subtitle: "Lightweight vision-language-action model for edge deployment" category: "Physical AI" model_type: - "Imitation Learning" primary_type: "Vision Language Action" secondary_types: - Robotics related_models: - act-fp16-ov-catalog - pi05-libero-fp16-ov-catalog key_novelty: "Lightweight vision-language-action model targeting single-GPU training and edge deployment that maps camera images, robot state, and a language instruction to an executable chunk of actions." thumbnail: assets/thumbnail.png image_overview: assets/architecture-overview.svg image_detailed: assets/architecture-detailed.svg code: "https://github.com/openvinotoolkit/physicalai" --- # SmolVLA That's a lightweight vision-language-action model, which targets single-GPU training and edge deployment use cases. The original implementations can be found [here](https://huggingface.co/papers/2506.01844). The model takes images from one or multiple cameras, robot state, and language instruction and produces a chunk of actions, which robot can execute as a sequence of movements in real world. The model weights are converted from the official [HF repo](https://huggingface.co/HuggingFaceVLA/smolvla_libero) and can be directly applied in the [LIBERO](https://github.com/Lifelong-Robot-Learning/LIBERO) virtual benchmark environment. To fine-tune your model with a custom dataset, you can use [Physical AI Studio](https://github.com/open-edge-platform/physical-ai-studio). # How to Use ## Running Inference with [OpenVINO Physical AI framework](https://github.com/openvinotoolkit/physicalai). ### Installation ```bash uv pip install physicalai numpy ``` The following API example showcases inference API for this model: ```python import numpy as np from physicalai.inference import InferenceModel model = InferenceModel("smolvla-libero-fp16-ov", device="CPU") # Build a dummy LIBERO-style observation. # LIBERO provides two cameras (agentview + wrist) and an 8-dim robot state. # Images use the LeRobot convention: float32 in [0, 1], shape (C, H, W). observation = { "images.image": np.random.rand(1, 3, 256, 256).astype(np.float32), "images.image2": np.random.rand(1, 3, 256, 256).astype(np.float32), "state": np.zeros((1, 8), dtype=np.float32), "task": ["sample task description"], } chunk = model.predict_action_chunk(observation) ``` ## Running Accuracy Evaluation on LIBERO ### Installation ```bash uv pip install physicalai-train[libero,smolvla] ``` The following API example demonstrates how to run the model on LIBERO: ```python from physicalai.benchmark import LiberoBenchmark from physicalai.inference import InferenceModel model = InferenceModel("smolvla-libero-fp16-ov", device="CPU") benchmark = LiberoBenchmark( task_suite="libero_10", video_dir="fail_videos" ) results = benchmark.evaluate(model) ``` Note that the model should be downloaded and saved to the `smolvla-libero-fp16-ov` folder prior to running this script. ## Legal information The original model is distributed under [Apache 2.0](https://choosealicense.com/licenses/apache-2.0/) license. ## Disclaimer Intel is committed to respecting human rights and avoiding causing or contributing to adverse impacts on human rights. See [Intel’s Global Human Rights Principles](https://www.intel.com/content/dam/www/central-libraries/us/en/documents/policy-human-rights.pdf). Intel’s products and software are intended only to be used in applications that do not cause or contribute to adverse impacts on human rights.