콘텐츠로 이동
Study Note강화학습

15. 로봇 학습 스택 — 대규모 병렬 시뮬레이션

로봇 강화학습의 판을 바꾼 것은 새 알고리즘이 아니라 GPU 위에서 도는 시뮬레이터다

이 장에서 처음 나오는 말6개
물리 시뮬레이터Physics Simulator
강체·접촉·마찰을 수치적으로 푸는 엔진. 환경 P를 우리가 만드는 도구다.
GPU 병렬 시뮬GPU-Parallel Simulation
수천 개 환경을 GPU 메모리 안에서 동시에 굴리는 방식. CPU 왕복이 없어 처리량이 자릿수로 오른다.
URDF · USD · MJCF로봇 기술 포맷
로봇의 링크·관절·질량·충돌 형상을 적은 파일. 시뮬레이터마다 선호 포맷이 다르다.
도메인 무작위화 파이프라인Randomization Pipeline
에피소드마다 물성치를 바꿔 주는 코드 경로. 프레임워크가 기본 기능으로 제공한다.
ONNXOpen Neural Network Exchange
학습된 신경망을 프레임워크 밖으로 내보내는 표준 포맷. 로봇 온보드 추론에 흔히 쓴다.
ROS 2Robot Operating System 2
로봇 소프트웨어의 사실상 표준 미들웨어. 센서·제어 노드를 잇는다. 학습된 정책은 결국 여기에 실린다.

판을 바꾼 것 — 환경을 GPU 안에 넣기

섹션 제목: “판을 바꾼 것 — 환경을 GPU 안에 넣기”

전통적인 구조는 이랬다. CPU에서 물리 시뮬 → 관측을 GPU로 복사 → 신경망 추론 → 행동을 CPU로 복사. 환경 수를 늘려도 이 왕복이 병목이라 처리량이 안 올랐다.

CPU 환경과 GPU 신경망 사이를 복사하는 전통적 구조는 수천~수만 SPS로 보행 학습에 수 시간~수일이 걸리고, 환경까지 GPU에 올린 구조는 수십만~수백만 SPS로 수 분~수십 분에 끝나는 대비

환경·관측·보상 계산까지 전부 GPU 텐서로 두면 복사가 사라진다. 그러면 PPO의 “샘플을 펑펑 쓰는” 성질이 단점이 아니라 장점이 된다 — 6장에서 말한 대량 병렬 수집이 쉬운 조건이 여기서 만들어진다.

도구성격고를 때
MuJoCo 3.11범용 강체·접촉 시뮬레이션, 가볍고 빠르다알고리즘 연구, 벤치마크, 학습용
MuJoCo의 GPU 경로(MJX)같은 모델을 GPU에서 대량 병렬로MuJoCo 자산을 그대로 대규모 학습에
Isaac Sim 6.0 + Isaac Lab 3.0GPU 네이티브 + 사실적 렌더링 + 로봇 자산 생태계실물 배포를 노리는 보행·조작, 카메라가 필요한 과제
게임 엔진 기반렌더링이 강점지각 중심 과제

둘을 같이 쓰는 팀이 많다 — 알고리즘 실험은 MuJoCo에서 빠르게, 실물로 갈 과제는 Isaac Lab에서. 자산 포맷(MJCF ↔ USD/URDF) 변환이 실무의 잔업이다.

Isaac Lab은 알고리즘을 직접 갖지 않고 외부 학습 라이브러리를 꽂아 쓴다.

라이브러리성격
RSL-RL보행 연구에서 널리 쓰인 가벼운 PPO 구현. 대규모 병렬에 맞춰져 있다
rl_games고성능 GPU 학습에 최적화
skrl여러 시뮬레이터·알고리즘을 아우르는 통합 계층
Stable-Baselines3익숙하지만 대규모 GPU 병렬에는 덜 맞는다

시작은 예제가 가장 많은 조합으로 한다. 보행이라면 Isaac Lab + RSL-RL 예제가 출발점이다.

학습에서 실물까지 — 파이프라인

섹션 제목: “학습에서 실물까지 — 파이프라인”
  1. 로봇 자산을 준비한다.

    URDF/USD로 링크·관절·질량·관성·충돌 형상을 기술한다. 질량과 관성이 실물과 다르면 여기서부터 sim-to-real 격차가 시작된다.

  2. 환경을 정의한다.

    관측·행동·보상·종료·무작위화. Isaac Lab은 이것들을 설정 클래스로 나눠 두어 보상 항을 켜고 끄기 쉽게 되어 있다 — 절제 실험(10장)에 유리하다.

  3. 보상과 커리큘럼을 짠다.

    평지 → 경사 → 계단 → 자갈 순으로 지형 난이도를 올리고, 성공률에 따라 자동으로 조절한다 (8장).

  4. 대규모로 학습한다.

    환경을 수천 개(2048~8192) 띄우고 PPO를 돌린다. 보행 학습 시간은 로봇·환경 수·GPU·목표 성능에 따라 수십 분에서 여러 시간 이상까지 달라진다.

  5. 시뮬 안에서 평가한다.

    학습에 안 쓴 지형·물성치 범위, 외란 밀치기, 극단 명령. 시드 여러 개 (10장).

  6. 정책을 내보낸다.

    ONNX나 TorchScript로 추출. 관측 정규화 통계도 같이 내보낸다 (9장).

  7. 실물에 올린다.

    온보드 컴퓨터에서 50Hz로 추론 → 목표 관절 각도 → PD 제어기. ROS 2 노드로 감싸는 것이 일반적이다. 안전 감시 루프를 별도로 둔다.

  8. 격차를 측정해 되먹인다.

    같은 명령에 대한 시뮬과 실물의 궤적 차이를 재고, 액추에이터 모델·지연·무작위화 범위를 고쳐 다시 학습한다 (14장).

  • 디렉터리assets/
    • robot.usd 로봇 자산 — 질량·관성이 실물과 맞는지가 출발점
  • 디렉터리envs/
    • locomotion_env.py 관측·행동·종료
    • rewards.py 보상 항을 함수로 분리 — 절제 실험용
    • randomization.py 물성치·지연·외란
  • 디렉터리configs/
    • ppo_rsl.yaml
    • curriculum.yaml
  • 디렉터리deploy/
    • export_onnx.py 정책 + 정규화 통계
    • ros2_node.py 온보드 추론 루프
    • safety_monitor.py 정책 밖의 안전 층

보행이 위 파이프라인이라면, 조작은 시뮬보다 실물 데이터 쪽에 무게가 있다.

보행조작
주 학습 방식시뮬 RL → 실물실물 시연 → 모방학습 (16장)
데이터시뮬에서 생성사람이 원격 조종으로 수집
대표 스택Isaac Lab + RSL-RLLeRobot 0.6 등
병목sim-to-real 격차데이터 수집 비용

LeRobot은 데이터셋·정책·실기 제어를 한 스택으로 묶은 것이고, 확인 시점(v0.6.1)에는 π0 계열·SmolVLA 등 여러 VLA 정책이 공용 부품으로 통합돼 있다. 저가 로봇 팔로 시작할 수 있어 개인이 실물 경험을 쌓기에 현실적인 진입로다.

항목감각
학습 GPU단순 보행 예제는 단일 GPU에서도 가능. 조작·픽셀 입력은 메모리와 시간이 크게 늘어난다
VRAM병렬 환경 수와 렌더링 여부에 좌우된다. 렌더가 붙으면 급증
시뮬 없는 실물 학습연구 사례는 있지만 수집 비용·안전 때문에 평가와 미세조정에 집중하는 경우가 많다
로봇 실물저가 팔(수십만 원대)부터 사족·이족 플랫폼(수천만 원대)까지 폭이 넓다
클라우드GPU 인스턴스로 학습, 로컬에서 배포하는 조합이 흔하다
단계무엇산출물
1Gymnasium + SB3로 연속 제어 과제 (MuJoCo)기준선 재현, 시드 분포 보고
2보상 항을 바꿔 가며 절제 실험보상 설계를 이해했다는 증거
3Isaac Lab 예제로 사족 보행 학습대규모 병렬 학습 경험
4도메인 무작위화 범위를 바꿔 가며 견고함 측정sim-to-real 감각
5저가 로봇 팔 + LeRobot로 시연 수집·모방학습실물 경험
6ONNX 내보내기 + 실시간 추론 루프배포 경험

3번까지가 “시뮬을 돌려 봤다”, 5~6번이 “실물을 안다” 다. 후자가 이 분야에서 훨씬 희소하다.

  • 로봇 RL의 판을 바꾼 것은 환경을 GPU 안에 넣어 CPU 왕복을 없앤 것이다
  • 환경 4096개는 64개와 다른 결과를 낸다. SPS를 올리는 일이 곧 연구다
  • MuJoCo는 연구·알고리즘용, Isaac Sim + Isaac Lab은 실물 배포를 노리는 대규모 학습용
  • 알고리즘은 외부 라이브러리를 꽂는다 — RSL-RL · rl_games · skrl. 예제가 많은 조합으로 시작한다
  • 설치에서 버전 조합이 가장 자주 막힌다. 공식 도커로 시작한다
  • 파이프라인은 자산 → 환경 → 보상·커리큘럼 → 대규모 학습 → 시뮬 평가 → 내보내기 → 실물 → 격차 되먹임
  • 마지막 되먹임 루프를 빠르게 도는 것이 실력이다. 업무의 실체는 시뮬과 실물을 맞추는 계측이다
  • 조작은 스택이 다르다 — 시뮬 RL이 아니라 실물 시연 + 모방학습(LeRobot 등)이 중심이다
  • 실물을 만져 본 경험이 희소하고, 채용에서 실제 변별점이 된다