로봇팔로 시연 데이터를 50개쯤 모았을 때 가장 먼저 드는 질문은 “이 정도면 VLA를 학습시켜도 되나, 아니면 ACT 같은 작은 정책부터 해야 하나"입니다. 이 글은 ACT, Diffusion Policy, SmolVLA 세 논문이 실제로 쓴 시연 수와 학습·추론 조건을 같은 표에 놓고, 데이터 규모와 추론 예산에 따라 어떤 모델로 시작할지 판단하는 기준을 정리합니다. 수치는 모두 각 논문과 공식 문서에 보고된 값이며, 서로 다른 과제·하드웨어 조건이라는 점을 함께 적었습니다.
세 모델의 구조 자체가 궁금하다면 Diffusion Policy 동작 원리와 VLA 파이프라인 비교를 먼저 보면 이 글의 비교가 더 잘 읽힙니다.
세 논문은 시연을 몇 개 쓰고 어떻게 학습했나
| 항목 | ACT | Diffusion Policy | SmolVLA |
|---|---|---|---|
| 모델 크기·구조 | 약 80M, 과제마다 처음부터 학습 | CNN 기반·Transformer 기반 두 변형 | 450M (행동 전문가 약 100M) |
| 실제 과제당 시연 수 | 50개 (Thread Velcro 100개) | 90~284개 | 50개 (5개 위치 × 10회) |
| 사전학습 | 없음 | 없음 | 커뮤니티 데이터셋 481개, 22.9K 에피소드 |
| 학습 조건 | RTX 2080 Ti 11GB 1장, 약 5시간 | 상태 과제 4500 에폭, 이미지 과제 3000 에폭 | 실제 과제 200,000 스텝 파인튜닝 |
| 추론 | 약 0.01초, 50Hz 제어 | DDIM 10회로 약 0.1초 (RTX 3080) | 흐름 정합 10단계, 청크 50 |
ACT 수치는 ACT 논문 본문에서, Diffusion Policy 수치는 Diffusion Policy 논문의 Table 3과 실험 절에서, SmolVLA 수치는 SmolVLA 논문의 모델·학습 설명과 Table 1에서 가져왔습니다. ACT 논문 초록은 이 설정으로 6개 실제 과제에서 80~90% 성공률을 보고합니다. Diffusion Policy 논문은 시뮬레이션 벤치마크에서 기존 방법 대비 평균 46.9% 향상을 보고합니다.
표에서 눈에 띄는 점은 ACT와 SmolVLA가 실제 과제마다 같은 50개 수준의 시연을 썼다는 것입니다. 차이는 모델 크기와 사전학습 유무에 있습니다.
같은 50개 데이터에서 성적을 가른 것은 사전학습이었다
SmolVLA 논문은 SO100 로봇팔로 집어 옮기기, 쌓기, 분류 세 과제를 평가했습니다. 데이터셋마다 5개 시작 위치에서 10회씩, 총 50개 시연입니다. 논문의 실제 과제 결과를 같은 데이터 조건에서 보면 다음과 같습니다.
| 모델·학습 방식 | 집어 옮기기 | 쌓기 | 분류 | 평균 |
|---|---|---|---|---|
| ACT | 70 | 50 | 25 | 48.3 |
| π0 (3.5B) | 100 | 40 | 45 | 61.7 |
| SmolVLA, 사전학습 없음·단일 과제 | 55 | 45 | 20 | 40 |
| SmolVLA, 사전학습 없음·다중 과제 | 80 | 40 | 35 | 51.7 |
| SmolVLA, 사전학습·다중 과제 | 75 | 90 | 70 | 78.3 |
같은 SmolVLA 구조라도 사전학습 없이 과제 하나로만 학습하면 평균 40%로 ACT보다 낮습니다. 논문 Table 5는 커뮤니티 데이터셋 사전학습이 51.7%를 78.3%로 끌어올렸다고 설명합니다. 즉 “50개로 VLA를 학습하면 실패한다"는 말은 사전학습 없이 시작할 때는 맞고, 사전학습 체크포인트를 파인튜닝할 때는 맞지 않습니다.
LeRobot SmolVLA 문서도 같은 방향입니다. 문서는 출발점으로 약 50개 에피소드를 권하고, 비슷한 데이터셋을 25개로 줄였을 때는 성능이 나빴다고 밝힙니다. 또 큐브 위치처럼 바꾸는 조건마다 시연을 여러 번 반복해야 일반화가 좋아진다고 강조합니다. 데이터 수만큼 조건 구성이 중요하다는 뜻입니다.
데이터 규모·과제 수·추론 예산으로 고르는 표
아래 표는 위 논문 수치를 바탕으로 출발점을 고르는 기준입니다. 정답표가 아니라, 첫 실험을 무엇으로 할지 정하는 기준선입니다.
| 상황 | 먼저 해 볼 정책 | 근거 |
|---|---|---|
| 과제 1개, 시연 50개 안팎, 언어 지시 불필요 | ACT | ACT 논문 기본 설정이 과제당 50개, 학습이 가볍다 |
| 과제 1개, 동작에 여러 정답(경로가 갈림), 시연 100~300개 | Diffusion Policy | 논문 실제 과제가 90~284개 시연 범위 |
| 여러 과제를 언어로 바꿈, 과제당 시연 50개 | SmolVLA 파인튜닝 | 사전학습·다중 과제에서 평균 78.3% |
| 시연 25개 이하 | 데이터부터 더 모은다 | LeRobot 문서: 25개는 성능 부족 |
| 여러 로봇·장기 과제, 대규모 데이터 | 더 큰 VLA 검토 | 모델이 커질수록 장비 비용이 커진다 |
어느 경우든 ACT를 기준선으로 먼저 학습해 두면 비교가 쉬워집니다. LeRobot에서는 같은 데이터셋에 --policy.type=act, --policy.type=diffusion, --policy.path=lerobot/smolvla_base만 바꿔 학습할 수 있습니다. ACT 학습 절차는 LeRobot SO-101 ACT 학습 가이드에 정리돼 있습니다.
추론 예산은 청크 길이와 제어 주기로 계산한다
정책이 행동을 한 번에 여러 스텝씩 내보낼 때, 다음 청크를 만들 때까지 쓸 수 있는 시간은 다음과 같습니다.
여기서 은 한 번의 추론 결과 중 실제로 실행하는 행동 수, 은 제어 주기(Hz)입니다.
- SmolVLA: configuration_smolvla.py의 기본값은
chunk_size50,n_action_steps50, 흐름 정합num_steps10입니다. 30Hz로 실행하면 초 안에 다음 청크를 만들면 됩니다. 논문은 비동기 추론을 켜면 과제 완료 시간이 13.75초에서 9.7초로 줄었다고 보고합니다. - ACT: 논문은 시간 앙상블을 위해 매 타임스텝 정책을 호출합니다. 50Hz면 예산은 0.02초이고, 보고된 추론 시간 약 0.01초가 그 안에 들어갑니다.
- Diffusion Policy: 논문의 실제 Push-T는 10Hz로 명령을 예측해 125Hz로 보간해 실행했고, 실행 행동 수 8스텝을 대부분 과제에서 최적으로 봤습니다. 추론 지연 0.1초가 예측 주기 안에 들어가는 구성입니다.
같은 모델이라도 실행 행동 수를 줄이면 반응성은 좋아지지만 예산이 짧아집니다. SmolVLA 논문은 청크 크기 10~50 사이가 반응성과 효율의 균형이 좋다고 정리합니다. 이 예산을 장비 사양으로 바꾸는 방법은 SmolVLA 파인튜닝 VRAM 계산법과 VLA 메모리·대역폭 산정 방법에서 이어집니다.
작은 정책에서 큰 VLA로 옮겨 가는 순서
데이터와 과제가 늘어나는 순서대로 모델을 키우면 각 단계의 실패 원인을 구분하기 쉽습니다.
- ACT 기준선: 과제 하나, 시연 50개로 데이터 파이프라인(카메라 고정, 관절 순서, fps)이 맞는지 확인합니다. 여기서 성공률이 안 나오면 모델보다 데이터 문제일 가능성이 큽니다.
- Diffusion Policy 비교: 같은 과제에서 경로가 여러 갈래인 동작이 있다면 비교해 봅니다. 디노이징 단계 수가 추론 지연을 정하므로 제어 주기 안에 들어오는지 먼저 계산합니다.
- SmolVLA 파인튜닝: 과제를 2개 이상으로 늘리고 언어 지시를 붙입니다. 반드시
lerobot/smolvla_base같은 사전학습 체크포인트에서 시작합니다. - 더 큰 VLA: 로봇 종류나 장기 과제가 늘어나면 오픈소스 로봇 정책 모델 비교의 라이선스·크기·GPU 조건을 보고 고릅니다. LeRobot 형식 데이터로 GR00T N1.7을 파인튜닝하는 절차는 GR00T N1.7 파인튜닝 가이드에 있습니다.
데이터를 모으기 전에 정할 세 가지
첫째, 과제당 시연 수와 초기 조건 변화 수를 같이 정합니다. SmolVLA 데이터셋처럼 “위치 5개 × 10회"로 적어 두면 나중에 성공률이 낮을 때 어떤 조건이 부족한지 추적할 수 있습니다. 둘째, 언어 지시가 필요한지 결정합니다. 단일 과제라면 ACT로 충분할 수 있고, 여러 과제를 지시로 바꿔야 한다면 사전학습된 VLA가 출발점입니다. 셋째, 제어 주기와 실행 행동 수로 추론 예산을 계산합니다. 이 세 값이 정해지면 모델 선택은 위 표에서 대부분 결정됩니다.
설치가 아직이라면 MuJoCo·LeRobot 설치 가이드에서 Python·CUDA 조합부터 맞추고 시작합니다.