물리 환경과 학습기는 다른 책임을 가진다
Isaac Lab은 시뮬레이션 장면·자산·센서와 로봇 학습 환경을 구성하는 도구다. rsl_rl은 정책/가치 네트워크와 rollout/학습 업데이트를 수행하는 학습 라이브러리다. 환경은 관측·보상·종료/전이를 만들고 학습기는 그 계약을 받아 정책을 갱신한다. 환경이 그려진다는 사실은 PPO 학습이 정상이라는 증거가 아니다. 렌더링 없는 실행도 물리·센서/보상 처리가 맞는지 별도 검증해야 한다.
공식 문서는 Direct와 Manager 기반 과제 구성 방식을 설명한다. Direct는 환경 클래스에서 로직을 직접 작성하고, Manager 방식은 관측·보상·종료 등의 term을 관리자가 조합한다. 어느 방식이든 입력/출력과 과제 정의가 필요하며 이 선택만으로 물리 backend나 학습 알고리즘이 정해지는 것은 아니다. 기존 프로젝트가 사용하는 버전의 과제/학습 기 어댑터를 확인한다.
실행 전에 환경 형상을 하나로 고정한다
선택 GPU 심화에서는 OS·driver·GPU/VRAM·Isaac Sim/Isaac Lab·Python/PyTorch/CUDA·rsl_rl 버전과 자산 revision을 명세한다. pip 설치 성공만으로 ABI/확장·장치 조합의 호환을 보장하지 않는다. 공식 호환표/설치 문서에 맞는 조합을 별도 환경에 구성하고 simulator import와 단일 환경 reset/step부터 확인한다. 일반 Python 문법은 다루지 않는다.
기본 경로는 장비 없는 구성 표 분석이다. 아래 수치는 자체 과제 계약이며 실제 Isaac Lab API 설정 파일이나 학습 결과가 아니다. 물리 dt=.005s, 정책 decimation=4, 환경 수 N64, 환경당 수집 길이 T32, actor 관측 48 차원, critic 관측 60 차원, 행동 12 차원으로 둔다. Decimation은 한 정책 행동을 여러 물리 스텝 동안 유지하는 비율이다. 실제 API 필드 명과 reset/센서 갱신은 선택한 버전에서 확인한다.
시간과 배치를 계산한다
물리 주파수는 1/.005=200Hz, 정책 간격은.005×4=.02s로 50Hz다. 한 환경의 rollout은 32×.02=.64s이며 총 전이 64×32=2048개다. 병렬 환경을 64개로 늘렸다고 한 로봇이 64 배 빠른 물리 시간을 경험한 것은 아니다. 벽시계 학습 시간과 simulator 시간, 환경 전이 수와 optimizer update 수를 구분한다.
그림 M23.04-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.
Actor 관측만 float32로 저장하는 단순 배열은 2048×48×4=393216byte다. 이는 관측 한 배열만의 크기이며 critic 관측·행동/로그 확률·보상·마스크·네트워크 활성 값·물리 자산 메모리를 제외한다. 이 값으로 실제 GPU 메모리가 충분하다고 판정하지 않는다. 영상/깊이 센서가 추가되면 해상도·갱신율·전송/렌더링 부담도 함께 증가한다.
reset과 배치 모양을 확인한다
병렬 환경에서는 episode 종료 시점이 서로 다르다. 일부 환경 reset이 다른 환경의 이력이나 정규화 상태를 지우지 않도록 환경 ID와 마스크를 확인한다. 마지막 관측과 reset 관측의 전달 규칙, terminated/truncated·bootstrap·timeout 정보를 환경 wrapper와 학습기 양쪽에서 대조한다. 초기 조건 randomization도 reset마다/생성 시점/episode 중 언제 적용되는지 적는다.
현재 actor는 48 차원을 기대하는 데 배포 관측이 47이면 입력 불일치다. 차원이 48로 같아도 관절 순서가 바뀌거나 도/라 디 안·body/world를 섞으면 오류다. Critic이 학습 때 받는 추가 정보 12 차원을 actor 입력으로 조용히 넣어서 차원을 맞추지 않는다. 관측/행동 항목의 이름·순서·단위·정규화·유효상태가 계약의 핵심이다.
작은 점검을 통과한 뒤 규모를 늘린다
선택 실행에서는 N1 환경에서 reset 후 유한 관측/보상·행동 범위·종료 이유를 확인하고, 고정 seed의 짧은 rollout을 남긴 뒤 병렬화를 늘린다. 단일 환경의 원인을 모른 채 N을 늘리면 실패가 더 많이 발생할 뿐이다. 보상 항별 값·접촉/관절 상태·장치/자료형과 정규화 통계를 추적하고 NaN/무한 값이 발견되면 업데이트를 중단해 원본을 보존한다.
체크 포인트에는 네트워크 가중치뿐 아니라 환경/학습기 설정·관측 통계·학습 카운터·난수 상태·자산/소프트웨어 버전이 필요하다. 재시작과 새 학습을 구분한다. 다른 환경 수/물리 주기/보상으로 바꾸면 이전 학습과 동일 재현이 아니므로 변경 실험으로 기록한다. M23.05에서는 이 구성을 고정한 뒤 여러 seed와 독립 평가로 학습 안정성을 판정한다. 이 단위에서는 실제 GPU 설치·학습 실행을 요구하거나 성공했다고 주장하지 않는다.