{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/smolvla-a-vision-language-action-model-for","title":"SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics","arxiv_id":"2506.01844","date":"2025-06-02","proceeding":null,"authors":["Mustafa Shukor","Dana Aubakirova","Francesco Capuano","Pepijn Kooijmans","Steven Palma","Adil Zouitine","Michel Aractingi","Caroline Pascal","Martino Russi","Andres Marafioti","Simon Alibert","Matthieu Cord","Thomas Wolf","Remi Cadene"],"abstract":"Vision-language models (VLMs) pretrained on large-scale multimodal datasets encode rich visual and linguistic knowledge, making them a strong foundation for robotics. Rather than training robotic policies from scratch, recent approaches adapt VLMs into vision-language-action (VLA) models that enable natural language-driven perception and control. However, existing VLAs are typically massive--often with billions of parameters--leading to high training costs and limited real-world deployability. Moreover, they rely on academic and industrial datasets, overlooking the growing availability of community-collected data from affordable robotic platforms. In this work, we present SmolVLA, a small, efficient, and community-driven VLA that drastically reduces both training and inference costs, while retaining competitive performance. SmolVLA is designed to be trained on a single GPU and deployed on consumer-grade GPUs or even CPUs. To further improve responsiveness, we introduce an asynchronous inference stack decoupling perception and action prediction from action execution, allowing higher control rates with chunked action generation. Despite its compact size, SmolVLA achieves performance comparable to VLAs that are 10x larger. We evaluate SmolVLA on a range of both simulated as well as real-world robotic benchmarks and release all code, pretrained models, and training data.","url_abs":"https://arxiv.org/abs/2506.01844v1","url_pdf":"https://arxiv.org/pdf/2506.01844v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"smolvla-a-vision-language-action-model-for","repo_url":"https://github.com/huggingface/lerobot","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"action-generation","task_name":"Action Generation"},{"task_slug":null,"task_name":"GPU"},{"task_slug":"vision-language-action","task_name":"Vision-Language-Action"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2506.01844","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2506.01844"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/huggingface/lerobot","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":5},"by_repo_kind":{"official":{"samples":5,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":5,"samples":[{"code_sha256_prefix":"9dc6e043a1b98086","entry":"get_aggregate_function","repo":"huggingface/lerobot","repo_kind":"official","path":"src/lerobot/async_inference/configs.py","file_url":"https://github.com/huggingface/lerobot/blob/HEAD/src/lerobot/async_inference/configs.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"9dc6e043a1b98086"}},{"code_sha256_prefix":"c3cdbf0c52e04182","entry":"get_step_identifier","repo":"huggingface/lerobot","repo_kind":"official","path":"src/lerobot/common/train_utils.py","file_url":"https://github.com/huggingface/lerobot/blob/HEAD/src/lerobot/common/train_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"c3cdbf0c52e04182"}},{"code_sha256_prefix":"fb025da6ecb5026d","entry":"resize_robot_observation_image","repo":"huggingface/lerobot","repo_kind":"official","path":"src/lerobot/async_inference/helpers.py","file_url":"https://github.com/huggingface/lerobot/blob/HEAD/src/lerobot/async_inference/helpers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"fb025da6ecb5026d"}},{"code_sha256_prefix":"35fe71851ee25884","entry":"should_save_checkpoint","repo":"huggingface/lerobot","repo_kind":"official","path":"src/lerobot/common/train_utils.py","file_url":"https://github.com/huggingface/lerobot/blob/HEAD/src/lerobot/common/train_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"35fe71851ee25884"}},{"code_sha256_prefix":"f0d69a7d88e74675","entry":"teleop_supports_feedback","repo":"huggingface/lerobot","repo_kind":"official","path":"src/lerobot/common/control_utils.py","file_url":"https://github.com/huggingface/lerobot/blob/HEAD/src/lerobot/common/control_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"f0d69a7d88e74675"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}