SmolVLA:在 Lerobot 社群資料上訓練的高效視覺-語言-動作模型
🧭TL;DR
今天,我們推出了 SmolVLA,這是一款緊湊(4.5 億引數)、開源的機器人視覺-語言-動作模型,可在消費級硬體上執行。
- 該模型僅使用在 lerobot 標籤下共享的相容許可的開源社群資料集進行預訓練。
- SmolVLA-450M 在模擬(LIBERO、Meta-World)和真實世界任務(SO100、SO101)上均優於更大的 VLA 和強大的基線模型,例如 ACT。
- 支援**非同步推理**,可實現**30% 更快的響應**和**2 倍的任務吞吐量**。
實用連結:
- 用於訓練和評估 SO-100/101 的硬體:https://github.com/TheRobotStudio/SO-ARM100
- 基礎模型:https://huggingface.co/lerobot/smolvla_base
- 論文:https://huggingface.co/papers/2506.01844
📚 目錄
引言
在過去的幾年裡,Transformer 推動了人工智慧的顯著進步,從能夠進行類人推理的語言模型到能夠理解影像和文字的多模態系統。然而,在現實世界的機器人領域,進展卻慢得多。機器人仍然難以泛化到不同的物體、環境和任務。這種有限的進展源於**缺乏高質量、多樣化的資料**,以及缺乏能夠在**物理世界中像人類一樣推理和行動**的模型。
為了應對這些挑戰,該領域最近轉向了**視覺-語言-動作 (VLA) 模型**,旨在將感知、語言理解和動作預測統一到單一架構中。VLA 通常接收原始視覺觀測和自然語言指令作為輸入,並輸出相應的機器人動作。儘管前景廣闊,但 VLA 的大部分最新進展仍然被專有模型所限制,這些模型在大型私有資料集上訓練,通常需要昂貴的硬體設定和大量的工程資源。因此,更廣泛的機器人研究社群在重現和構建這些模型方面面臨著巨大的障礙。
SmolVLA 彌補了這一空白,它提供了一個開源、緊湊且高效的 VLA 模型,該模型可以在**僅使用公開可用資料集的消費級硬體**上進行訓練。透過不僅釋出模型權重,還使用非常經濟實惠的開源硬體,SmolVLA 旨在普及視覺-語言-動作模型的訪問,並加速通用機器人代理的研究。
圖 1:SmolVLA 在任務變體中的比較。從左到右依次為:(1) 非同步抓取放置方塊計數,(2) 同步抓取放置方塊計數,(3) 擾動下的抓取放置方塊計數,以及 (4) 使用真實世界 SO101 抓取放置樂高積木的泛化能力。
認識 SmolVLA!
SmolVLA-450M 是我們開源的、緊湊而強大的 VLA 模型。它:
- 小到可以在 CPU 上執行,在單個消費級 GPU 甚至 MacBook 上訓練!
- 在公共、社群共享的機器人資料上訓練
- 釋出了完整的訓練和推理配方
- 可以在非常經濟的硬體上測試和部署(SO-100、SO-101、LeKiwi 等)
受大型語言模型 (LLM) 訓練正規化的啟發,SmolVLA 經歷了通用操作資料的預訓練階段,然後是任務特定的後訓練。在架構上,它將 Transformer 與**流匹配解碼器**結合起來,並透過以下設計選擇優化了速度和低延遲推理:
- 跳過一半視覺模型的層,以實現更快的推理和更小的尺寸
- 交錯自注意力塊和交叉注意力塊
- 使用更少的視覺標記
- 利用更小的預訓練 VLM
儘管訓練片段少於 3 萬個——比其他 VLA 少一個數量級——SmolVLA **匹配或超過了**更大模型在模擬和現實世界中的效能。
為了使即時機器人更容易使用,我們引入了非同步推理堆疊。這項技術將機器人執行動作的方式與它們理解所見所聞的方式分離開來。由於這種分離,機器人可以在快速變化的環境中更快地做出反應。
圖 2. SmolVLA 接收來自多個攝像頭的 RGB 影像序列、機器人當前的感知運動狀態以及自然語言指令作為輸入。VLM 將這些編碼為上下文特徵,這些特徵條件化動作專家以生成連續的動作序列。
🚀 如何使用 SmolVLA?
SmolVLA 的設計旨在易於使用和整合——無論您是在自己的資料上進行微調還是將其插入到現有的機器人堆疊中。
安裝
首先,安裝所需的依賴項
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[smolvla]"
微調預訓練模型
使用 smolvla_base
,我們的預訓練 450M 模型,與 lerobot 訓練框架結合使用
python lerobot/scripts/train.py \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=lerobot/svla_so100_stacking \
--batch_size=64 \
--steps=20000 # 10% of training budget
從頭開始訓練
如果您想從架構(預訓練 VLM + 動作專家)而非預訓練檢查點構建
python lerobot/scripts/train.py \
--policy.type=smolvla \
--dataset.repo_id=lerobot/svla_so100_stacking \
--batch_size=64 \
--steps=200000
您也可以直接載入 SmolVLAPolicy
from lerobot.common.policies.smolvla.modeling_smolvla import SmolVLAPolicy
policy = SmolVLAPolicy.from_pretrained("lerobot/smolvla_base")
方法
SmolVLA 不僅是一個輕量級但功能強大的模型,也是一種訓練和評估通用機器人策略的方法。在本節中,我們介紹了 SmolVLA 背後的*模型架構*以及用於評估的*非同步推理*設定,該設定已被證明更具適應性且能夠更快地恢復。
SmolVLA 由兩個核心元件組成:一個處理多模態輸入的**視覺-語言模型 (VLM)** 和一個輸出機器人控制命令的**動作專家**。下面,我們將分享 SmolVLA 架構主要元件和非同步推理的詳細資訊。更多詳情可在我們的技術報告中找到。
主要架構
視覺-語言模型 (VLM)
我們使用 SmolVLM2 作為 VLM 骨幹。它針對多影像輸入進行了最佳化,由 SigLIP 視覺編碼器和 SmolLM2 語言解碼器組成。
- **影像標記**透過視覺編碼器提取。
- **語言指令**被標記化並直接饋送到解碼器中。
- **感覺運動狀態**透過線性層投影成單個標記,以與語言模型的標記維度對齊。
解碼器層處理連線的影像、語言和狀態標記。然後將生成的特徵傳遞給動作專家。
動作專家:流匹配 Transformer
SmolVLA 的**動作專家**是一個緊湊型 Transformer(約 1 億引數),它根據 VLM 的輸出生成動作塊,即未來機器人動作的序列。它使用**流匹配目標**進行訓練,該目標教導模型將噪聲樣本引導回真實值。相比之下,雖然離散動作表示(例如,透過標記化)功能強大,但它們通常需要自迴歸解碼,這在推理時速度慢且效率低下。而流匹配則允許**直接、非自迴歸地預測連續動作**,從而實現高精度的即時控制。
更直觀地說,在訓練過程中,我們對機器人的真實動作序列新增隨機噪聲,並要求模型預測“校正向量”,將其帶回到正確的軌跡。這在動作空間上形成了一個平滑的向量場,幫助模型學習準確和穩定的控制策略。
我們透過採用**交錯注意力塊**的 Transformer 架構(參見圖 2)來實現這一點,並將其隱藏尺寸減小到 **VLM 的 75%**,以保持模型輕量化,便於部署。
效率和魯棒性設計選擇
將視覺-語言模型與動作預測模組相結合是最近 VLA 系統(如 Pi0、GR00T、Diffusion Policy)中的常見設計模式,我們確定了幾種顯著增強魯棒性和效能的架構選擇。在 SmolVLA 中,我們應用了三項關鍵技術:**減少視覺標記數量、跳過 VLM 中的上層**,以及在動作專家中**交錯使用交叉注意力和自注意力層**。
視覺標記縮減
高解析度影像可以改善感知,但會顯著減慢推理速度。為了取得平衡,**SmolVLA 在訓練和推理期間將每個幀的視覺標記數量限制為 64 個**。例如,一個 512×512 影像被壓縮成僅 64 個標記,**而不是 1024 個**,使用 **PixelShuffle** 作為一種高效的洗牌技術。雖然底層視覺-語言模型 (VLM) 最初使用影像平鋪進行預訓練以實現更廣泛的覆蓋,但 **SmolVLA 在執行時僅使用全域性影像**,以保持推理輕量和快速。
透過層跳躍實現更快的推理
我們不總是依賴 VLM 的最後一層——這可能成本高昂,有時也不是最優的——而是使用**中間層的特徵**。先前的工作表明,早期層通常為下游任務提供更好的表示。在 SmolVLA 中,動作專家在訓練期間僅關注 VLM 特徵,直到可配置的第 NN 層,該層設定為**總層數的一半**。這使得 VLM 和動作專家的**計算成本減半**,顯著加快了推理速度,同時效能損失最小。
交錯的交叉和自注意力
在動作專家內部,注意力層在以下兩者之間交替:
- **交叉注意力 (CA)**,其中動作標記關注 VLM 的特徵
- **自注意力 (SA)**,其中動作標記彼此關注(因果關係——僅關注過去)
我們發現這種**交錯設計**比使用完整注意力塊更輕量且更有效。僅依賴 CA 或僅依賴 SA 的模型往往會犧牲平滑性或基礎性。
在 SmolVLA 中,CA 確保動作與感知和指令良好地關聯,而 SA 改善了**時間平滑性**——這對於真實世界的控制尤其關鍵,因為不穩定的預測可能導致不安全或不穩定的行為。
非同步推理

圖 3. 非同步推理。非同步推理堆疊的圖示。請注意,策略可以在遠端伺服器上執行,可能帶有 GPU。
現代視覺運動策略輸出**動作塊**——要執行的動作序列。有兩種方法來管理它們:
- **同步 (sync):**機器人執行一個動作塊,然後暫停,等待下一個動作塊的計算。簡單,但會導致機器人無法對新輸入做出反應的延遲。
- **非同步 (async):**在執行當前動作塊的同時,機器人已經將最新觀測值傳送到**策略伺服器**(可能託管在 GPU 上)以計算下一個動作塊。這避免了空閒時間並提高了響應性。
我們的非同步堆疊將動作執行與動作塊預測解耦,從而實現了更高的適應性,並在執行時完全消除了執行延遲。它依賴於以下關鍵機制:
- **1. 提前觸發:**當佇列長度低於閾值(例如 70%)時,我們向**策略伺服器**傳送觀測值,請求新的動作塊。
- **2. 解耦執行緒:**控制迴圈持續執行 → 推理並行發生(非阻塞)。
- **3. 塊融合:**來自連續動作塊的重疊動作透過簡單的合併規則進行拼接,以避免抖動。
我們非常高興釋出非同步推理,因為它保證了更高的適應性和改進的效能,而無需更改模型。簡而言之,非同步推理透過重疊執行和遠端預測來保持機器人響應。
社群資料集
雖然視覺和語言模型在 LAION、ImageNet 和 Common Crawl 等網路規模資料集上表現出色,但機器人技術卻缺乏可比的資源。沒有“機器人網際網路”。相反,資料分散在不同的機器人型別、感測器、控制方案和格式之間——形成不相連的“資料孤島”。在我們之前的帖子中,我們探討了如何透過開放、協作的努力來解決這種碎片化問題。正如 ImageNet 透過提供大型、多樣化的基準資料集催生了計算機視覺領域的突破一樣,我們相信**社群驅動的機器人資料集**可以在通用機器人策略中發揮同樣的基礎性作用。
**SmolVLA 是我們實現這一願景的第一步**:它預訓練於精選的公開可用的、社群貢獻的資料集,這些資料集旨在反映真實世界的變化。我們不只最佳化資料集大小,而是側重於多樣性:各種行為、攝像機視角和形態,以促進遷移和泛化。
SmolVLA 中使用的所有訓練資料均來自 **LeRobot 社群資料集**,這些機器人資料集在 Hugging Face Hub 上以 `lerobot` 標籤共享。這些資料集在不同的環境中收集,從實驗室到客廳,代表了擴充套件真實世界機器人資料的一種開放、去中心化的努力。
圖 4. 社群資料集的一瞥。特別感謝 Ville Kuosmanen 製作此視覺化。與學術基準不同,社群資料集自然地捕捉了混亂、真實的互動:各種照明、次優演示、非常規物體和異構控制方案。這種多樣性對於學習魯棒的通用表示將非常有用。
我們使用由 Alexandre Chapin 和 Ville Kuosmanen 建立的自定義過濾工具,根據幀數、視覺質量和任務覆蓋範圍選擇資料集。經過細緻的手動審查(特別感謝 Marina Barannikov),我們整理了一系列**487 個高質量資料集**,重點關注 **SO100 機械臂**,並將其標準化為 **30 FPS**。這產生了大約**1000 萬幀**——至少**比其他流行的基準資料集小一個數量級**,但多樣性顯著更高。
改進任務註釋
社群資料集的一個常見問題是任務描述模糊或缺失。許多片段缺少註釋或包含模糊的標籤,如“task desc”或“Move”、“Pick”。為了提高質量並標準化資料集的文字輸入,我們使用 Qwen2.5-VL-3B-Instruct 生成簡潔、面向動作的描述。
給定樣本幀和原始標籤,模型被要求在 30 個字元以內重寫指令,並以動作動詞開頭(例如,“抓取”、“放置”、“開啟”)。
使用的提示是
Here is a current task description: {current_task}. Generate a very short, clear, and complete one-sentence describing the action performed by the robot arm (max 30 characters). Do not include unnecessary words.
Be concise.
Here are some examples: Pick up the cube and place it in the box, open the drawer and so on.
Start directly with an action verb like “Pick”, “Place”, “Open”, etc.
Similar to the provided examples, what is the main action done by the robot arm?
標準化相機檢視
另一個挑戰是相機命名不一致。有些資料集使用清晰的名稱,如 top 或 wrist.right
,而另一些則使用模糊的標籤,如 images.laptop
,其含義各不相同。為了解決這個問題,我們手動檢查了這些資料集,並將每個相機檢視對映到一個標準化方案:OBS_IMAGE_1
:俯檢視 OBS_IMAGE_2
:腕部安裝檢視 OBS_IMAGE_3+
:額外視角
我們進一步區分了社群資料集預訓練和多工微調的貢獻。在沒有 LeRobot 社群資料集預訓練的情況下,SmolVLA 最初在 SO100 上取得了 **51.7%** 的成功率。在社群收集的資料進行預訓練後,效能躍升至 **78.3%**,**絕對提升了 26.6%**。多工微調進一步提升了效能,即使在資料不足的情況下也表現出強大的任務遷移能力。

表 1. 社群資料集預訓練和多工微調的影響。
結果
我們評估了 SmolVLA 在模擬和真實世界基準測試中的泛化能力、效率和魯棒性。儘管它很緊湊,但它始終優於或匹配了在更大規模機器人資料上預訓練的更大模型和策略的效能。

表 2. SmolVLA 在模擬基準測試中的效能。

表 3. SmolVLA 與基準模型在真實世界任務(SO100)上的對比。
在實際應用中,SmolVLA 在兩個不同的套件上進行評估:SO100 和 SO101。這些任務包括抓取-放置、堆疊和排序,包含分佈內和分佈外物件配置。在 SO101 上,SmolVLA 在泛化方面也表現出色。

表 4. SmolVLA 對新實施(SO101)與 ACT 的泛化能力。
最後,我們評估了 SmolVLA 在同步和非同步推理模式下的表現。非同步推理將動作執行與模型推理解耦,允許策略在機器人移動時做出反應。
- 兩種模式的任務成功率相似(≈78%),但非同步推理
- 任務完成**快約 30%** (9.7s vs. 13.75s)
- 在固定時間設定下,可實現**2 倍的任務完成量**(19 個方塊 vs. 9 個方塊)
這帶來了更靈敏、更魯棒的真實世界效能,特別是在有移動物體或外部干擾的動態環境中。

圖 5. 真實世界任務中的非同步與同步推理。(a) 任務成功率 (%),(b) 平均完成時間 (s),以及 (c) 在固定時間視窗內完成的任務數量。
結論
SmolVLA 是我們為構建開放、高效且可復現的機器人基礎模型所做的貢獻。儘管尺寸小巧,但它在一系列真實世界和模擬任務中匹配甚至超越了更大、專有模型的效能。透過僅依賴社群貢獻的資料集和經濟實惠的硬體,SmolVLA 降低了研究人員、教育工作者和愛好者進入該領域的門檻。但這僅僅是個開始。SmolVLA 不僅僅是一個模型——它是向可擴充套件、協作式機器人技術邁進的日益壯大的開源運動的一部分。
行動號召:
- 🔧 **試一試!** 在您自己的資料上微調 SmolVLA,將其部署到經濟實惠的硬體上,或將其與您當前的堆疊進行基準測試,並在 Twitter/LinkedIn 上分享。
- 🤖 **上傳資料集!** 有機器人嗎?使用 lerobot 格式收集並分享您的資料。幫助擴充套件為 SmolVLA 提供支援的社群資料集。
- 💬 **加入部落格討論。** 在下面的討論中提出您的問題、想法或反饋。我們很樂意幫助整合、訓練或部署。
- 📊 **貢獻。** 改進資料集,報告問題,提出新想法。每一次貢獻都有幫助。
- 🌍 **傳播開來。** 與對高效、即時機器人策略感興趣的研究人員、開發人員或教育工作者分享 SmolVLA。
- 📫 **保持聯絡:** 關注 LeRobot 組織和 Discord 伺服器以獲取更新、教程和新版本。
攜手合作,我們可以讓現實世界的機器人更強大、更實惠、更開放。✨