LeRobot 文件
微調 SmolVLA
並獲得增強的文件體驗
開始使用
微調 SmolVLA
SmolVLA 是 Hugging Face 的輕量級機器人基礎模型。它專為在 LeRobot 資料集上輕鬆微調而設計,可幫助您加速開發!
圖 1. SmolVLA 的輸入包括:(i) 多個攝像頭視角,(ii) 機器人當前的感官運動狀態,以及 (iii) 一條自然語言指令,這些輸入被編碼成上下文特徵,用於在生成動作塊時對動作專家進行條件化。
設定您的環境
請遵循我們的安裝指南來安裝 LeRobot。
執行以下命令安裝 SmolVLA 依賴項
pip install -e ".[smolvla]"
收集資料集
SmolVLA 是一個基礎模型,因此需要在您自己的資料上進行微調,才能在您的設定中獲得最佳效能。我們建議錄製約 50 個任務片段作為起點。請遵循我們的指南開始操作:錄製資料集
在您的資料集中,請確保為您引入的每種變化(例如,如果是方塊拾取放置任務,則為方塊在桌子上的位置)提供足夠的演示。
我們建議您參考下面連結的資料集,該資料集曾在 SmolVLA 論文中使用過
在這個資料集中,我們記錄了 50 個片段,涵蓋 5 個不同的方塊位置。對於每個位置,我們收集了 10 個拾取和放置互動的片段。這種多次重複每種變化的結構有助於模型更好地泛化。我們嘗試過一個包含 25 個片段的類似資料集,但這並不足以支援良好效能。因此,資料的質量和數量絕對是關鍵。當您的資料集在 Hub 上可用後,您就可以使用我們的微調指令碼來使 SmolVLA 適應您的應用了。
在您的資料上微調 SmolVLA
使用 smolvla_base
,這是我們預訓練的 4.5 億引數模型,並在您的資料上進行微調。在單張 A100 GPU 上,訓練模型 20k 步大約需要 4 小時。您應根據效能和您的用例來調整訓練步數。
如果您沒有 GPU 裝置,可以使用我們的 notebook 在 上進行訓練。
透過 --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
微調是一門藝術。要全面瞭解微調的選項,請執行
lerobot-train --help
圖 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 上更新