LeRobot 文件

微調 SmolVLA

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

微調 SmolVLA

SmolVLA 是 Hugging Face 的輕量級機器人基礎模型。它專為在 LeRobot 資料集上輕鬆微調而設計,可幫助您加速開發!

SmolVLA architecture.
圖 1. SmolVLA 的輸入包括:(i) 多個攝像頭視角,(ii) 機器人當前的感官運動狀態,以及 (iii) 一條自然語言指令,這些輸入被編碼成上下文特徵,用於在生成動作塊時對動作專家進行條件化。

設定您的環境

  1. 請遵循我們的安裝指南來安裝 LeRobot。

  2. 執行以下命令安裝 SmolVLA 依賴項

    pip install -e ".[smolvla]"

收集資料集

SmolVLA 是一個基礎模型,因此需要在您自己的資料上進行微調,才能在您的設定中獲得最佳效能。我們建議錄製約 50 個任務片段作為起點。請遵循我們的指南開始操作:錄製資料集

在您的資料集中,請確保為您引入的每種變化(例如,如果是方塊拾取放置任務,則為方塊在桌子上的位置)提供足夠的演示。

我們建議您參考下面連結的資料集,該資料集曾在 SmolVLA 論文中使用過

🔗 SVLA SO100 PickPlace

在這個資料集中,我們記錄了 50 個片段,涵蓋 5 個不同的方塊位置。對於每個位置,我們收集了 10 個拾取和放置互動的片段。這種多次重複每種變化的結構有助於模型更好地泛化。我們嘗試過一個包含 25 個片段的類似資料集,但這並不足以支援良好效能。因此,資料的質量和數量絕對是關鍵。當您的資料集在 Hub 上可用後,您就可以使用我們的微調指令碼來使 SmolVLA 適應您的應用了。

在您的資料上微調 SmolVLA

使用 smolvla_base,這是我們預訓練的 4.5 億引數模型,並在您的資料上進行微調。在單張 A100 GPU 上,訓練模型 20k 步大約需要 4 小時。您應根據效能和您的用例來調整訓練步數。

如果您沒有 GPU 裝置,可以使用我們的 notebook 在 Google Colab 上進行訓練。

透過 --dataset.repo_id 將您的資料集傳遞給訓練指令碼。如果您想測試安裝是否成功,請執行以下命令,其中我們使用了為 SmolVLA 論文 收集的一個數據集。

cd lerobot && lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=${HF_USER}/mydataset \
  --batch_size=64 \
  --steps=20000 \
  --output_dir=outputs/train/my_smolvla \
  --job_name=my_smolvla_training \
  --policy.device=cuda \
  --wandb.enable=true
您可以從一個較小的批次大小開始,如果 GPU 允許,可以逐漸增加,只要載入時間保持較短即可。

微調是一門藝術。要全面瞭解微調的選項,請執行

lerobot-train --help

Comparison of SmolVLA across task variations.
圖 2:SmolVLA 在不同任務變化下的比較。從左到右:(1) 方塊拾取放置計數,(2) 方塊拾取放置計數,(3) 受干擾下的方塊拾取放置計數,以及 (4) 在真實世界 SO101 環境下對樂高積木拾取放置的泛化能力。

評估微調後的模型並即時執行

與錄製片段時類似,建議您登入到 HuggingFace Hub。您可以按照相應的步驟操作:錄製資料集。登入後,您可以透過以下命令在您的設定中執行推理

lerobot-record \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \ # <- Use your port
  --robot.id=my_blue_follower_arm \ # <- Use your robot id
  --robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30}}" \ # <- Use your cameras
  --dataset.single_task="Grasp a lego block and put it in the bin." \ # <- Use the same task description you used in your dataset recording
  --dataset.repo_id=${HF_USER}/eval_DATASET_NAME_test \  # <- This will be the dataset name on HF Hub
  --dataset.episode_time_s=50 \
  --dataset.num_episodes=10 \
  # <- Teleop optional if you want to teleoperate in between episodes \
  # --teleop.type=so100_leader \
  # --teleop.port=/dev/ttyACM0 \
  # --teleop.id=my_red_leader_arm \
  --policy.path=HF_USER/FINETUNE_MODEL_NAME # <- Use your fine-tuned model

根據您的評估設定,您可以配置為評估套件錄製的時長和片段數量。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.