📝RL works w/ GR00T
Claude
GR00T 모델의 학습 파이프라인과 강화학습의 관계는 계층적 구조로 이해하면 명확해집니다.
GR00T의 학습 체계
GR00T N1.6 같은 VLA 모델 자체는 Imitation Learning 기반입니다. Teleoperation 데모 데이터를 수집하고, Flow Matching Loss와 Diffusion Transformer로 action을 생성하도록 학습하죠. 즉 post-training(fine-tuning)할 때도 기본적으로는 behavioral cloning 방식입니다.
그러면 RL은 어디에?
강화학습은 Low-level Whole-Body Control (WBC) Policy 학습에 핵심적으로 사용됩니다:
1) Sim-to-Real 파이프라인 Isaac Lab에서 privileged teacher policy를 RL로 먼저 학습합니다. 이 teacher는 시뮬레이션에서 ground truth 정보(접촉력, 정확한 joint state 등)에 접근할 수 있어요. 그 다음 이걸 제한된 센서 입력만 사용하는 student policy로 distillation합니다.
2) 계층적 제어 구조
[High-level] GR00T VLA Policy (Imitation Learning)
↓ action commands (target poses, trajectories)
[Low-level] Whole-Body RL Policy (Reinforcement Learning)
↓ joint torques/positions
Robot Hardware
High-level VLA가 “컵을 집어라”라는 명령을 해석해서 target trajectory를 생성하면, low-level RL policy가 실제로 균형을 잡고 팔을 움직이는 motor control을 담당합니다.
3) COMPASS 워크플로우 (Navigation) Imitation learning, residual RL, policy distillation을 통합해서 mobility policy를 학습합니다.
실무적 시사점
현재 Isaac-GR00T 레포지토리에는 RL 컴포넌트가 직접 내장되어 있지 않고 imitation learning 기반의 fine-tuning만 제공합니다. 만약 custom task에 RL을 적용하고 싶다면:
- Isaac Lab에서 별도로 RL 학습 → low-level controller로 사용
- GR00T를 high-level planner로 → RL policy 위에 얹어서 사용
- Residual RL → IL로 학습된 base policy에 RL로 fine-tuning 추가
Allegro Hand 같은 dexterous manipulation에서는 특히 이 접근이 유효한데, GR00T-Dexterity 워크플로우가 DextrAH-G라는 RL 기반 접근으로 end-to-end pixels-to-action grasping 시스템을 학습하는 예시를 보여주고 있어요.
VLA 연구 맥락에서 보면, 순수 IL의 한계(distribution shift, out-of-distribution 상황)를 RL로 보완하는 하이브리드 접근이 트렌드입니다.
GR00T + Reinforcement Learning 통합 설계 및 개발 계획서
본 문서는 NVIDIA GR00T VLA 모델과 강화학습을 통합하는 4가지 접근 방식을 제시합니다. 각 방식은 Dexterous Manipulation 연구, 특히 Allegro Hand V4와 같은 로봇 핸드 플랫폼에 적용 가능하도록 설계되었습니다.
1. 접근 방식 개요
| 접근 방식 | 핵심 개념 | 적합한 상황 | 개발 난이도 |
|---|---|---|---|
| A. 계층적 구조 | GR00T(High) + RL Policy(Low) | 안정적 제어가 필요한 복잡한 조작 | ★★★☆☆ 중간 |
| B. Residual RL | IL Base + RL Residual Action | 기존 IL 정책 성능 향상 | ★★☆☆☆ 쉬움 |
| C. World Model RL | Cosmos + Imagination RL | 데이터 효율성이 중요한 경우 | ★★★★★ 어려움 |
| D. End-to-End RL | VLA Architecture + Pure RL | 특정 task 최적 성능 필요 | ★★★★☆ 높음 |
2. 접근 방식 A: 계층적 구조 (Hierarchical Architecture)
2.1 아키텍처 개요
GR00T VLA 모델을 High-level Planner로, Isaac Lab에서 학습한 RL 정책을 Low-level Controller로 사용하는 계층적 구조입니다. 이는 NVIDIA가 GR00T N1.6에서 실제로 사용하는 방식과 동일합니다.
┌─────────────────────────────────────┐
│ Language Instruction + RGB Image │
└───────────────┬─────────────────────┘
▼
┌─────────────────────────────────────┐
│ GR00T VLA (High-Level) │
│ → Target Pose / Trajectory │
└───────────────┬─────────────────────┘
▼
┌─────────────────────────────────────┐
│ RL Policy (Low-Level) │
│ → Joint Torques / Positions │
└───────────────┬─────────────────────┘
▼
[ Allegro Hand V4 ]
2.2 핵심 컴포넌트
A) High-Level: GR00T VLA Policy
- 입력: RGB 이미지 + 언어 명령 + 로봇 상태 (proprioception)
- 출력: Target end-effector pose, fingertip trajectories, contact mode
- 역할: 의미론적 이해, task decomposition, motion planning
- 주파수: 10-30 Hz (상대적으로 저주파)
B) Low-Level: RL Controller
- 입력: Target pose from VLA + Current joint state + (Optional) Tactile
- 출력: Joint torques 또는 position commands
- 역할: 동역학 보상, contact-rich manipulation, 안정적 추종
- 주파수: 100-1000 Hz (고주파 제어)
2.3 개발 단계
Phase 1: Low-Level RL Policy 개발 (4-6주)
Isaac Lab 환경 구축: Allegro Hand URDF/MJCF 임포트 및 물리 파라미터 튜닝
Reward Function 설계:
- Tracking reward: target pose 추종 정확도
- Smoothness reward: action jerk 최소화
- Contact reward: 안정적 접촉 유지
- Energy penalty: 과도한 토크 사용 억제
Teacher Policy 학습: Privileged information (GT contact, object pose) 활용
Student Policy Distillation: Limited observation으로 동작하는 deployable policy 생성
Phase 2: High-Level VLA Integration (3-4주)
- GR00T N1.6 Post-training: Allegro Hand embodiment에 맞는 fine-tuning
- Action Space 정의: VLA 출력을 RL policy 입력으로 변환하는 interface 설계
- Temporal Alignment: 서로 다른 주파수의 policy 동기화
- Fallback Mechanism: VLA 실패 시 RL policy의 안전 동작 모드
Phase 3: System Integration & Sim-to-Real (4-6주)
- Co-simulation: Isaac Sim에서 전체 파이프라인 테스트
- Domain Randomization: 물리 파라미터, 시각적 외관, 센서 노이즈
- Real Robot Deployment: Jetson AGX Orin에서 추론 최적화
- Online Adaptation: Real-world 데이터로 점진적 개선
💡 Allegro Hand 적용 시 핵심 고려사항
Allegro Hand V4는 16 DoF를 가지며, fingertip 위치 기반 제어와 joint 기반 제어 모두 지원합니다. Low-level RL policy는 joint space에서 학습하되, VLA와의 interface는 fingertip Cartesian space로 정의하는 것이 task specification에 유리합니다.
2.4 컴퓨팅 자원 요구사항
학습 단계
| 구분 | 사양 | 용도 |
|---|---|---|
| Low-Level RL 학습 | RTX 4090 × 1-2 (24GB VRAM) | Isaac Lab 병렬 환경 (4096+ envs) |
| Teacher Policy | RTX 4090 × 1 | Privileged learning |
| Student Distillation | RTX 4090 × 1 | Policy distillation |
| GR00T Post-training | RTX A6000 × 1 또는 H100 × 1 | VLA fine-tuning (48GB+ VRAM 권장) |
| CPU/RAM | 32+ cores, 128GB RAM | 데이터 로딩, 환경 관리 |
| Storage | NVMe SSD 1TB+ | 체크포인트, 데이터셋 |
예상 학습 시간
| 단계 | GPU | 예상 시간 |
|---|---|---|
| Low-Level RL (Teacher) | RTX 4090 × 2 | 12-24시간 |
| Student Distillation | RTX 4090 × 1 | 4-8시간 |
| GR00T Post-training | H100 × 1 | 8-16시간 (100 demos 기준) |
| 총 학습 시간 | - | 24-48시간 |
추론/배포 단계
| 구분 | 사양 | 비고 |
|---|---|---|
| 온보드 추론 | Jetson AGX Orin (64GB) | 실시간 제어 (1000Hz RL + 30Hz VLA) |
| 대안 | RTX 4060 Laptop GPU | 데스크탑 환경 테스트 |
| 지연시간 목표 | < 10ms (RL), < 50ms (VLA) | End-to-end latency |
예상 비용 (클라우드 기준)
AWS p4d.24xlarge (A100 × 8): ~$32/hr
- GR00T post-training: 16시간 × $32 = ~$512
Lambda Labs RTX 4090: ~$0.75/hr
- RL 학습: 48시간 × $0.75 = ~$36
총 예상 클라우드 비용: ~$550-800 (1회 full training)
3. 접근 방식 B: Residual RL Fine-tuning
3.1 아키텍처 개요
Imitation Learning으로 학습된 base policy 위에 RL로 학습한 residual action을 더하는 방식입니다. Base policy가 대략적인 동작을 제공하고, residual policy가 환경 변화나 오차를 보정합니다.
┌────────────────────────────────────────────────────────┐
│ Core Equation │
│ │
│ a_final = a_base(s) + α · a_residual(s) │
│ │
│ where α ∈ [0, 1] is the residual scaling factor │
└────────────────────────────────────────────────────────┘
3.2 방식의 장점
- Sample Efficiency: Base policy가 reasonable한 동작을 제공하므로 exploration이 효율적
- Safety: Residual bound를 제한하여 base policy에서 크게 벗어나지 않음
- Graceful Degradation: RL 실패 시에도 IL policy 수준의 성능 보장
- Incremental Improvement: 기존 데모 데이터 활용하면서 점진적 개선 가능
3.3 개발 단계
Phase 1: Base Policy 준비 (2-3주)
- 데모 데이터 수집: Teleoperation으로 target task 시연 (50-100 episodes)
- GR00T Post-training: 수집된 데이터로 base policy fine-tuning
- 성능 Baseline 측정: Success rate, completion time 등 metric 정의
Phase 2: Residual Policy 학습 (3-4주)
Simulation 환경 구축: Base policy 동작 가능한 Isaac Lab 환경
Reward Shaping:
- Task success reward (sparse)
- Progress reward (dense): base policy 대비 개선 정도
- Residual penalty:
||a_residual||²로 과도한 수정 억제
Residual Bound 설정: α 및 action clipping 범위 결정
PPO/SAC 학습: Residual policy 최적화
Phase 3: Deployment & Iteration (2-3주)
- Sim-to-Real Transfer: Domain randomization 적용
- α Scheduling: 초기에는 낮은 α로 시작, 점진적 증가
- Online Fine-tuning: Real-world 경험으로 추가 학습 (optional)
3.4 하이퍼파라미터 가이드
| Parameter | 권장 범위 | 설명 |
|---|---|---|
| α (residual scale) | 0.1 → 0.3 (annealing) | 학습 중 점진적 증가 |
| Action Clipping | ±0.1 ~ ±0.3 (normalized) | Base action의 10-30% 범위 |
| Residual Penalty (λ) | 0.01 ~ 0.1 | 너무 높으면 학습 안됨 |
| Learning Rate | 1e-4 ~ 3e-4 | 표준 PPO/SAC 설정 |
3.5 컴퓨팅 자원 요구사항
학습 단계
| 구분 | 사양 | 용도 |
|---|---|---|
| Base Policy (GR00T) | RTX A6000 × 1 (48GB) | Post-training |
| Residual RL 학습 | RTX 4090 × 1 (24GB) | Isaac Lab 환경 (2048 envs) |
| CPU/RAM | 16+ cores, 64GB RAM | 환경 시뮬레이션 |
| Storage | SSD 500GB+ | 데모 데이터, 체크포인트 |
예상 학습 시간
| 단계 | GPU | 예상 시간 |
|---|---|---|
| 데모 수집 (Teleop) | - | 4-8시간 (수동) |
| GR00T Post-training | RTX A6000 × 1 | 4-8시간 |
| Residual Policy 학습 | RTX 4090 × 1 | 8-16시간 |
| 총 학습 시간 | - | 16-32시간 (데모 수집 제외) |
추론/배포 단계
| 구분 | 사양 | 비고 |
|---|---|---|
| 온보드 추론 | Jetson AGX Orin (32GB) | Base + Residual 동시 실행 |
| 최소 사양 | Jetson Orin NX (16GB) | 가능하나 최적화 필요 |
| 지연시간 | < 30ms total | VLA + Residual combined |
예상 비용 (클라우드 기준)
Lambda Labs A6000: ~$0.80/hr
- GR00T post-training: 8시간 × $0.80 = ~$6.4
Lambda Labs RTX 4090: ~$0.75/hr
- Residual RL: 16시간 × $0.75 = ~$12
총 예상 클라우드 비용: ~$20-50 (1회 full training)
💰 비용 효율성
Residual RL은 4가지 접근 방식 중 가장 낮은 컴퓨팅 비용으로 구현 가능합니다. 기존 base policy를 활용하므로 exploration이 효율적이고, 학습 시간도 짧습니다.
4. 접근 방식 C: World Model 기반 RL
4.1 아키텍처 개요
NVIDIA Cosmos와 같은 World Foundation Model을 활용하여 imagination 공간에서 RL을 수행합니다. 실제 환경 상호작용 없이 시뮬레이션된 미래 상태에서 policy를 최적화하여 데이터 효율성을 극대화합니다.
┌──────────────────────────────────────────────────────────────────┐
│ World Model RL Pipeline │
│ │
│ Real Data → World Model Training → Imagination Rollouts → Policy │
│ ↑ │ │
│ └─────────────── Periodic Real Interaction ←────────────┘ │
└──────────────────────────────────────────────────────────────────┘
4.2 핵심 컴포넌트
A) World Model (Cosmos-based)
- Video Prediction: 현재 관찰 + action → future frame 예측
- Reward Prediction: 예측된 미래 상태에서 reward 추정
- Uncertainty Estimation: 예측 신뢰도 기반 exploration 가이드
B) Policy Learning (Dreamer-style)
- Latent Imagination: World model의 latent space에서 rollout
- Actor-Critic in Imagination: 가상 trajectory로 policy 학습
- Behavior Learning: Imagined reward 최대화
4.3 개발 단계
Phase 1: World Model 구축 (6-8주)
- 데이터 수집: 다양한 manipulation 상호작용 영상 (1000+ episodes)
- Cosmos Fine-tuning: Dexterous manipulation 도메인에 adaptation
- Reward Model 학습: Visual observation에서 task progress 예측
- Validation: Prediction accuracy 및 long-horizon consistency 검증
Phase 2: Imagination RL 구현 (4-6주)
- Latent Space Design: Action-conditioned latent dynamics
- Dreamer/TD-MPC Integration: World model 기반 planning algorithm
- Imagination Horizon 튜닝: 예측 정확도와 planning horizon trade-off
- Hybrid Training: Real + imagined data 혼합 학습
Phase 3: Real-World Grounding (4-6주)
- World Model Calibration: Real-sim gap 측정 및 보정
- Uncertainty-aware Control: 예측 불확실성 높은 영역에서 보수적 행동
- Continual Learning: 새로운 real data로 world model 업데이트
⚠️ 주의사항
World Model RL은 개념적으로 매력적이지만 실제 구현 난이도가 매우 높습니다. World model의 compounding error, reward model의 정확도, latent space의 quality 등 여러 요소가 동시에 잘 작동해야 합니다. 연구 목적이 아니라면 접근 방식 A나 B를 먼저 시도하는 것을 권장합니다.
4.4 컴퓨팅 자원 요구사항
학습 단계
| 구분 | 사양 | 용도 |
|---|---|---|
| World Model 학습 | H100 × 4-8 (80GB each) | Cosmos fine-tuning, video prediction |
| Reward Model | H100 × 1-2 | Visual reward predictor |
| Imagination RL | RTX 4090 × 2-4 | Latent space rollouts |
| CPU/RAM | 64+ cores, 256GB RAM | 대용량 비디오 데이터 처리 |
| Storage | NVMe SSD 4TB+ | 비디오 데이터셋 (1000+ episodes) |
예상 학습 시간
| 단계 | GPU | 예상 시간 |
|---|---|---|
| 데이터 수집 | - | 40-80시간 (1000 episodes) |
| World Model 학습 | H100 × 8 | 48-96시간 |
| Reward Model | H100 × 2 | 12-24시간 |
| Imagination RL | RTX 4090 × 4 | 24-48시간 |
| 총 학습 시간 | - | 120-250시간 (GPU 시간) |
추론/배포 단계
| 구분 | 사양 | 비고 |
|---|---|---|
| World Model 추론 | RTX A6000 (48GB) | Real-time imagination (선택적) |
| Policy 추론 | Jetson AGX Orin (64GB) | Trained policy만 배포 시 |
| Full Pipeline | RTX 4090 Desktop | MPC with world model |
예상 비용 (클라우드 기준)
AWS p4de.24xlarge (H100 × 8): ~$40/hr
- World Model 학습: 96시간 × $40 = ~$3,840
AWS p4d.24xlarge (A100 × 8): ~$32/hr
- Reward Model: 24시간 × $32 = ~$768
Lambda Labs RTX 4090 × 4: ~$3/hr
- Imagination RL: 48시간 × $3 = ~$144
총 예상 클라우드 비용: ~$4,500-8,000 (1회 full training)
데이터 요구사항
| 데이터 유형 | 권장량 | 저장 용량 |
|---|---|---|
| Robot Interaction Videos | 1,000+ episodes | ~500GB |
| Human Demonstration Videos | 10,000+ clips | ~2TB |
| Synthetic Augmentation | 5x original | ~2.5TB |
| 총 데이터 | - | ~5TB |
⚠️ 비용 경고
World Model RL은 가장 높은 컴퓨팅 비용을 요구합니다. H100 클러스터 접근이 어려운 경우, Cosmos의 pre-trained checkpoint를 활용하거나 smaller world model (TD-MPC style)로 시작하는 것을 권장합니다.
5. 접근 방식 D: End-to-End RL with VLA Architecture
5.1 아키텍처 개요
GR00T와 유사한 VLA 아키텍처 (Vision Encoder + Language Model + Action Head)를 사용하되, Imitation Learning 대신 처음부터 RL로 학습합니다. Task-specific 최적 성능이 필요할 때 사용합니다.
5.2 아키텍처 구성
| Component | Configuration |
|---|---|
| Vision Encoder | SigLIP/DINOv2 (frozen or fine-tuned), multi-view support |
| Language Encoder | Qwen-VL 또는 smaller LLM, task embedding 생성 |
| Policy Head | Diffusion Transformer (Flow Matching) 또는 Gaussian MLP |
| Value Head | 별도 MLP critic (shared backbone features) |
5.3 개발 단계
Phase 1: Architecture Setup (3-4주)
- Model Architecture: VLA backbone 구현 (OpenVLA 참조 가능)
- Isaac Lab Integration: GPU-accelerated parallel environments
- RL Algorithm Selection: PPO (stable) 또는 SAC (sample efficient)
- Reward Engineering: Task-specific dense + sparse rewards
Phase 2: Large-scale Training (4-8주)
- Curriculum Learning: 쉬운 task → 어려운 task 순차 학습
- Domain Randomization: 물리, 시각, 목표 다양화
- Multi-task Training: 여러 manipulation skill 동시 학습
- Hyperparameter Tuning: Large-scale sweep
Phase 3: Evaluation & Deployment (3-4주)
- Sim Benchmark: 표준화된 task suite에서 성능 측정
- Sim-to-Real Transfer: Zero-shot 또는 few-shot adaptation
- Comparison Study: IL baseline (GR00T) 대비 성능 비교
🔬 연구 관점에서의 가치
End-to-End RL with VLA는 ’IL이 정말 필요한가?’라는 근본적 질문에 답할 수 있습니다. 특정 task에서 RL이 IL을 능가하면, 그 gap을 분석하여 IL 데이터 품질이나 coverage 문제를 진단할 수 있습니다. Allegro Hand 연구 플랫폼에서 이런 비교 연구는 논문 contribution이 될 수 있습니다.
5.4 컴퓨팅 자원 요구사항
학습 단계
| 구분 | 사양 | 용도 |
|---|---|---|
| VLA RL 학습 | H100 × 8 (80GB each) | Large-scale parallel RL |
| 대안 (소규모) | RTX 4090 × 4 | Smaller model, 적은 환경 |
| Vision Encoder | Pre-trained (frozen) | GPU 메모리 절약 |
| CPU/RAM | 64+ cores, 256GB RAM | 병렬 환경 시뮬레이션 |
| Storage | NVMe SSD 2TB+ | 체크포인트, 리플레이 버퍼 |
예상 학습 시간
| 단계 | GPU | 예상 시간 |
|---|---|---|
| Architecture Setup | - | 1-2주 (엔지니어링) |
| Single Task RL | H100 × 8 | 24-48시간 |
| Multi-task RL | H100 × 8 | 72-168시간 |
| Hyperparameter Sweep | H100 × 8 | 48-96시간 |
| 총 GPU 시간 | - | 150-300시간 |
스케일링 고려사항
| 환경 수 | GPU 요구량 | 예상 성능 |
|---|---|---|
| 1,024 envs | RTX 4090 × 2 | Baseline (느림) |
| 4,096 envs | RTX 4090 × 4 | 적정 (권장 최소) |
| 16,384 envs | H100 × 4 | 빠름 |
| 65,536 envs | H100 × 8 | 최적 (대규모 연구) |
추론/배포 단계
| 구분 | 사양 | 비고 |
|---|---|---|
| Full VLA 추론 | RTX A6000 (48GB) | FP16 inference |
| 최적화 버전 | Jetson AGX Orin (64GB) | TensorRT, INT8 양자화 |
| 경량화 버전 | Jetson Orin NX (16GB) | Distilled smaller model |
예상 비용 (클라우드 기준)
AWS p4de.24xlarge (H100 × 8): ~$40/hr
- Single task RL: 48시간 × $40 = ~$1,920
- Multi-task RL: 168시간 × $40 = ~$6,720
- HP Sweep: 96시간 × $40 = ~$3,840
총 예상 클라우드 비용: ~$12,000-15,000 (comprehensive study)
메모리 최적화 전략
| 기법 | 메모리 절감 | Trade-off |
|---|---|---|
| Gradient Checkpointing | 40-60% | 학습 속도 20% 감소 |
| Mixed Precision (FP16) | 50% | 거의 없음 |
| Frozen Vision Encoder | 30% | 약간의 성능 하락 가능 |
| Smaller Action Head | 20% | 표현력 감소 |
💡 실용적 팁
H100 클러스터가 없다면, Vision Encoder를 freeze하고 RTX 4090 × 4로 시작하세요. 환경 수를 4,096으로 제한하면 24GB VRAM으로도 학습 가능합니다. 성능이 검증되면 클라우드로 스케일업하는 전략이 비용 효율적입니다.
6. 접근 방식 선택 가이드
6.1 의사결정 트리
아래 질문에 따라 적합한 접근 방식을 선택하세요:
| 상황 | 권장 접근 방식 |
|---|---|
| 이미 수집된 데모 데이터가 있고, 성능을 조금 더 개선하고 싶다 | B. Residual RL |
| 안정적인 low-level 제어가 필수적인 contact-rich task | A. 계층적 구조 |
| Task-specific 최고 성능이 필요하고, 충분한 compute 자원이 있다 | D. End-to-End RL |
| Real-world 상호작용이 비싸고 데이터 효율성이 중요하다 | C. World Model RL |
| 빠른 프로토타이핑이 필요하고 리스크를 최소화하고 싶다 | B. Residual RL |
6.2 Allegro Hand V4 + VLA 연구를 위한 추천 로드맵
Wonik Robotics의 Allegro Hand V4 플랫폼과 VLA 연구 맥락을 고려할 때, 다음과 같은 단계적 접근을 권장합니다:
Step 1: Residual RL로 시작 (2-3개월)
- GR00T post-training으로 base policy 확보
- 간단한 grasping task에서 residual RL 검증
- Sim-to-real pipeline 구축 경험 축적
Step 2: 계층적 구조 발전 (3-4개월)
- Isaac Lab에서 Allegro Hand RL controller 개발
- VLA와 RL controller interface 최적화
- Contact-rich manipulation task 확장
Step 3: 연구 방향 선택 (장기)
- CES 등 전시용: Step 1-2 결과 활용한 데모 시스템
- 연구 논문용: End-to-End RL vs IL 비교 연구
- 플랫폼 가치 제고: 다양한 접근법 지원하는 SDK 개발
7. 컴퓨팅 자원 종합 비교
7.1 접근 방식별 비용 비교
| 접근 방식 | 학습 GPU | 학습 시간 | 클라우드 비용 | 온프레미스 권장 |
|---|---|---|---|---|
| A. 계층적 구조 | RTX 4090 × 2 + H100 × 1 | 24-48시간 | $550-800 | RTX 4090 × 2 |
| B. Residual RL | RTX 4090 × 1 + A6000 × 1 | 16-32시간 | $20-50 | RTX 4090 × 1 |
| C. World Model RL | H100 × 8 | 120-250시간 | $4,500-8,000 | 클라우드 필수 |
| D. End-to-End RL | H100 × 8 | 150-300시간 | $12,000-15,000 | 클라우드 필수 |
7.2 추론 하드웨어 비교
| 접근 방식 | 최소 사양 | 권장 사양 | 지연시간 목표 |
|---|---|---|---|
| A. 계층적 구조 | Jetson Orin NX 16GB | Jetson AGX Orin 64GB | < 50ms |
| B. Residual RL | Jetson Orin NX 16GB | Jetson AGX Orin 32GB | < 30ms |
| C. World Model RL | RTX 4090 Desktop | RTX A6000 | < 100ms |
| D. End-to-End RL | Jetson AGX Orin 64GB | RTX A6000 | < 50ms |
7.3 데이터 요구사항 비교
| 접근 방식 | 데모 데이터 | 비디오 데이터 | 총 저장 용량 |
|---|---|---|---|
| A. 계층적 구조 | 50-100 episodes | - | ~50GB |
| B. Residual RL | 50-100 episodes | - | ~50GB |
| C. World Model RL | 1,000+ episodes | 10,000+ clips | ~5TB |
| D. End-to-End RL | - (RL only) | - | ~500GB (replays) |
7.4 비용 대비 효과 분석
투자 대비 효과 (ROI) 순위:
1위: B. Residual RL
- 비용: $20-50
- 기대 성능 향상: 10-30%
- ROI: ★★★★★
2위: A. 계층적 구조
- 비용: $550-800
- 기대 성능 향상: 30-50%
- ROI: ★★★★☆
3위: D. End-to-End RL
- 비용: $12,000-15,000
- 기대 성능 향상: Task-specific 최적
- ROI: ★★★☆☆ (연구 가치 포함 시 ★★★★☆)
4위: C. World Model RL
- 비용: $4,500-8,000
- 기대 성능 향상: 불확실
- ROI: ★★☆☆☆ (연구 선도 시 ★★★★☆)
8. 기술 스택 요약
8.1 필수 도구
| Category | Tool | Purpose |
|---|---|---|
| Simulation | Isaac Lab / Isaac Sim | RL 학습 환경, 물리 시뮬레이션 |
| RL Framework | RSL-RL, RL-Games, Stable Baselines3 | Policy 최적화 |
| VLA Model | GR00T N1.6, OpenVLA | High-level policy |
| Hardware | Jetson AGX Orin | 온보드 추론 |
| Teleoperation | MANUS Core 3 SDK | 데모 데이터 수집 |
8.2 권장 클라우드 제공업체
| 제공업체 | GPU 유형 | 가격 (대략) | 장점 |
|---|---|---|---|
| Lambda Labs | RTX 4090, A100 | $0.75-2.50/hr | 저렴, 빠른 프로비저닝 |
| AWS | A100, H100 | $3-40/hr | 안정성, 스케일 |
| Google Cloud | A100, H100 | $3-35/hr | TPU 옵션, JAX 호환 |
| CoreWeave | A100, H100 | $2-30/hr | GPU 특화, 좋은 가성비 |
| RunPod | RTX 4090, A100 | $0.5-2/hr | 최저가, spot 인스턴스 |
9. 핵심 메시지
📌 GR00T와 RL은 경쟁 관계가 아니라 상호 보완적입니다.
- GR00T (IL): Generalization과 language grounding에 강점
- RL: 특정 task에서의 최적 성능과 robustness에 강점
두 가지를 적절히 조합하는 것이 실용적인 로봇 시스템 구축의 핵심입니다.
참고 자료
부록: 접근법별 선행 연구 및 소스코드
A. 계층적 구조 (Hierarchical Architecture) 관련 자료
| 분류 | 제목 | 설명 | 링크 |
|---|---|---|---|
| 핵심 논문 | HumanoidBench (2024) | Hierarchical RL baseline으로 low-level skill policy + high-level planning 검증 | Paper / Code |
| 핵심 논문 | Object-Centric Dexterous Manipulation | Human motion data로 high-level trajectory 생성 + RL low-level controller | Project |
| 핵심 논문 | DexPBT (RSS 2023) | Population-based training으로 hand-arm dexterous manipulation | Paper / Code |
| 핵심 논문 | DextrAH-RGB | Privileged RL teacher + vision-based student distillation | Paper / Code |
| 시뮬레이션 | Isaac Lab | GPU-accelerated robot learning framework | Code |
| 시뮬레이션 | IsaacGymEnvs | Shadow Hand, Allegro Hand RL 환경 | Code |
| 시뮬레이션 | Bi-DexHands | Bimanual dexterous manipulation 벤치마크 | Code |
| Awesome List | Awesome Humanoid Robot Learning | Humanoid/dexterous 논문 종합 리스트 | Code |
B. Residual RL Fine-tuning 관련 자료
| 분류 | 제목 | 설명 | 링크 |
|---|---|---|---|
| 핵심 논문 | Residual Reinforcement Learning (ICRA 2019) | 원조 Residual RL 논문 - conventional controller + RL residual | Paper / Project |
| 핵심 논문 | Residual Policy Learning (CoRL 2019) | Non-differentiable base policy 위에 residual 학습 | Paper / Code |
| 핵심 논문 | Residual Skill Policies (CoRL 2022) | Skill VAE + residual RL로 adaptable action space | Paper / Code |
| 핵심 논문 | HIL-SERL (2024) | Human-in-the-loop sample-efficient RL, near-perfect success rate | Paper / Code |
| 구현체 | Residual-RL (SB3) | Stable Baselines3 기반 Residual RL 구현 | Code |
| 구현체 | HIL-SERL Simulation | HIL-SERL 시뮬레이션 버전 | Code |
| 튜토리얼 | LeRobot HIL-SERL | HuggingFace LeRobot HIL-SERL 워크플로우 가이드 | Docs |
C. World Model 기반 RL 관련 자료
| 분류 | 제목 | 설명 | 링크 |
|---|---|---|---|
| 핵심 논문 | DreamerV3 (Nature 2025) | 범용 world model RL, fixed hyperparameters로 다양한 도메인 마스터 | Paper / Code |
| 핵심 논문 | TD-MPC2 (ICLR 2024) | Scalable world model for continuous control, 317M parameter agent | Paper / Code |
| 핵심 논문 | DayDreamer (CoRL 2022) | World model로 physical robot learning (A1 quadruped, XArm) | Paper / Code |
| 핵심 논문 | World Models (2018) | 원조 world model 논문 - VAE + MDN-RNN | Paper |
| 핵심 논문 | FOCUS (2023) | Object-centric world models for robotics manipulation | Paper |
| 핵심 논문 | Dream-MPC | Gradient-based MPC with learned world models | Project |
| 구현체 | SafeDreamer (ICLR 2024) | Safe RL with world models (Lagrangian + Dreamer) | Code |
| Awesome List | Awesome World Model | World model 논문 종합 (AD, Robotics) | Code |
D. End-to-End RL with VLA Architecture 관련 자료
| 분류 | 제목 | 설명 | 링크 |
|---|---|---|---|
| 핵심 논문 | OpenVLA (2024) | 7B parameter open-source VLA, 970k episodes pretrained | Paper / Code |
| 핵심 논문 | OpenVLA-OFT (2025) | VLA fine-tuning recipe, SOTA on LIBERO (97.1%) | Paper / Code |
| 핵심 논문 | VLA-RFT | RL fine-tuning with data-driven world model simulator | Code |
| 핵심 논문 | RL4VLM (NeurIPS 2024) | VLM을 RL로 fine-tuning (PPO 기반) | Paper / Code |
| 핵심 논문 | What Can RL Bring to VLA? | RL vs SFT for VLA generalization 실증 연구 | Project |
| 구현체 | RLinf | VLA + RL 통합 프레임워크 (PPO, GRPO), GR00T-N1.5 지원 | Code |
| Awesome List | Awesome VLA Robotics | VLA 논문/데이터셋/벤치마크 종합 | Code |
| Awesome List | Awesome Robotics Diffusion | Diffusion policy + VLA 논문 리스트 | Code |
공통 인프라 및 벤치마크
| 분류 | 제목 | 설명 | 링크 |
|---|---|---|---|
| 시뮬레이션 | Isaac Lab | NVIDIA의 차세대 robot learning framework | Code |
| 시뮬레이션 | ManiSkill3 | GPU-parallelized manipulation 벤치마크 | Code |
| 시뮬레이션 | LIBERO | Lifelong robot learning 벤치마크 | Code |
| 시뮬레이션 | RoboCasa | Large-scale everyday tasks 시뮬레이션 | Code |
| RL 라이브러리 | RSL-RL | ETH Zurich의 locomotion RL 라이브러리 | Code |
| RL 라이브러리 | RL-Games | GPU-accelerated RL (IsaacGym 호환) | Code |
| RL 라이브러리 | Stable Baselines3 | 범용 RL 라이브러리 | Code |
| 데이터 | Open X-Embodiment | 대규모 로봇 데이터셋 (OpenVLA 학습용) | Project |
| 데이터 | LeRobot | HuggingFace robot learning 플랫폼 | Code |
GPT
GR00T 계열 모델로 task를 “학습시킨다”는 것의 의미와, 그것이 강화학습(RL)과 어떻게 연결되는지를 구분해서 이해하면 관계가 명확해집니다. 아래에서는 NVIDIA GR00T 맥락을 기준으로, 실무·연구 관점에서 정리합니다.
1. GR00T에서 “task를 학습시킨다”는 의미
GR00T는 전통적인 의미의 end-to-end 강화학습 에이전트라기보다, 다음과 같은 역할을 합니다.
(1) 사전학습된 Foundation Model
- 대규모 인간/로봇 시연 데이터, 시뮬레이션 데이터로 학습
- 입력: 멀티모달 상태 (vision, language, proprioception, optional tactile)
- 출력: 고수준 행동 표현 (skill token, action primitive, policy latent)
(2) 사용자가 하는 “학습”은 보통 두 가지
| 구분 | 의미 |
|---|---|
| Fine-tuning / Adaptation | 특정 작업 분포(예: in-hand rotation, tool-use)에 맞게 정책 latent를 적응 |
| Skill 구성/조건화 | language / goal / task embedding을 통해 behavior space를 조건화 |
→ 즉, GR00T 자체는 보상 정의 없이도 “그럴듯한 행동 공간”을 형성합니다.
2. 그렇다면 강화학습은 어디에 등장하는가?
강화학습은 GR00T의 “상위 대체재”가 아니라 “하위 보완재”로 쓰입니다.
핵심 한 줄 요약
GR00T는 “무엇을 해야 하는지”에 강한 priors를 제공하고, RL은 “얼마나 잘” 하도록 수치적으로 미세조정한다.
3. 대표적인 결합 패턴 (중요)
패턴 A: GR00T = Policy Initialization (Warm Start RL)
가장 정석적인 구조입니다.
π_GR00T(s, g) → 초기 정책
↓
RL fine-tuning (PPO / SAC / RSL-RL / iLQR hybrid)
↓
π*(s, g) (task-optimal policy)
장점
- 탐색(search) 난이도 대폭 감소
- sparse reward / contact-rich task에서 학습 안정성 ↑
- sim-to-real transfer 성공률 ↑
특히 적합한 과제
- Allegro Hand in-hand manipulation
- tool-use, contact-rich rotation
- 고자유도 humanoid hand
패턴 B: GR00T = High-Level Planner, RL = Low-Level Controller
(로봇공학적으로 매우 “좋은” 분해)
GR00T: task / language / scene → skill / subgoal
RL Policy: subgoal → torque / joint command
예시:
- GR00T: “rotate object 90 degrees clockwise”
- RL: finger contact sequence + force regulation
관점
- GR00T는 VLA(Vision-Language-Action) planner
- RL은 feedback controller + optimal control
패턴 C: RL이 GR00T를 ‘보상으로’ 학습함 (Less common, research-heavy)
- GR00T의 latent / 행동을 teacher로 두고
- RL policy가 이를 imitation + reward shaping으로 따라감
r_total = r_task + λ * similarity(a_RL, a_GR00T)
→ 순수 RL 대비 매우 빠른 수렴 → 실제로는 IL + RL hybrid
4. 중요한 오해 정리
❌ “GR00T를 학습시키면 RL이 필요 없어지는가?”
→ 아니오.
이유:
실제 로봇에서는
- 마찰, compliance
- actuator delay
- 모델 불일치
이런 요소는 보상 기반 적응(RL)이 훨씬 강함
❌ “GR00T는 RL의 새로운 알고리즘인가?”
→ 아니오.
| GR00T | RL |
|---|---|
| Representation / Prior | Optimization |
| Offline 학습 중심 | Online/Simulation 학습 |
| Skill/Intent 표현 | Reward 극대화 |
| 데이터 중심 | 상호작용 중심 |
5. 로봇 핸드 연구자 관점에서의 정리
Allegro Hand / Dexterous Manipulation 기준으로 보면:
가장 현실적인 파이프라인
(1) Human / Teleop / Simulation 데이터
↓
(2) GR00T fine-tuning (skill prior 학습)
↓
(3) IsaacSim / real robot에서 RL fine-tuning
↓
(4) Robust in-hand policy
왜 이 구조가 중요한가?
- 고자유도 Hand에서 pure RL은 데이터·시간·비용 모두 큼
- GR00T는 탐색 공간을 “조각”내어 줌
- RL은 그 조각 안에서 최적해를 다듬음
6. 비유로 요약
- GR00T: “이 상황에서는 손가락을 이렇게 쓰는 게 자연스럽다”를 이미 알고 있는 숙련된 인간의 감각
- 강화학습: 그 감각을 바탕으로 점수 게임을 반복 연습하며 가장 높은 점수를 내는 방식
7. 한 문장 요약
GR00T로 task를 학습시킨다는 것은, 강화학습이 ‘헤매지 않도록’ 잘 정의된 행동 공간과 초기 정책을 만들어 주는 것이며, 강화학습은 그 위에서 실제 물리 세계에 최적화된 정밀 조정을 담당한다.
GR00T × PPO 결합 파이프라인
아래에서는 Isaac Sim + Allegro Hand 기준으로 GR00T × PPO 결합 파이프라인을 실제 구현 관점에서 정리하고, 이 구조로 “명확하게 가능한 Task 범위”를 구분해서 설명합니다.
1. 전체 구조 한눈에 보기 (역할 분해가 핵심)
이 파이프라인의 핵심은 “GR00T는 탐색을 대신하지 않는다”, “PPO는 의미 없는 공간에서 헤매지 않는다”는 명확한 역할 분담입니다.
[Human / Sim / Scripted Data]
↓
GR00T Fine-tuning
(Skill Prior)
↓
---------------------------------
| RL Stage (PPO) |
| State + GR00T Latent → Action |
---------------------------------
↓
Allegro Hand
(Sim → Real)
2. 시스템 구성 요소별 정리
2.1 Isaac Sim (Environment Layer)
역할
- 물리적으로 타당한 contact-rich 환경
- 대규모 병렬 RL 학습 (256–4096 envs)
세부 구성
Allegro Hand USD (joint limits, inertia, contact material)
Object (cube, cylinder, bottle, tool)
Domain Randomization
- friction: 0.2–1.5
- object mass: ±30%
- joint damping / latency noise
2.2 Allegro Hand (Control Interface)
제어 모드
- 기본: Joint Position / Velocity Control
- PPO 출력은 Δq 또는 target q
- (실물 이식 시) PD gain table 고정 + policy는 reference만 생성
2.3 GR00T (Skill Prior / High-level Policy)
입력
- Vision (RGB / optional depth)
- Hand proprioception
- Task condition (language or token)
출력
z_skill: 저차원 skill latent- 또는 mid-level action primitive
중요 포인트
- GR00T는 보상 없이 학습
- Teleoperation / scripted rollout / synthetic motion 가능
- “성공 패턴의 통계적 구조”를 기억함
2.4 PPO (Task Optimization Layer)
입력
obs = [
joint_pos, joint_vel,
fingertip force (optional),
object pose / velocity,
z_skill (from GR00T)
]
출력
- Allegro Hand joint target (Δq or q_target)
보상 예시
- task success (sparse)
- contact stability
- energy penalty
- smoothness
중요
- PPO는 GR00T가 만든 행동 manifold 내부에서만 최적화
- 완전 자유 탐색 X
3. 학습 단계별 구체 파이프라인
Step 1. Task 정의 (가장 중요)
각 task는 반드시 다음으로 정의됩니다:
| 항목 | 예 |
|---|---|
| 초기 상태 분포 | object pose random |
| 성공 조건 | orientation error < 5° |
| 시간 제한 | 3–5 sec |
| 평가 기준 | success rate |
Step 2. GR00T Skill Prior 학습
데이터 예
- Teleop hand pose
- Sim에서 scripted grasp → rotate
- Physics-unaware trajectory도 OK
학습 목적
- “이런 task에서는 이런 손 모양이 자주 등장한다”
이 단계까지만 해도:
- Task 성공률 낮음
- 물리적 안정성 부족
→ 정상입니다.
Step 3. PPO Fine-tuning (핵심 단계)
특징
- GR00T latent는 frozen 또는 slow update
- PPO는 contact / force / timing만 다듬음
결과
- 성공률 급상승
- 정책 variance 감소
- sim-to-real gap 축소
4. 이 파이프라인으로 가능한 Task 정리 (중요)
아래는 “실제로 성공 가능성이 높은 Task” 기준 분류입니다.
✅ Tier 1: 안정적으로 가능한 Task (강력 추천)
1. In-Hand Object Rotation
- cube / cylinder / bottle
- yaw / pitch / roll 단일축 또는 조합
이유
- GR00T가 grasp topology 제공
- PPO는 slip / force만 최적화
2. Regrasp + Pose Adjustment
- grasp → release 일부 finger → re-contact
- orientation refinement
활용
- Pick & Rotate
- In-hand alignment
3. Continuous Pose Regulation
- object orientation 유지
- external disturbance 대응
현실 응용
- human-robot handoff
- compliance demo
✅ Tier 2: 조건부 가능 (설계 중요)
4. Tool-in-Hand Manipulation
- screwdriver rotation
- knob turning
조건
- Tool geometry 충분히 단순
- GR00T에 tool-specific prior 필요
5. Precision Placement (Hand-centric)
- hand 내부에서 pose 정렬 후 place
- arm motion은 별도 controller
⚠️ Tier 3: 비추천 또는 추가 계층 필요
6. Full Task Sequencing (Pick → Manipulate → Place)
- long-horizon planning 필요
- PPO 단독으로는 어려움
→ 해결책:
- GR00T planner + RL controller 계층화
5. 이 구조의 “핵심 장점” 정리
| 항목 | Pure RL | GR00T × PPO |
|---|---|---|
| 탐색 난이도 | 매우 높음 | 낮음 |
| 데이터 효율 | 낮음 | 높음 |
| 안정성 | 불안정 | 높음 |
| Sim2Real | 어려움 | 비교적 용이 |
| Demo 확장성 | 낮음 | 매우 높음 |
6. 연구 데모 관점에서의 “메시지”
이 구조는 다음 메시지를 아주 명확하게 전달할 수 있습니다:
“우리는 손 로봇을 학습시키는 것이 아니라, 이미 잘 쓰는 법을 아는 손을 물리적으로 더 잘 쓰도록 조율한다.”
7. 한 줄 결론
Isaac Sim + Allegro Hand 환경에서 GR00T × PPO는 ’dexterous hand manipulation을 실험실 수준이 아닌 실제 데모 수준으로 끌어올릴 수 있는 가장 현실적인 구조’다.
GR00T latent를 PPO에 연결하는 코드 구조
아래는 “GR00T latent(z)을 PPO(Actor-Critic) 입력으로 붙이는” 가장 실전적인 코드 구조입니다. Isaac Sim(벡터라이즈드 env) + PPO(rl_games 스타일 또는 자체 PPO) 기준으로, 학습·추론 경로가 일관되도록 설계합니다.
1) 설계 원칙 (꼭 지켜야 하는 4가지)
GR00T는 Environment 밖에서만 호출
- env step 내부(Physics callback)에서 VLM/큰 모델 호출하면 병렬성이 깨집니다.
- “Rollout 수집 루프(파이썬)”에서
obs → z를 만들고 env에 action만 넣습니다.
z는 “관측의 일부”로 취급
- PPO 관점에서
obs_aug = [obs, z] - z는 학습 동안 frozen(권장) 또는 느리게 업데이트(고급)
- PPO 관점에서
z의 시간 정합
z_t = GR00T(obs_t)로 만들고a_t = π(obs_t, z_t)로 바로 사용 (off-by-one 금지)
학습 안정화를 위해 z normalization
z는 반드시 RunningMeanStd 혹은 LayerNorm으로 스케일 맞추기
2) 코드 아키텍처 (추천 디렉토리)
project/
GR00T/
wrapper.py # GR00T 모델 로딩/전처리/추론
preprocess.py # rgb/depth/proprio -> model input
rl/
models.py # PPO ActorCritic (obs+z)
storage.py # rollout buffer
ppo.py # PPO update
env/
isaac_env.py # IsaacSim VecEnv wrapper
train.py # main loop: obs -> z -> action -> step
3) 핵심: GR00T Wrapper (PyTorch 모듈 형태)
GR00T/wrapper.py
import torch
import torch.nn as nn
class GrootEncoder(nn.Module):
"""
GR00T에서 PPO에 넣을 latent z를 뽑아주는 'encoder' 인터페이스.
- 여기서 z dimension을 고정 (예: 128, 256)
- PPO는 z를 그냥 관측으로 사용
"""
def __init__(self, GR00T_model: nn.Module, z_dim: int = 256, device="cuda"):
super().__init__()
self.model = GR00T_model.to(device)
self.device = device
self.z_dim = z_dim
# (선택) GR00T 내부 출력 차원이 PPO z_dim과 다르면 projection
self.proj = None # nn.Linear(in_dim, z_dim) 등으로 교체
self.model.eval() # 기본은 frozen 사용 권장
@torch.no_grad()
def forward(self, GR00T_inputs: dict) -> torch.Tensor:
"""
GR00T_inputs: {"rgb":..., "proprio":..., "lang":...} 등
return: z [B, z_dim]
"""
# 예시: GR00T가 "features" 또는 "latent"를 반환한다고 가정
out = self.model(**GR00T_inputs)
# 프로젝트마다 다릅니다: out에서 무엇을 z로 쓸지 결정
# 예: out["latent"] shape [B, D]
z = out["latent"]
if self.proj is not None:
z = self.proj(z)
return z- 실 구현에서 GR00T의 실제 출력 키가 다를 수 있으니, 여기 한 군데에서만 어댑트하세요.
- PPO와 GR00T 결합에서 “깨지는 지점”의 80%가 이 wrapper에서의 shape/정규화 문제입니다.
4) PPO 모델: obs + z 결합 Actor-Critic
rl/models.py
import torch
import torch.nn as nn
import torch.nn.functional as F
class RunningNorm(nn.Module):
"""간단 버전. 실전에서는 rl_games의 RunningMeanStd 쓰거나 더 안정적인 구현 권장."""
def __init__(self, dim, eps=1e-5):
super().__init__()
self.register_buffer("mean", torch.zeros(dim))
self.register_buffer("var", torch.ones(dim))
self.register_buffer("count", torch.tensor(eps))
@torch.no_grad()
def update(self, x):
# x: [B, dim]
batch_mean = x.mean(dim=0)
batch_var = x.var(dim=0, unbiased=False)
batch_count = x.shape[0]
delta = batch_mean - self.mean
tot_count = self.count + batch_count
new_mean = self.mean + delta * batch_count / tot_count
m_a = self.var * self.count
m_b = batch_var * batch_count
M2 = m_a + m_b + delta**2 * self.count * batch_count / tot_count
new_var = M2 / tot_count
self.mean.copy_(new_mean)
self.var.copy_(new_var)
self.count.copy_(tot_count)
def forward(self, x):
return (x - self.mean) / torch.sqrt(self.var + 1e-8)
class ActorCriticWithZ(nn.Module):
def __init__(self, obs_dim: int, z_dim: int, act_dim: int, hidden=512):
super().__init__()
self.obs_norm = RunningNorm(obs_dim)
self.z_norm = RunningNorm(z_dim)
in_dim = obs_dim + z_dim
self.trunk = nn.Sequential(
nn.Linear(in_dim, hidden),
nn.ReLU(),
nn.Linear(hidden, hidden),
nn.ReLU(),
)
self.actor_mean = nn.Linear(hidden, act_dim)
self.log_std = nn.Parameter(torch.zeros(act_dim)) # Gaussian policy
self.critic = nn.Linear(hidden, 1)
def forward(self, obs, z):
# obs: [B, obs_dim], z: [B, z_dim]
obs_n = self.obs_norm(obs)
z_n = self.z_norm(z)
h = self.trunk(torch.cat([obs_n, z_n], dim=-1))
mean = self.actor_mean(h)
value = self.critic(h).squeeze(-1)
return mean, self.log_std, value
@torch.no_grad()
def act(self, obs, z):
mean, log_std, value = self.forward(obs, z)
std = log_std.exp()
dist = torch.distributions.Normal(mean, std)
action = dist.sample()
logp = dist.log_prob(action).sum(dim=-1)
return action, logp, value5) 학습 루프: “obs → GR00T → z → PPO → action → env.step” (핵심)
train.py (핵심 부분만)
import torch
from GR00T.wrapper import GrootEncoder
from rl.models import ActorCriticWithZ
def build_GR00T_inputs(obs_batch):
"""
obs_batch에서 GR00T가 요구하는 입력만 뽑아서 dict로 만들기.
- 예: rgb 이미지, proprio, language embedding 등
"""
# 예시: obs_batch가 dict 형태라고 가정
return {
"rgb": obs_batch["rgb"], # [B, 3, H, W]
"proprio": obs_batch["proprio"], # [B, P]
"lang": obs_batch.get("lang", None)
}
def flatten_policy_obs(obs_batch):
"""
PPO에 들어갈 low-level 관측 벡터.
- object pose/vel, joint pos/vel 등만 포함
"""
return obs_batch["policy_obs"] # [B, obs_dim]
def main():
device = "cuda"
env = ... # IsaacSim VecEnv wrapper, returns dict obs
GR00T_model = ... # 로딩 (사용자 프로젝트)
gr_enc = GrootEncoder(GR00T_model, z_dim=256, device=device)
obs_dim = env.obs_dim
z_dim = 256
act_dim = env.act_dim
ac = ActorCriticWithZ(obs_dim, z_dim, act_dim).to(device)
ppo = ... # PPO optimizer/update 구현
obs = env.reset() # dict of tensors/np
for it in range(1_000_000):
# 1) rollout 수집
for t in range(env.horizon):
obs_t = env.to_torch(obs, device=device)
gr_inputs = build_GR00T_inputs(obs_t)
z_t = gr_enc(gr_inputs) # [B, z_dim]
policy_obs_t = flatten_policy_obs(obs_t) # [B, obs_dim]
# running norm 업데이트 (on-policy로 조금씩)
ac.obs_norm.update(policy_obs_t)
ac.z_norm.update(z_t)
action_t, logp_t, value_t = ac.act(policy_obs_t, z_t)
next_obs, reward, done, info = env.step(action_t)
# storage에 (policy_obs_t, z_t, action_t, logp_t, reward, done, value_t) 저장
ppo.storage.add(policy_obs_t, z_t, action_t, logp_t, reward, done, value_t)
obs = next_obs
# 2) PPO update
ppo.update(ac)
# 3) (선택) 평가 / 체크포인트이 구조의 장점:
- GR00T 추론은 rollout 루프의 “한 줄”이고,
- PPO는
obs_dim + z_dim만 알면 됩니다. - env는 GR00T를 전혀 몰라도 됩니다.
6) rl_games / IsaacGymEnvs 스타일로 붙이는 위치 (실무 팁)
rl_games를 쓰는 경우, 결합 포인트는 보통 둘 중 하나입니다.
옵션 A) Env가 반환하는 obs에 z를 넣기 (가장 단순)
- env
get_observations()에서policy_obs를 만들고, - 그 상위 wrapper에서
z를 계산해obs["obs"] = concat(policy_obs, z)로 덮어씀 - rl_games는 “그냥 obs_dim이 커졌다”로만 인식
장점: 기존 PPO 코드 변경 최소 단점: z 계산이 env 밖 wrapper에 있어야 함 (권장)
옵션 B) 네트워크 forward에서 z를 계산 (비권장)
- actor-critic이 GR00T를 내부에 포함
- 학습/추론 시 항상 GR00T 호출
단점이 큽니다:
- 병렬 rollout에서 병목
- 추론 latency
- 디버깅 난이도 상승
따라서 옵션 A가 권장입니다.
7) 자주 발생하는 실패 케이스
z가 너무 큰 스케일
- policy가 z에 끌려가며 폭주
- 해결: z_norm / LayerNorm / clip
z가 관측보다 정보량이 과도
- PPO가 proprio/object를 무시하고 z만 믿음
- 해결: z dropout(학습 중 확률적으로 z=0), 또는 작은 z_dim
z가 시간적으로 느리게 변함
- “그럴듯한 grasp”는 주는데 slip 대응이 안 됨
- 해결: PPO 관측에 fingertip force / contact proxy 추가
학습 중 GR00T까지 같이 업데이트
- 매우 불안정, 재현성 낮음
- 해결: 1차는 무조건 frozen, 이후에만 제한적 fine-tune
8) 최소 구현 체크리스트
“GR00T + PPO (또는 다른 RL 알고리즘)”의 결합이 실제로 논문/연구 결과로 존재하는지를 찾고 검토한 요약입니다.
결론부터 말하면, 2025-2026 기준으로 GR00T 자체와 PPO를 명시적으로 결합해 Dexterous Hand + Arm 조작을 수행했다는 공개된 연구 논문은 아직 존재하지 않는 것으로 보입니다. 그러나 관련 연구 흐름과 강화학습을 결합한 VLA/RL-VLA 방향 연구 및 실전 로봇 조작 사례는 분명히 존재합니다.
1. GR00T 관련 공식 개발/워크플로우
NVIDIA GR00T 자체 생태계
GR00T는 NVIDIA Isaac Sim/Isaac Lab과 통합된 로봇 파운데이션 모델로 설계되어 있으며, 다양한 시뮬레이션 데이터를 생성하고 모방/합성 데이터로 학습된 multimodal VLA 정책을 제공합니다. (파이토치 한국 사용자 모임)
GR00T-Dreams Blueprint는 시뮬레이션 기반 궤적 생성 and VLA 학습 파이프라인으로, 물체 조작 및 궤적 일반화 등의 작업 수행에 사용되며 RL-기반 policy development workflow도 지원한다고 소개되고 있습니다 (예: DextrAH-G 기반 workflow). (NVIDIA Developer)
시사점
- 여기까지는 정책/궤적 생성, 데이터 합성 등 VLA 기반 학습 플로우 설명이고,
- 명시적인 “PPO와 연계한 dexterous hand + arm 제어” 논문은 아직 공개된 형태로는 나타나지 않습니다.
2. “VLA + Reinforcement Learning” 연구 흐름
RL-VLA Survey
- 최근 연구 추세로, Vision-Language-Action (VLA) + RL 결합이 대규모 로봇 정책 일반화를 위해 활발히 연구되고 있습니다.
- Survey 논문들은 RL을 VLA 사전학습 이후 상황 대응/일반화를 위해 사용하는 다양한 패러다임을 정리합니다. (ResearchGate)
예시 내용
- RL-VLA architecture: RL을 VLA 아카이브에 통합하는 구조
- RL training paradigms: 온라인, 오프라인, test-time RL
- Sim2Real, human-in-the-loop 같은 deployment 측면 강조
→ 이 survey는 GR00T처럼 VLA(Foundation Model) + RL 결합 방향의 연구 흐름을 정리하는 참고로 활용할 수 있습니다.
3. RL 기반 로봇 조작 연구 (VLA 아님)
다음 연구들은 dexterous hand 또는 hand-arm 시스템에 PPO/기타 RL 알고리즘을 적용한 사례입니다. 이들은 GR00T 없이 RL로만 수행된 연구입니다.
Dexterous In-Hand Manipulation (PPO)
- Shadow Hand를 MuJoCo 환경에서 PPO를 사용해 pen_rotate task처럼 dexterous in-hand manipulation을 학습한 사례가 있습니다. 이 연구는 고차원 관절 제어 + PPO로 dexterous 행동을 학습합니다. (IJRES)
→ GR00T 기반은 아니지만 부분적으로 hand manipulation + PPO 조합 연구 예시라는 점에서 참고 가치가 있습니다.
4. RL + Hand-Arm 연구 중 최신 예 (논문)
비록 GR00T와 직접 결합했다고 명시되지는 않지만, RL을 기반으로 한 dexterous/hand-arm control 연구는 있습니다:
4.1 GR-RL: Going Dexterous and Precise for Long-Horizon Robotic Manipulation
- VLA/Generalist policy를 RL로 보완하는 multi-stage pipeline 제안
- long-horizon manipulation과 정밀 제어 향상
- 복잡한 작업 (예: 신발끈 끼우기)까지 기존 VLA를 RL로 강화
- (GR00T와 직접 언급되지는 않지만, VLA + RL 패러다임을 구체화) (arXiv)
→ 이런 논문은 GR00T처럼 범용 foundation model을 강화학습으로 정밀화하는 대표적 최신 방향성을 보여 줍니다.
4.2 Closing the Reality Gap: Zero-Shot Dexterous Policies
- multi-finger hand 훈련에 PPO 기반 asymmetric actor-critic 도입
- tactile + torque 기반 관측을 포함하여 real policy zero-shot sim-to-real 도달 (arXiv)
→ hand + arm 조작 스펙트럼을 넓히는 최근 연구 예시입니다.
5. 결론: GR00T × PPO 연구 상태
| 항목 | 공개 여부 / 상태 |
|---|---|
| GR00T + PPO을 논문에서 통합해 hand + arm dexterity를 직접적으로 학술적으로 발표 | 아직 없음 (2025-2026 기준) |
| VLA + RL 결합 연구 방향 (Survey / pipeline 연구) | 존재 (ResearchGate) |
| RL만으로 dexterous hand + arm pose 제어 연구 (PPO/actor-critic 기반) | 다수 존재 (IJRES) |
| GR00T 워크플로우 상에서 RL-기반 dexterity workflow 소개 | 있음 (산업/강화 플로우 설명) (NVIDIA Developer) |
왜 아직 논문이 없는가?
- GR00T 같은 Foundation Model이 공개된 지 비교적 짧음
- 실제 학계에서는 VLA + RL 결합 연구의 난이도/범위가 매우 높고 출판까지 시간이 필요
→ 그래서 실제 데모/엔지니어링 레벨은 존재하지만, 정식 academia 논문 발표는 아직 정리 단계일 가능성이 큽니다.
6. 참고로 볼만한 발표/자료 소스
- NVIDIA Project GR00T 공식 개발 블로그 / 워크플로우 소개 — workflow와 RL 연계 사례 설명 (NVIDIA Developer)
- VLA + RL Survey — 학계 전반 흐름 파악에 유용 (ResearchGate)
- Dexterous RL 논문 (Shadow Hand + PPO) — 기존 RL 알고리즘 설계 참고 (IJRES)
- GR-RL like architectures — foundation policy + RL refine pipeline 컨셉 사례 (arXiv)
7. 정리 포인트
- 직접적인 GR00T×PPO 논문은 아직 없음.
- 그러나 “VLA foundation model + RL 보완” 방향성은 학계 흐름이다.
- 기존 RL 연구는 hand/hand-arm control을 PPO/actor-critic으로 해결해 왔다.
즉, 지금 상태에서는 “GR00T 기반 RL 강화 dexterity 논문 작성이 연구 최전선에 가까운 Topic”이라고 볼 수 있습니다.
코드 스니펫
아래는 Isaac Lab / Isaac Sim 환경을 rl_games에서 그대로 쓸 수 있도록 래핑하고, PPO와 함께 딱 붙여 넣을 수 있는 코드 스니펫입니다. rl_games가 요구하는 관측 관례(obs dict 포함)에 맞추는 구조이며, 실제로 wrapper와 registry 코드 예시를 포함합니다. 이 구조는 rl_games를 PPO 트레이닝 루프에서 사용할 때 필요한 형태입니다. (RobotsFan)
1) rl_games 용 환경 래퍼 (wrapper + registry)
rl_games는 자체 vectorized env 인터페이스를 사용합니다. Isaac Lab 환경(DirectRLEnv 또는 ManagerBasedRLEnv)은 이걸 바로 쓰려면 rl-games wrapper로 감싸야 합니다. (RobotsFan)
아래 코드는 그대로 붙여 넣는 템플릿입니다:
# rl_games_env_wrapper.py
from rl_games.common import env_configurations, vecenv
from isaaclab_rl.rl_games import RlGamesGpuEnv, RlGamesVecEnvWrapper
def create_rlgames_env(base_env, rl_device="cuda:0", clip_obs=10.0, clip_actions=1.0):
"""
base_env: IsaacLab environment instance (ManagerBasedRLEnv or DirectRLEnv)
rl_device: torch device for rl-games
"""
# 1) 래핑
env_wrapped = RlGamesVecEnvWrapper(base_env, rl_device, clip_obs, clip_actions)
# 2) rl-games 레지스트리에 등록
vecenv.register(
"IsaacRlgWrapper",
lambda config_name, num_actors, **kwargs: RlGamesGpuEnv(
config_name, num_actors, **kwargs
),
)
env_configurations.register(
"rlgpu",
{
"vecenv_type": "IsaacRlgWrapper",
"env_creator": lambda **kwargs: env_wrapped,
},
)
return env_wrapped설명
RlGamesVecEnvWrapper는 gpu buffer를 처리하면서 rl_games format으로 변환합니다.- 등록 이름
"rlgpu"는 rl_games 설정 파일에서 environment name으로 쓰게 됩니다. (RobotsFan)
2) 관측 사전(obs dict) 구조
rl_games는 딕셔너리 관측을 기대하며, 특히 asymmetric actor-critic일 때 아래와 같은 key를 기대합니다: (RobotsFan)
"obs"는 policy network 입력으로 사용됩니다."states"는 critic / value network 용 privileged state입니다. Optional. (RobotsFan)
예시: Dict 관측 만들기
def make_rlgames_observation(raw_obs):
"""
raw_obs: Isaac Sim env가 반환한 observation dict
- 예: raw_obs['policy'], raw_obs['privileged'], raw_obs['rgb'], etc.
rl_games가 요구하는 딕셔너리로 변경합니다.
"""
actor_part = raw_obs["policy"] # actor network 용 입력
critic_part = raw_obs.get("privileged") # optional
obs_dict = {
"obs": actor_part
}
if critic_part is not None:
obs_dict["states"] = critic_part
return obs_dictrl_games wrapper는 내부적으로 space 정보(observation_space)에서도 이 구조를 인식합니다. actor / critic 분리가 필요한 asymmetric actor-critic 설정에서는 끝까지 "obs" / "states"로 유지하는 것이 중요합니다. (RobotsFan)
3) PPO 설정 예시 (rl_games config)
rl_games는 설정 파일로 에이전트·환경·학습 파라미터를 읽기 때문에, 등록 이름 "rlgpu"를 환경 이름으로 씁니다:
# ppo_rlgpu.yaml
environment:
name: "rlgpu" # wrapper 등록 이름
vectorized: true
params:
batch_size: 2048
mini_batch_size: 256
lr: 1e-4
gamma: 0.99
network:
# obs key를 명시 (dict input)
inputs:
obs: # actor inputs
shape: [<obs_dim>]
states: # critic (optional)
shape: [<state_dim>]
agent:
name: "ppo"
separate_networks: false
use_gae: true
epoch: 10이 YAML 파일 이름을 rl_games train.py 실행 시 --config ppo_rlgpu.yaml로 지정하면 됩니다.
4) 환경 wrapper + obs 추출 함수 연결 흐름
아키텍처는 크게 아래처럼 연결됩니다:
IsaacLab Env (ManagerBasedRLEnv)
│
▼
RlGamesVecEnvWrapper (gpu/clip 처리, tensorize)
│
▼
rl_games: get_observations()
│
▼
make_rlgames_observation(raw_obs) # 위 2) 코드
│
▼
policy / critic observation dict
이 구조는 rl_games가 요구하는 gpu buffer 최적화 + dictionary obs를 충족합니다. (RobotsFan)
5) 주요 고려사항
지원 포인트
- 딕셔너리 관측 (obs + states): asymmetric actor-critic 적용 시 필요 (RobotsFan)
- gpu 최적화: wrapper가 buffer 이동/clip 처리 (RobotsFan)
제한 및 져야 할 점
- 현재 rl_games wrapper는 gym.spaces.Box 형태의 관측만 공식 지원합니다. dict 전체를 바로 쓰려면 custom wrapper 추가가 필요할 수 있습니다. (GitHub)
- 만약 GR00T에서 multi-modal(예: images + proprio + language) 관측이 dict 형태라면, policy obs만 Box로 통합(flatten/concat)하거나 wrapper를 확장해야 합니다.
6) 빠른 예시: rl_games_train.py 스크립트 라인
rl_games는 일반적으로 아래와 같이 실행합니다:
train.py 내부에서 wrapper가 호출되고, optimizer/PPO가 병렬 env를 이용해 학습합니다. (GitHub)
7) 결론
- IsaacLab 환경을 rl_games용으로 바로 래핑
- obs dict를 PPO가 이해 가능한 형태로 변환
- rl_games PPO 학습 설정 작성