LeRobot documentation
SmolVLA
SmolVLA
SmolVLA는 Hugging Face의 경량 로봇용 foundation model입니다. LeRobot 데이터셋에서 손쉽게 fine-tuning할 수 있도록 설계되어 개발 속도를 높이는 데 도움이 됩니다!
그림 1. SmolVLA는 (i) 여러 카메라 뷰, (ii) 로봇의 현재 감각 운동 상태, (iii) 자연어 지시를 입력으로 받아 이를 컨텍스트 특징으로 인코딩한 뒤, 액션 청크를 생성할 때 액션 전문가를 조건화하는 데 사용합니다.
환경 설정
LeRobot은 설치 가이드를 참고하여 설치하세요.
다음 명령을 실행하여 SmolVLA의 종속성을 설치합니다:
pip install -e ".[smolvla]"
데이터셋 수집
SmolVLA는 베이스 모델이므로, 사용자의 환경에서 최적의 성능을 얻으려면 자체 데이터로 파인튜닝이 필요합니다. 시작점으로 해당 작업의 에피소드를 약 50개 녹화하는 것을 권장합니다. 시작하는 방법은 다음 가이드를 참고하세요: 데이터셋 녹화
데이터셋에서 도입하는 각 변형(예: 큐브 pick-place 작업인 경우 테이블 위 큐브의 위치)에 대해 충분한 데모가 있는지 확인하세요.
SmolVLA 논문에서 참고용으로 사용된 아래 링크의 데이터셋을 확인해 보시는 것을 권장합니다:
finetuning 스크립트
SmolVLA를 사용자 데이터로 Fine-tuning
450M 사전 학습 모델인 smolvla_base를 사용하고, 사용자 데이터로 파인튜닝하세요.
모델을 20k 스텝으로 학습하면 단일 A100 GPU에서 약 4시간이 소요됩니다. 성능과 사용 사례에 따라 스텝 수를 조정해야 합니다.
gpu 장치가 없다면 의 노트북을 사용하여 학습할 수 있습니다.
--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
그림 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을 대신 사용하세요. 모든 전략에 대한 내용은 정책 배포를 참조하세요.