LeRobot documentation

SmolVLA

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SmolVLA

SmolVLA는 Hugging Face의 경량 로봇용 foundation model입니다. LeRobot 데이터셋에서 손쉽게 fine-tuning할 수 있도록 설계되어 개발 속도를 높이는 데 도움이 됩니다!

SmolVLA architecture.
그림 1. SmolVLA는 (i) 여러 카메라 뷰, (ii) 로봇의 현재 감각 운동 상태, (iii) 자연어 지시를 입력으로 받아 이를 컨텍스트 특징으로 인코딩한 뒤, 액션 청크를 생성할 때 액션 전문가를 조건화하는 데 사용합니다.

환경 설정

  1. LeRobot은 설치 가이드를 참고하여 설치하세요.

  2. 다음 명령을 실행하여 SmolVLA의 종속성을 설치합니다:

    pip install -e ".[smolvla]"

데이터셋 수집

SmolVLA는 베이스 모델이므로, 사용자의 환경에서 최적의 성능을 얻으려면 자체 데이터로 파인튜닝이 필요합니다. 시작점으로 해당 작업의 에피소드를 약 50개 녹화하는 것을 권장합니다. 시작하는 방법은 다음 가이드를 참고하세요: 데이터셋 녹화

데이터셋에서 도입하는 각 변형(예: 큐브 pick-place 작업인 경우 테이블 위 큐브의 위치)에 대해 충분한 데모가 있는지 확인하세요.

SmolVLA 논문에서 참고용으로 사용된 아래 링크의 데이터셋을 확인해 보시는 것을 권장합니다:

🔗 SVLA SO100 PickPlace

finetuning 스크립트

SmolVLA를 사용자 데이터로 Fine-tuning

450M 사전 학습 모델인 smolvla_base를 사용하고, 사용자 데이터로 파인튜닝하세요. 모델을 20k 스텝으로 학습하면 단일 A100 GPU에서 약 4시간이 소요됩니다. 성능과 사용 사례에 따라 스텝 수를 조정해야 합니다.

gpu 장치가 없다면 Google Colab의 노트북을 사용하여 학습할 수 있습니다.

--dataset.repo_id를 사용하여 데이터셋을 학습 스크립트에 전달합니다. 설치를 테스트하려면 SmolVLA Paper을 위해 수집한 데이터셋 중 하나를 사용하는 아래 명령을 실행하세요. 자신의 데이터로 fine-tuning을 수행하려면 해당 데이터셋을 자신의 데이터셋으로 교체하세요.

lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=lerobot/svla_so100_pickplace \
  --policy.repo_id=${HF_USER}/my_smolvla \
  --rename_map='{"observation.images.top": "observation.images.camera1", "observation.images.wrist": "observation.images.camera2"}' \
  --batch_size=64 \
  --steps=20000 \
  --output_dir=outputs/train/my_smolvla \
  --job_name=my_smolvla_training \
  --policy.device=cuda \
  --trackio.enable=true
  • --policy.repo_id는 파인튜닝된 모델이 푸시되는 Hub 저장소입니다.
  • --rename_map은 데이터셋의 카메라 이름을 smolvla_base가 기대하는 camera1, camera2, camera3 이름으로 매핑합니다. 이 옵션이 없으면 기능 불일치 오류로 인해 학습이 중단됩니다. 자신의 카메라 이름을 동일한 방식으로 매핑하십시오(Rename Map 참조).
You can start with a small batch size and increase it incrementally, if the GPU allows it, as long as loading times remain short.

Fine-tuning은 예술과도 같습니다. Fine-tuning 옵션에 대한 전체적인 개요를 보려면 다음을 실행하세요

lerobot-train --help

Comparison of SmolVLA across task variations.
그림 2: 작업 변형에 따른 SmolVLA 비교. 왼쪽부터: (1) pick-place 큐브 카운팅, (2) pick-place 큐브 카운팅, (3) 교란 조건에서의 pick-place 큐브 카운팅, (4) 실제 SO101을 사용한 레고 블록 pick-and-place 일반화.

파인튜닝된 모델을 평가하고 실시간으로 실행

에피소드를 기록할 때도 HuggingFace Hub에 로그인해 두는 것이 좋습니다. 데이터셋 기록의 해당 단계를 따라 진행하세요. 로그인한 후, 다음과 같이 설정에서 추론을 실행할 수 있습니다:

lerobot-rollout \
  --strategy.type=base \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_blue_follower_arm \
  --robot.cameras="{ top: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}}" \
  --rename_map='{"observation.images.top": "observation.images.camera1", "observation.images.wrist": "observation.images.camera2"}' \
  --task="Grasp a lego block and put it in the bin." \
  --policy.path=${HF_USER}/FINETUNE_MODEL_NAME

--robot.port, --robot.id, --robot.cameras, --policy.path를 각각 사용자의 포트, 로봇 ID, 카메라(데이터셋과 동일한 카메라 이름 및 해상도), fine-tuned 모델로 대체하세요. 학습 시 사용한 --rename_map와 데이터셋 기록 시 사용한 --task 설명을 동일하게 전달하세요.

위 명령에 추가할 수 있는 선택적 플래그:

  • RTC(추론이 느린 경우, 예: 저전력 하드웨어에서 더 부드러운 동작): --inference.type=rtc --inference.rtc.execution_horizon=10 --inference.rtc.max_guidance_weight=10.0
  • 카메라 스트림 보기: --display_data=true
  • 자동으로 중지: --duration=60 (초 단위). 기본적으로 정책은 Ctrl+C를 누를 때까지 실행됩니다.

에피소드 간 씬을 재설정하기 위한 선택적 텔레오퍼레이터를 사용하여 평가 에피소드를 기록하려면 --strategy.type=episodic을 대신 사용하세요. 모든 전략에 대한 내용은 정책 배포를 참조하세요.

Update on GitHub