
SmolVLA는 단일 24GB 카드에서 미세 조정할 수 있는 4억 5천만 개의 파라미터를 가진 VLA입니다. 실제 lerobot 0.6.1 명령어, 실제 기본값, 하루를 낭비하게 만드는 함정, 그리고 실행 비용에 대해 다룹니다.
한 화면으로 보는 SmolVLA
- •4억 5천만 개의 매개변수 중 약 1억 개가 플로우 매칭 액션 전문가입니다. lerobot은 이 전문가만 훈련하고 VLM은 고정된 상태로 유지하므로 단일 카드에 적합합니다.
- •LeRobot의 컴퓨팅 가이드에 따르면 smolvla 그룹은 AdamW를 사용하여 배치 8에서 약 10~16GB의 최대 VRAM을 필요로 합니다. 따라서 24GB가 필요합니다.
- •진입점은 lerobot-train입니다. 2025년 6월 SmolVLA 블로그 게시물에는 더 이상 존재하지 않는 경로인 python lerobot/scripts/train.py가 여전히 인쇄되어 있습니다. 아래의 모든 내용은 lerobot 0.6.1 기준입니다.
- •코사인 스케줄은 30000 스텝에 걸쳐 감쇠하도록 미리 설정되어 있습니다. lerobot 0.6.1은 더 짧은 실행을 위해 이를 축소하고 기록하지만, 결코 늘리지는 않습니다. 기본 100000 스텝 실행은 70000 스텝 동안 2.5e-6 바닥에서 끝납니다.
- •30개 에피소드는 AY-Robots의 최소 요구 사항이며, 24GB 티어에서는 실행당 1~3 USD가 소요되는 반면 80GB 모델은 4~12 USD가 소요됩니다.
실제 로봇 팔에 시각 언어 액션 모델을 원하는 대부분의 사람들은 하드웨어 단계에서 멈춥니다. GR00T N1.7과 Pi0.5은 각각 약 30억 개의 매개변수를 가지며 A100 80GB 또는 H100을 필요로 합니다. RTX 4090이 장착된 게이밍 PC를 소유하고 있다면 거기서 끝입니다. SmolVLA은 예외입니다. LeRobot 내부에 4억 5천만 개의 매개변수를 가지며, 단일 소비자 카드에서 미세 조정하고 CPU에서 서비스하도록 구축되었습니다.
수동 경로 먼저: lerobot을 설치하고, lerobot/smolvla_base 체크포인트를 가져와 실제 명령을 실행하고, 실행되는 동안 내용을 읽습니다. 다음은 플랫폼 경로이며, 이 경로가 도움이 되지 않는 부분입니다.
확인 가능한 숫자로 보는 SmolVLA
SmolVLA는 플로우 매칭 정책을 소형 비전 언어 모델에 결합한 것입니다. 백본은 SmolVLM2-500M-Video-Instruct입니다. 이 논문은 언어 모델의 첫 16개 레이어만 사용하고, 각 카메라 프레임을 이미지 타일링 대신 픽셀 셔플을 사용하여 64개의 시각 토큰으로 제한하며, 매 두 번째 블록마다 교차 어텐션과 자체 어텐션 레이어를 교차 배치합니다. 추론 비용은 나중에 고려된 것이 아니라 설계 제약 사항이었습니다.
| 속성 | 값 | 출처 |
|---|---|---|
| 총 파라미터 수 | about 450 M | paper |
| 액션 전문가 | about 100 M, flow matching | paper |
| VLM 백본 | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| 사용된 VLM 레이어 | first 16 of the language model | num_vlm_layers = 16 |
| 프레임당 시각 토큰 | 64, pixel shuffle, no tiling | paper |
| 사전 학습 | 481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUs | paper |
벤치마크는 사람들이 450M 모델에 관심을 갖는 이유입니다. LIBERO에서 7B OpenVLA의 76.5%와 3.3B 로봇 사전 학습 Pi0의 86.0%에 비해 평균 87.3%를 기록했습니다. Meta-World에서는 47.9%에 비해 57.3%를 기록했습니다. 실제 SO-100 하드웨어에서 다중 작업 학습은 픽 앤 플레이스에서 75%, 스태킹에서 90%, 정렬에서 70%를 달성하여 평균 78.3%를 기록했으며, ACT는 작업별로 학습된 모델이 평균 48.3%를 기록했습니다. 동일한 행들이 SmolVLA 아레나 항목 및 ACT 대 SmolVLA 비교의 모든 공개된 VLA 옆에 있습니다.
SmolVLA가 모든 면에서 3B 모델보다 우수한 것은 아닙니다. 논문 자체의 SO-101 표가 이를 보여줍니다: 사전 학습되지 않은 플랫폼에서 분포 내 성공률은 90%이지만, 분포 외 성공률은 50%입니다. SmolVLA가 주장하고 뒷받침하는 바는 Pi0에 비해 약 40% 더 빠르게 학습되며 6배 적은 메모리를 사용한다는 것입니다.
24GB 카드가 첫 실행에 적합한 이유
LeRobot은 컴퓨팅 크기 조정 가이드를 제공하며, 이는 이 저장소에서 가장 유용한 페이지입니다. 이 가이드는 백본 크기별로 정책을 그룹화하고, lerobot 기본값인 AdamW를 사용하여 배치 크기 8에서 측정된 그룹당 하나의 VRAM 엔벨로프를 제공합니다. 옵티마이저 상태만으로도 순방향 및 역방향 패스에 비해 30~100%가 추가되므로, 이는 가중치만의 수치가 아닙니다.
| 그룹 | 정책 | 최대 VRAM (배치 8, AdamW) | 시작용 GPU |
|---|---|---|---|
| 경량 BC | act, vqbet, tdmpc | about 2 to 6 GB | RTX 3060, L4 |
| 확산 | diffusion, multi_task_dit | about 8 to 14 GB | RTX 4070+, L4 |
| 소형 VLA | smolvla | about 10 to 16 GB | RTX 4080+, L4, A10G |
| 대형 VLA | pi0, pi0_fast, pi05, xvla, wall_x | about 24 to 40 GB | A100 40 GB+ |
| 멀티모달 | groot, eo1 | about 24 to 40 GB | A100 40 GB+ |
배치 8에서 10~16GB가 필요하다는 것이 핵심입니다. 24GB 카드는 이 요구사항과 데이터 로더를 모두 충족합니다. AY-Robots는 SmolVLA를 RTX 4090 또는 모든 24GB 카드에 최소 30 에피소드, LeRobot v3.0 데이터, 액션 스텝당 245ms. 임대 시 시간당 0.30~0.60 USD로 2~5시간, 즉 미세 조정 실행당 약 1~3 USD가 소요되며, GR00T 및 Pi0.5에 필요한 80GB 티어에서는 4~12 USD가 소요됩니다 (가격). SmolVLA 실행 실패는 커피 한 잔 값이고, GR00T 실행 실패는 점심 한 끼 값입니다.

- 이미 소유하고 있을 수 있는 하드웨어에 적합합니다: 배치 8에서 대략 10~16GB.
- 낭비된 실행은 몇 시간과 한 자릿수 달러가 들기 때문에 데이터셋에 대해 잘못 판단해도 괜찮습니다.
- lerobot 태그로 공유된 커뮤니티 데이터셋으로 사전 훈련되었으며, 실제 SO-100 및 SO-101 결과가 있습니다.
- lerobot 자체에 있습니다: 공급업체 저장소가 없으며, smolvla_base는 제한되지 않습니다.
- 450M은 여전히 450M입니다: 논문의 SO-101 표에서 분포 외 성공률이 90%에서 50%로 떨어집니다.
- LeRobot v3.0 데이터가 필요합니다; v2.1 녹화는 변환되어야 합니다 (데이터셋 거부 v3).
- 액션 단계당 245ms는 유능한 픽앤플레이스 컨트롤러이지 반응형 컨트롤러가 아닙니다.
- 문서 예제는 A100에서 배치 64를 실행합니다; 24GB에서는 배치 크기를 벽시계 시간과 맞바꿔야 합니다.
단계 0: 데이터셋이 실행을 결정하며, 플래그가 아닙니다
녹화가 좋지 않으면 아래 내용은 아무것도 중요하지 않습니다. LeRobot SmolVLA 페이지는 단호하게 말합니다: 참조 데이터셋은 5가지 큐브 위치에 걸쳐 50개의 에피소드였고, 각 위치당 10개였으며, 25개의 에피소드로 수행된 동일한 작업은 제대로 작동하지 않았습니다. 변형당 반복은 일반화되지만, 원시 에피소드 수는 그렇지 않습니다. 한 번도 녹화해 본 적이 없으신가요? 첫 데이터셋 녹화하기를 사용하여 시작하거나, 데스크톱 클라이언트를 사용하여 원격 조작 세션에서 LeRobot 형식을 작성하거나, 데이터셋 디렉토리에서 빌려오세요.
- AY-Robots에서 최소 30개 에피소드, LeRobot 참조 레시피의 경우 약 50개.
- 롤아웃 시 예상되는 모든 변형을 여러 번 반복합니다.
- 기록 및 롤아웃 시 동일하게 철자된 하나의 작업 문자열. 모델은 해당 텍스트에 따라 조건화됩니다.
- 고정된 카메라. 기록과 롤아웃 사이에 카메라가 움직인 것이 깨끗한 손실 곡선이 움직이지 않는 팔을 제공하는 가장 흔한 이유입니다.
- 훈련하지 않은 보류된 변형이므로, 정직하게 테스트할 수 있는 것이 있습니다.
SmolVLA, Pi0.5 및 ACT는 LeRobot v3.0을 원합니다. GR00T N1.7 및 N1.5는 v2.0 또는 v2.1을 원하며, v3.0에서는 로더가 충돌합니다. 한 번 기록하고 나중에 모델을 비교할 계획이라면, 어떤 식으로든 변환해야 합니다: 데이터셋이 v3를 거부함.
# v2.1 -> v3.0: aggregates per-episode files into shards and writes the episode offsets
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=${HF_USER}/so100_pick_place자세한 내용은 고품질 VLA 훈련 데이터 수집 방법. 요약하자면: 의도적인 변형을 포함한 하나의 작업에 대한 30~50개의 깨끗한 에피소드가, 어떤 하이퍼파라미터로도 좁힐 수 없는 차이로 세 가지 작업에 대한 200개의 부실한 에피소드를 능가합니다.
lerobot 0.6.1 설치
# LeRobot needs Python 3.12 or newer as of 0.6.x
conda create -y -n lerobot python=3.12
conda activate lerobot
# TorchCodec decodes the dataset videos and wants ffmpeg
conda install ffmpeg -c conda-forge
# Base package is deliberately thin; extras pull the rest
pip install 'lerobot[smolvla,training,core_scripts]'
# Sanity check: prints the lerobot version, the GPU torch sees, and the console scripts you got
lerobot-info기본 lerobot 설치는 가볍고 무거운 의존성들은 추가 기능 뒤에 숨겨져 있습니다: smolvla는 transformers, num2words 및 accelerate를 추가하고, training는 데이터셋 스택과 wandb를, core_scripts는 하드웨어 및 시각화 의존성을 추가합니다. Linux에서는 설치 경로가 CUDA 휠도 결정합니다: PyPI 기본값은 드라이버 최소 버전이 580.65인 cu130 휠이므로, 이전 드라이버에서는 cu128 인덱스에서 torch를 먼저 설치한 다음 lerobot을 설치하세요.
--policy.path=lerobot/smolvla_base는 사전 훈련된 450 M 체크포인트를 로드하고 미세 조정합니다. --policy.type=smolvla는 새로운 SmolVLA를 구축하며, 구성 기본값 load_vlm_weights = False는 요청하지 않는 한 SmolVLM2 백본 가중치를 가져오지 않는다는 의미입니다. 잘못 설정하면 실행은 잘 되지만, 비용은 동일하게 들고, 전이 가능한 것은 아무것도 학습하지 못합니다.
학습 실행, 명령어별로
- 1Hub에 인증
기본 체크포인트는 Hub에서 가져오며, 데이터셋도 마찬가지일 것입니다.
bashhf auth login - 2옵션을 한 번 읽어보기
파이프라인 및 정책 구성의 모든 필드는 플래그입니다. 소스 코드를 자세히 살펴보기 전에 한 번 훑어보세요.
bashlerobot-train --help - 3미세 조정 시작
문서 예제는 단일 A100에서 배치 64를 실행합니다. 컴퓨팅 가이드의 A100 40GB 기준은 배치 16이며, 8은 24GB에 해당합니다. 의도적으로 스케줄러 플래그가 없으며, 아래를 참조하세요.
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=${HF_USER}/so100_pick_place \ --batch_size=8 \ --steps=20000 \ --save_freq=2000 \ --log_freq=200 \ --seed=1000 \ --output_dir=outputs/train/smolvla_pick_place \ --job_name=smolvla_pick_place \ --policy.device=cuda \ --wandb.enable=true - 4손실뿐만 아니라 로그 라인 읽기
매 --log_freq 단계마다 lerobot은 loss, grdn, lr, updt_s, data_s, smp/s를 출력하며, CUDA에서는 mem_gb도 출력합니다. mem_gb는 배치가 맞는지, lr은 스케줄이 감소하는지, 그리고 data_s가 updt_s에 가까워진다는 것은 데이터 로더가 병목 현상이며 GPU가 아님을 의미합니다.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5비교할 수 있는 체크포인트 수집
save_freq는 기본값이 20000이므로, 20000단계 실행은 하나의 체크포인트만 남기고 비교할 것이 없습니다. 2000으로 설정하세요. Hub에 푸시하려면 --policy.repo_id가 필요합니다.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6머신이 중단되면 재개
체크포인트 옆의 train_config.json을 --config_path로 지정하세요. lerobot은 재개하는 경우가 아니면 기존 output_dir로 시작하는 것을 거부하므로, 실수로 실행을 덮어쓸 수 없습니다.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
실제로 결과에 영향을 미치는 플래그
| 플래그 | 기능 | 24GB에서 |
|---|---|---|
| --batch_size | 단계당 샘플 수, VRAM에 대략 선형적 | 4에서 8 |
| --steps | 총 옵티마이저 단계 | 첫 번째 시도 20000 |
| --policy.scheduler_decay_steps | 코사인 감쇠 길이, 사전 설정 30000 | 30000 이상에서만 적용 |
| --policy.use_amp | 혼합 정밀도; SmolVLA에는 dtype 필드가 없음 | 메모리가 부족할 때 true |
| --num_workers | 데이터 로더 프로세스, 기본값 4 | data_s가 더 이상 증가하지 않을 때까지 올림 |
| --dataset.eval_split | 작업당 보류된 에피소드 비율 | 0.1, --eval_steps와 함께 |
| --policy.freeze_vision_encoder | 비전 타워를 고정 상태로 유지 | 24GB에서 true |
| --policy.train_expert_only | 약 1억 개의 전문가만 그래디언트를 받음 | 처음에는 true |
SmolVLA는 코사인 스케줄을 미리 설정합니다: scheduler_warmup_steps = 1000, scheduler_decay_steps = 30000, scheduler_decay_lr = 2.5e-6. 이전 조언에 따르면 20000 스텝 실행은 감쇠 중간에 멈춥니다. 0.6.1에서는 그렇지 않습니다: CosineDecayWithWarmupSchedulerConfig.build()는 --steps를 전달받고, num_decay_steps 아래에서 워밍업 1000을 666으로, 감쇠 30000을 20000으로 모두 재조정하며, 이 과정에서 Auto-scaling LR scheduler를 출력합니다. 위쪽으로 재조정하는 경우는 없습니다: 감쇠는 min(current_step, decay_steps)로 고정되므로, 기본 --steps=100000는 30000 스텝부터 끝까지, 실행의 70% 동안 바닥에 머무릅니다. 이 긴 부분만 여전히 --policy.scheduler_decay_steps가 필요합니다. lr 열에서 확인할 수 있습니다.
아무것도 건드리지 않으면 상속받는 기본값
A 정책 config in lerobot carries its own optimizer and scheduler preset, and unless you set use_policy_training_preset=false those presets win. Half the questions people ask about SmolVLA training are answered by a default they did not know existed.
| 설정 | lerobot 0.6.1의 기본값 | 정의 위치 |
|---|---|---|
| 청크 크기 / 액션 스텝 수 | 50 / 50 | SmolVLAConfig |
| 스텝 수 (플로우 매칭 노이즈 제거) | 10 | SmolVLAConfig |
| 옵티마이저 학습률 | 1e-4 | SmolVLAConfig |
| 스케줄러 웜업 스텝 수 | 1000 | SmolVLAConfig |
| 스케줄러 감쇠 스텝 수 | 30000 | SmolVLAConfig |
| 스케줄러 감쇠 학습률 | 2.5e-6 | SmolVLAConfig |
| 비전 인코더 고정 | true | SmolVLAConfig |
| 전문가만 훈련 | true | SmolVLAConfig |
| 배치 크기 / 스텝 수 | 8 / 100000 | TrainPipelineConfig |
| 시드 / 저장 빈도 / 워커 수 | 1000 / 20000 / 4 | TrainPipelineConfig |
사람들을 놀라게 하는 두 가지 설정은 freeze_vision_encoder 및 train_expert_only, 둘 다 true입니다. 기본 설정으로는 450 M가 아닌 약 100 M 파라미터를 훈련하므로 24 GB에 적합합니다. LeRobot의 자체 H100 4-GPU 클러스터 참조 실행에서는 둘 다 false로 전환합니다. 24 GB 카드 하나에서는 작동하던 실행이 로 바뀝니다.
메모리 제약이 있을 때 가이드의 조언은 배치 크기를 줄이고 그래디언트 누적을 사용하여 유효 배치 크기를 복구하는 것입니다. lerobot 0.6.1에는 그래디언트 누적이 없습니다. TrainPipelineConfig에는 그러한 필드가 없으며 해당 문자열은 릴리스된 패키지 어디에도 나타나지 않습니다. AY-Robots 폼은 SmolVLA에 대해 8의 그래디언트 누적 값을 보여주지만, 이를 적용하지도 않습니다. 24 GB에서 사용할 수 있는 레버는 --batch_size, 두 가지 freeze 기본값, 그리고 --policy.use_amp입니다.
실행 시간 및 충분한 스텝 수
LeRobot은 약 50개 에피소드 데이터셋에 대해 5 에포크 동안의 실제 시간 기준점(wall-clock anchors)을 게시하며, 이는 30 fps에서 약 45000 프레임에 해당합니다. 문서에서는 대략적인 수치라고 하지만, 이는 한 시간을 예상하는 것과 하루를 예상하는 것의 차이입니다.
| 설정 | 정책 | 배치 | 실제 소요 시간 |
|---|---|---|---|
| 단일 L4 / A10G (24 GB) | smolvla | 4 | 약 3~6시간 |
| 단일 A100 40 GB | smolvla | 16 | 약 1~2시간 |
| accelerate를 사용한 4 x H100 80 GB | smolvla | 32 | 약 1~2시간 |
| 단일 RTX 4090 / RTX 3090 (24 GB) | act | 8 | 약 30~60분 |
규칙은 고정된 스텝 수가 아니라 데이터셋에 대해 5~10 에포크입니다: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). 문서에서 가리키는 참조 데이터셋인 lerobot/svla_so100_pickplace의 메타데이터는 50개의 에피소드와 19631개의 프레임을 보고합니다: 배치 8은 에포크당 약 2454 스텝을 제공하므로, 20000 스텝은 대략 8 에포크입니다. 배치를 절반으로 줄이면 동일한 예산으로 절반의 에포크를 얻게 되므로, --batch_size를 변경할 때마다 이 작업을 다시 수행하세요.
미세 조정된 정책을 로봇 팔에서 다시 실행하기
lerobot-rollout \
--strategy.type=base \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower_arm \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
--task="Grasp the cube and put it in the box." \
--policy.path=${HF_USER}/smolvla_pick_place액션 단계당 245ms는 오해하기 쉽습니다: 정책은 chunk_size = 50 포워드 패스당 액션을 방출하고 그 중 n_action_steps = 50개를 실행합니다. 따라서 이 비용을 얼마나 자주 지불하는지는 서보가 명령을 받는 빈도가 아니라 이 설정에 의해 결정됩니다. 이것이 바로 액션 청킹이 제공하는 이점이며, 245ms 모델이 30Hz 암을 구동할 수 있는 이유입니다. 남은 것은 청크 끝의 추론 지연 시간입니다.
| 측정 (SmolVLA, 실제 SO-100) | 동기 | 비동기 |
|---|---|---|
| 완료 시간, 픽 앤 플레이스, 10회 시도 | 13.75 s | 9.70 s |
| 고정 시간 창 내 픽 앤 플레이스 주기 | 9 | 19 |
| 세 가지 작업에 대한 평균 성공률 | 78.3 % | 73.3 % |
세 번째 행은 대부분의 보고서에서 생략하는 부분입니다. 비동기 추론은 약 30% 더 빠르며 고정된 시간 창에서 처리량을 거의 두 배로 늘립니다. 논문에서는 성공률이 비슷하다고 언급하며, 평균적으로 그렇습니다. 그 이면에는 정렬 작업이 70%에서 50%로 떨어졌고, 픽 앤 플레이스는 5% 증가했습니다. lerobot 0.6.1은 동일한 바이너리에 다른 레버를 포함합니다: --inference.type=rtc는 롤아웃을 실시간 청킹으로 전환하며, 이는 스크립트의 사용 블록에서 느린 VLA, Pi0, Pi0.5 및 SmolVLA에 권장하는 방식입니다.
제어 루프는 모델에 따라 액션 단계당 20ms에서 485ms이며, 공용 인터넷 왕복 통신이 추가되면 작동하는 정책이 주저하는 정책으로 변합니다. 원격 추론은 느린 픽 앤 플레이스에는 적합하지만 빠른 반응성 동작에는 적합하지 않습니다. 작업에 빠른 수정이 필요한 경우 GPU는 암과 동일한 LAN에 있어야 합니다.
동일한 체크포인트에 도달하는 두 가지 경로
머신, 환경 및 디버깅을 직접 관리합니다. 유일한 클라우드 종속성은 기본 체크포인트의 허브 다운로드입니다. 정책을 수정하려는 경우, 데이터가 네트워크를 벗어날 수 없는 경우, 또는 카드가 유휴 상태인 경우에 적합한 경로입니다.
- CUDA 휠, 드라이버, ffmpeg 빌드 및 데이터 로더를 직접 제어합니다.
- configuration_smolvla.py를 패치하고 같은 날 오후에 재훈련할 수 있습니다.
- 실행당 비용이 아닌 전기료와 시간으로 지불하며, TorchCodec를 직접 디버깅합니다.
pip install 'lerobot[smolvla,training,core_scripts]'
hf auth login
lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=${HF_USER}/so100_pick_place \
--batch_size=8 --steps=20000 \
--save_freq=2000 --seed=1000 \
--output_dir=outputs/train/smolvla_pick_place \
--job_name=smolvla_pick_place \
--policy.device=cuda --wandb.enable=true양식 뒤에서 동일한 실행: 모델과 데이터셋을 선택하면 백엔드가 필요한 VRAM에 따라 GPU를 임대하고 트레이너를 실행하며 체크포인트를 객체 스토리지에 기록합니다. 데이터셋은 Hugging Face repo ID, 공개 디렉토리, 또는 사용자 머신에서 가져올 수 있습니다. SO-100의 SmolVLA, 또는 훈련 페이지의 매트릭스에서 시작하세요.
| 필드 | 플랫폼이 SmolVLA에 대해 보내는 기본값 | 참고 |
|---|---|---|
| 배치 크기 | 2 | 24 GB 티어에 대해 보수적 |
| 학습률 | 1e-4 | lerobot 사전 설정 |
| 최대 스텝 | 20000 | LeRobot 문서의 참조 실행 |
| 그라디언트 누적 | 8 | 양식에 표시되지만 적용되지 않음 |
| 추가 설정 | seed, logFreq | 시드는 실행을 반복 가능하게 만듭니다 |
- 24 GB 티어에서 2~5시간 소요, 실행당 약 1~3 USD.
- /cli의 터미널과 /mcp의 AI 에이전트에서 동일한 작업을 수행합니다.
- 추론 파드는 유휴 감시자를 포함하므로, 잊혀진 파드는 조용히 요금이 청구되는 대신 스스로 파괴됩니다.
- 아직 암이 없으신가요? /live에서 가입 없이 조종할 수 있는 실제 SO-100을 스트리밍합니다.
큐에 갇힌 작업은 버그가 아니라 스팟 시장 증상입니다: 훈련 작업이 큐에 갇힘. 단계별: 첫 번째 정책 훈련하기 및 훈련 문서.
SmolVLA가 잘못된 선택일 때
SmolVLA가 올바른 첫 실행이었는지에 대한 테스트는 작동 여부가 아니라 실패가 무언가를 알려주었는지 여부입니다. 60% 또는 70%에 도달하면 더 큰 모델에 투자하는 것이 합리적입니다. 데이터에 신호가 있기 때문입니다. 10%에 도달하면 3B 모델도 10%에 도달할 가능성이 높으며, 이는 12달러 대신 3달러로 방금 알게 된 사실입니다.

더 많은 비용을 지출하기 전에 읽어볼 가치가 있는 내용: Pi0.5 대 SmolVLA는 동일한 아이디어에 대한 더 많은 용량을 위해, 그리고 GR00T N1.7 대 SmolVLA는 NVIDIA 경로를 위한 것으로, 둘 다 80 GB 티어에서 실행당 4~12 USD입니다. 다른 방법으로는, ACT는 더 저렴한 기준선입니다: 80 M 매개변수, 액션 단계당 20 ms, 언어 조건화 없음. 이 다섯 가지 모두 정책 페이지에 있으며, 아레나는 85개의 모델과 332개의 벤치마크 결과를 가지고 있습니다.

무엇이든 확장하기 전 체크리스트
- `lr`이 2.5e-6 최저점에 도달했습니까? 30000 스텝 미만에서는 lerobot이 감쇠를 재조정하고 시작 시 이를 알립니다. 그 이상에서는 `--policy.scheduler_decay_steps`를 직접 설정하십시오.
- 하나 이상의 체크포인트와 `--dataset.eval_split`으로 제외된 에피소드가 있어 평가 손실이 의미를 가집니다.
- 정책이 전혀 움직입니까? 움직이지 않는 팔과 함께 손실이 감소하는 데는 특정 원인이 있습니다: 손실은 감소하지만 정책은 아무것도 하지 않음.
- 장면 변경에도 작동합니까? 그렇지 않다면: 정책이 한 가지 설정에서만 작동함.
- 시드를 기록했습니까? lerobot은 기본적으로 1000을 사용하므로, 변경되지 않은 두 실행은 비교 가능합니다.
- 그 다음에야: 더 많은 에피소드, 더 많은 변형, 또는 더 큰 모델. 이 순서대로.
이 모델들이 존재하는 이유와 언어 입력을 통해 무엇을 하는지에 대해서는, 이 배경 지식입니다; 는 조립 과정을 을 거쳐 첫 번째 실행까지 안내합니다. 완성된 체크포인트의 경우, ; 로봇 팔이 나타나지 않으면, .
자신의 로봇 팔로 SmolVLA 훈련하기
모델과 로봇 팔을 선택하면 가이드가 정확한 기본값, 데이터셋 형식 및 실행 비용을 알려줍니다. SmolVLA는 실행당 1~3 USD의 비용으로 24 GB 티어에 있습니다.
훈련 가이드 열기RTX 4090에서 SmolVLA를 정말 미세 조정할 수 있나요?▾
네. LeRobot의 컴퓨팅 가이드에 따르면 SmolVLA는 AdamW와 함께 배치 8에서 약 10~16GB의 피크 VRAM을 사용하며, 24GB 소비자용 카드가 편안하게 사용할 수 있다고 명시되어 있습니다. 문서 예제의 배치 64는 단일 A100과 함께 사용됩니다. 메모리는 배치에 거의 선형적으로 비례하므로, 4 또는 8을 사용하고 mem_gb를 확인하십시오.
실제로 몇 개의 에피소드가 필요한가요?▾
AY-Robots는 최소 30으로 설정합니다. LeRobot 문서에서는 약 50을 권장하며, 동일한 작업의 25개 에피소드는 성능이 좋지 않았다고 보고합니다. 구조가 개수보다 중요합니다. 참조 세트는 각각 10개의 에피소드를 가진 5개의 큐브 위치였으며, 이러한 반복이 일반화에 도움이 됩니다.
문서에는 배치 64라고 되어 있는데, 플랫폼은 배치 2를 보냅니다. 어느 것이 맞나요?▾
서로 다른 하드웨어에 따라 둘 다 맞습니다. 문서 예제는 배치 64를 사용하며 단일 A100에서 20000단계에 약 4시간이 걸린다고 언급합니다. 컴퓨팅 가이드의 A100 40GB 기준은 배치 16입니다. 배치 2는 AY-Robots가 24GB 티어에서 보내는 값입니다. 로컬에서는 4에서 8이 중간이며, 에포크 계산은 이에 따라 변경됩니다.
SO-100에서 첫 실행을 위해 SmolVLA 또는 ACT 중 어느 것을 사용해야 하나요?▾
작업이 반복적인 단일 동작이고 가장 빠른 루프를 원한다면 ACT를 사용하십시오. 액션 단계당 20ms, 80M 매개변수, 언어 조건화 없음. 언어 조건화, 하나의 체크포인트에 여러 작업 문자열, 사전 훈련된 기반을 원한다면 SmolVLA를 사용하십시오. 둘 다 24GB 티어에 있으므로 선택은 예산이 아니라 작업에 따라 달라집니다.
--policy.scheduler_decay_steps를 설정해야 하나요?▾
--steps가 30000을 초과할 때만 해당됩니다. SmolVLA는 30000단계에서 코사인 감쇠를 미리 설정하며, lerobot 0.6.1은 더 짧은 실행을 위해 자동으로 스케일을 조정하고, 이때 "Auto-scaling LR scheduler"를 로깅합니다. 스케일을 늘리지는 않으므로, 기본 --steps=100000은 마지막 70000단계를 2.5e-6 바닥에 남겨둡니다.
Sources
- SmolVLA: 저렴하고 효율적인 로봇 공학을 위한 비전-언어-액션 모델
- SmolVLA: 효율적인 비전-언어-액션 모델 (Hugging Face 블로그)
- lerobot/smolvla_base 모델 카드
- LeRobot 문서: SmolVLA
- LeRobot 문서: LeRobot 훈련을 위한 컴퓨팅 HW 가이드
- LeRobot 문서: 설치
- LeRobot 문서: LeRobotDataset v3.0 및 v2.1 변환기
- LeRobot 문서: 비동기 추론
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (전략 및 RTC 추론)
- lerobot v0.6.1: pyproject.toml (추가 기능 및 콘솔 진입점)
- PyPI의 lerobot
- lerobot/svla_so100_pickplace 데이터셋 (50 에피소드, 19631 프레임, v3.0)
Sources
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- SmolVLA: Efficient Vision-Language-Action Model (Hugging Face blog)
- lerobot/smolvla_base model card
- LeRobot docs: SmolVLA
- LeRobot docs: Compute HW Guide for LeRobot Training
- LeRobot docs: Installation
- LeRobot docs: LeRobotDataset v3.0 and the v2.1 converter
- LeRobot docs: Asynchronous Inference
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategies and RTC inference)
- lerobot v0.6.1: pyproject.toml (extras and console entry points)
- lerobot on PyPI
- lerobot/svla_so100_pickplace dataset (50 episodes, 19631 frames, v3.0)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started