공개 가중치를 내려받아 내 로봇에 맞춰 파인튜닝할 수 있는 로봇 정책 모델이 여럿 생기면서, 모델 구조보다 “우리 GPU와 라이선스 조건에서 무엇을 쓸 수 있나"가 먼저 부딪히는 질문이 됐습니다. 이 글은 OpenVLA, Octo, π0(openpi), GR00T N1.7 네 모델을 운영 관점의 기준으로 비교합니다. 각 모델이 행동을 어떻게 만들어 내는지 구조 원리는 VLA 파이프라인 분석에서 먼저 보면 이해가 빠릅니다.
고르기 전에 정해야 할 다섯 가지 기준
- 라이선스: 코드와 가중치 라이선스가 다른 경우가 많습니다. 상용 제품에 넣을 계획이면 가중치 쪽을 기준으로 판단합니다.
- 모델 크기와 GPU 메모리: 추론에 필요한 메모리와 파인튜닝(LoRA, 전체)에 필요한 메모리를 따로 확인합니다.
- 행동 생성 방식과 제어 주기: 이산 토큰을 하나씩 내는지, 행동 묶음을 한 번에 생성하는지에 따라 얻을 수 있는 제어 주기가 달라집니다.
- 데이터 형식: 내 시연 데이터를 어떤 형식으로 바꿔야 학습에 넣을 수 있는지 확인합니다.
- 프레임워크와 플랫폼: JAX인지 PyTorch인지, 지원 OS와 엣지 장치 배포 경로가 있는지 봅니다.
네 모델 비교표
| 항목 | OpenVLA | Octo | π0 (openpi) | GR00T N1.7 |
|---|---|---|---|---|
| 코드 라이선스 | MIT | MIT | Apache-2.0 | Apache 2.0 |
| 가중치 조건 | Llama Community License 적용 | MIT | openpi 저장소 체크포인트(Gemma 라이선스 파일 별도 포함) | NVIDIA Open Model License, 상업·비상업 사용 가능 명시 |
| 크기 | 7B (전체 7.5B) | Small 27M, Base 93M | 3.3B (PaliGemma 3B + 행동 전문가 300M) | 3B (Cosmos-Reason2-2B 백본 + flow matching DiT) |
| 행동 생성 | 차원별 256구간 이산 토큰 | 트랜스포머 + 확산 헤드 | flow matching 행동 묶음(π0-FAST는 자기회귀 토큰) | flow matching DiT, 행동 지평 40 |
| 추론 속도(공개 값) | RTX 4090 bf16 약 6Hz | RTX 4090에서 Base 13 it/s, Small 17 it/s | RTX 4090 탑재 기준 73ms, 최대 50Hz 제어 | H100 TensorRT 35.9Hz, eager 11.7Hz |
| 추론 메모리 | bf16 15GB | 공개 값 없음 | 8GB 초과 | 16GB 이상 |
| 파인튜닝 메모리 | LoRA 최소 약 27GB (배치 16에 약 72GB) | 공개 값 없음, 헤드만·MLP까지·전체 모드 | LoRA 22.5GB 초과, 전체 70GB 초과 | 40GB 이상 권장 |
| 사전학습 데이터 | Open X-Embodiment 97만 궤적 | 80만 궤적 | 1만 시간 이상 로봇 데이터 | 13개 데이터셋 2,160만 데이터 포인트 |
| 학습 데이터 형식 | RLDS 변환(권장) 또는 PyTorch Dataset 래퍼 | Open X-Embodiment 전처리(rlds_dataset_mod) 기반 | LeRobot 데이터셋 | LeRobot v2 + meta/modality.json |
| 프레임워크 | PyTorch | JAX | JAX(원본), π0·π0.5 PyTorch 구현 | PyTorch, uv 환경 |
수치는 각 모델의 논문, 저장소 README, 모델 카드를 2026-10-19에 대조한 값입니다. 추론 속도는 측정 GPU와 최적화 조건이 모두 달라 표의 숫자끼리 직접 순위를 매기면 안 되고, 같은 장비에서 다시 재야 합니다.
OpenVLA: 공개 VLA의 기준점, 대신 무겁다
OpenVLA 논문은 로봇 행동의 각 차원을 256개 구간으로 나눠 Llama 토크나이저에서 가장 덜 쓰는 토큰 256개를 덮어쓰는 방식으로 행동을 출력합니다. bf16으로 올리면 GPU 메모리 15GB가 필요하고 RTX 4090 한 장에서 약 6Hz로 동작한다고 보고합니다. 4비트 양자화는 메모리를 절반 이하로 줄이면서 성능을 비슷하게 유지했지만, A5000에서 3Hz로 측정됐습니다.
파인튜닝은 LoRA가 기본 경로입니다. 논문은 단일 A100에서 10~15시간 안에 새 과제로 미세조정할 수 있고 학습하는 파라미터는 전체의 1.4%라고 밝힙니다. README 기준으로 배치 16이면 약 72GB가 필요하고, 배치를 줄이면 최소 약 27GB GPU에서도 돌릴 수 있습니다. 가중치는 Llama 2 기반이라 Llama Community License를 따른다는 점을 상용 검토에서 확인해야 합니다. README는 후속 레시피인 OFT가 기본 미세조정보다 25~50x 빠른 추론을 낸다고 소개하고 있어, 속도가 문제라면 이 경로를 먼저 봅니다.
Octo: 작고 빠르게 시작하는 확산 정책
Octo는 Small 27M, Base 93M 두 크기로 배포되는 트랜스포머 기반 확산 정책입니다. 80만 개 로봇 궤적으로 사전학습했고, README는 RTX 4090 한 장에서 Base가 초당 13회, Small이 17회 추론한다고 적고 있습니다. 파인튜닝 모드는 head_only, head_mlp_only, full 세 가지라서 데이터가 적을 때는 행동 헤드만 학습하는 식으로 계산량을 조절할 수 있습니다.
약점도 분명합니다. 언어 모델을 뼈대로 쓰지 않아 복잡한 지시나 처음 보는 물체 이름에 대한 일반화는 VLA보다 기대치를 낮춰야 하고, JAX 기반이라 PyTorch 중심 팀은 학습 코드에 익숙해지는 시간이 필요합니다. 그럼에도 모델이 작아 노트북 GPU나 저사양 장비에서 실험 반복이 빠르다는 장점이 있습니다.
π0 (openpi): 소비자 GPU로 파인튜닝 가능한 flow 기반 VLA
openpi 저장소는 π0, 자기회귀 방식의 π0-FAST, 일반화를 개선한 π0.5를 함께 배포합니다. π0 논문에 따르면 PaliGemma 3B에 처음부터 학습하는 300M 행동 전문가를 붙인 총 3.3B 모델이고, 50스텝 행동 묶음을 flow matching으로 생성해 빨래 개기 같은 정밀 작업을 최대 50Hz로 제어합니다. RTX 4090에서 측정한 탑재 추론 지연은 73ms입니다.
운영 관점에서 가장 큰 장점은 메모리입니다. README는 추론 8GB 초과, LoRA 파인튜닝 22.5GB 초과(예: RTX 4090), 전체 파인튜닝 70GB 초과(A100 80GB, H100)를 제시합니다. 다만 테스트된 OS는 Ubuntu 22.04뿐이고, 2025년 9월 추가된 PyTorch 구현은 π0-FAST, 혼합 정밀도, FSDP, LoRA, EMA를 아직 지원하지 않아 LoRA 학습은 JAX 경로로 해야 합니다. 학습 데이터는 LeRobot 데이터셋으로 변환해 넣습니다.
GR00T N1.7: 휴머노이드 배포 경로가 가장 구체적인 모델
Isaac-GR00T 저장소의 최신 모델 N1.7은 3B 파라미터로, Qwen3-VL 구조의 Cosmos-Reason2-2B를 비전-언어 백본으로 쓰고 flow matching DiT 행동 헤드로 연속 행동을 생성합니다. README는 N1.6 대비 상태·행동 차원을 29에서 132로, 행동 지평을 16에서 40으로 늘렸다고 설명합니다. 백본이 Hugging Face 게이트 모델이라 접근 승인을 먼저 받아야 합니다.
요구 사양은 추론 16GB 이상, 파인튜닝 40GB 이상 GPU 권장으로 네 모델 중 학습 문턱이 높은 편입니다. 대신 모델 카드가 장치별 실행 속도를 표로 공개합니다. TensorRT 전체 파이프라인 기준 H100 35.9Hz, L40 26.0Hz, Jetson AGX Thor 10.7Hz이고, 저장소의 하드웨어 권장 문서는 행동 묶음 덕분에 약 10Hz 재계획으로 약 30FPS 로봇 실행을 지원할 수 있다고 설명합니다. 로봇 탑재 장치까지 이어지는 배포 경로가 공식 문서로 정리돼 있다는 점이 다른 세 모델과의 차이입니다. 실제 파인튜닝 절차는 GR00T N1.7 파인튜닝 가이드에서 따라 할 수 있습니다.
보유 GPU로 후보를 걸러 내는 계산
비교표의 공개 값만으로도 “우리 장비에서 무엇이 가능한가"를 먼저 걸러 낼 수 있습니다. 아래 스크립트는 위 표의 메모리 요구치를 그대로 옮긴 것이며, 공개 값이 없는 칸은 비워 둡니다.
# 공개 문서 기준 GPU 메모리 요구치(GB). None = 공개 값 없음
MODELS = {
"OpenVLA (7B)": {"infer": 15, "lora": 27, "full": None},
"Octo-Base (93M)": {"infer": None, "lora": None, "full": None},
"pi0 (3.3B)": {"infer": 8, "lora": 22.5, "full": 70},
"GR00T N1.7 (3B)": {"infer": 16, "lora": None, "full": 40}, # 기본 모드: projector+DiT 튜닝
}
def shortlist(vram_gb, stage):
for name, req in MODELS.items():
need = req[stage]
verdict = "확인 필요" if need is None else ("가능" if vram_gb >= need else "부족")
print(f"{name:18s} {stage:5s} 필요 {need!s:>5} GB → {verdict}")
shortlist(24, "infer")
shortlist(24, "lora")
24GB GPU라면 추론은 OpenVLA·π0·GR00T 모두 가능하지만, 파인튜닝까지 한 장비에서 하려면 π0 LoRA만 공개 기준을 만족합니다. GR00T의 40GB는 projector와 DiT 행동 헤드를 학습하는 기본 모드 기준이고, 저장소 하드웨어 문서는 --tune-llm이나 --tune-visual을 켜면 GPU당 80GB 이상을 권장합니다. 로봇에 올릴 엣지 장치의 메모리 대역폭까지 계산하려면 VLA 엣지 하드웨어 산정 가이드의 절차를 이어서 적용합니다.
상황별로 먼저 시험할 모델
| 상황 | 먼저 시험 | 이유 |
|---|---|---|
| 24GB 소비자 GPU 한 장으로 학습·추론 모두 | π0 (openpi, JAX LoRA) | 공개 요구치 안에서 LoRA 가능 |
| 저사양 장비에서 빠른 실험 반복 | Octo-Small / Base | 27M·93M으로 작고 추론이 빠름 |
| 휴머노이드·Jetson 탑재까지 고려 | GR00T N1.7 | 장치별 실행 속도와 배포 문서 제공 |
| 행동 토큰화 방식 연구·재현 | OpenVLA | 이산 토큰 VLA의 공개 기준 구현 |
| 상용 제품 탑재 검토 | 가중치 라이선스부터 확인 | 코드와 가중치 조건이 다름 |
공개 모델이 아닌 연구 개념까지 넓혀 보면 TRI와 보스턴 다이내믹스의 대규모 행동 모델(LBM)처럼 로봇 시연 중심으로 학습한 확산 정책도 있습니다. 어떤 모델을 고르든 첫 단계는 같습니다. 내 로봇의 시연 데이터를 LeRobot 형식으로 모으고, 같은 데이터로 두 후보를 학습해 같은 초기 조건에서 비교하는 것입니다.