mujoco-py 1.50.1.0 release notes / what's new

OpenAI가 MuJoCo 엔진을 사용하는 로봇 시뮬레이션용 고성능 Python 3 라이브러리인 mujoco-py 1.50.1.0을 출시했습니다. 이번 릴리스는 딥러닝 및 로보틱스 연구를 지원하기 위해 설계된 상당한 성능 향상과 새로운 기능을 제공합니다.

Batched Simulation and Performance Gains

mujoco-py 1.50.1.0은 효율적인 병렬 시뮬레이션을 가능하게 하는 MjSimPool 인터페이스를 도입했으며, 이는 TRPO, PI2, LQR과 같은 궤적 최적화 및 강화 학습 방법론에 매우 중요합니다. 이 라이브러리는 데이터 병렬 처리를 위한 OpenMP와 직접 액세스 메모리 관리를 위한 Cython 및 NumPy를 사용하여 이러한 성능 향상을 달성합니다.

OpenAI에 따르면, MjSimPool 인터페이스를 단순하게 사용하는 것만으로도 이전 버전보다 400%의 속도 향상이 있으며, Python의 multiprocessing 패키지를 사용하는 최적화된 사용 패턴보다도 약 180% 더 빠릅니다. 이러한 성능 개선은 주로 MuJoCo 데이터 구조에 대한 액세스 시간 단축 덕분입니다.

GPU-Accelerated Rendering and Domain Randomization

mujoco-py의 최신 버전은 headless GPU 렌더링을 지원하며, 이는 CPU 기반 렌더링에 비해 약 40배의 속도 향상을 제공합니다. 이 기능을 통해 연구자들은 초당 수백 프레임의 합성 이미지 데이터를 생성할 수 있습니다.

이 가속 기능은 특히 도메인 무작위화(domain randomization)—OpenAI에서 시뮬레이션 내 로봇의 질감을 다양하게 하기 위해 사용하는 기술—에 활용됩니다. 이 프로세스는 로봇이 학습된 행동을 시뮬레이션 환경에서 물리적 세계로 전이할 때 자신의 몸체를 더 잘 식별할 수 있도록 돕습니다.

Virtual Reality Integration

이제 mujoco-py는 추가적인 C++ 코드 없이도 가상 현실(VR) 상호작용을 가능하게 하는 충분한 API를 제공합니다. OpenAI는 MuJoCo의 C++ VR 예제를 Python으로 포팅하여 HTC Vive VR 설정을 지원할 수 있게 했습니다. 이 지원은 현재 실험적인 단계로 간주되지만, OpenAI 내부적으로 사용되어 왔습니다.

Core Features and API Usage

mujoco-py 1.50.1.0은 MuJoCo 함수 및 데이터 구조에 대한 직접적인 액세스를 제공하며, 개선된 접촉 솔버(contact solver)를 포함하여 MuJoCo 1.50의 모든 기능을 지원합니다.

표준적인 사용 사례의 경우, MjSim 클래스가 시뮬레이션 모델과 데이터의 래퍼(wrapper) 역할을 하여 사용자가 시뮬레이션을 단계별로 진행하고 카메라 센서로부터 이미지를 렌더링할 수 있도록 합니다. 고급 사용자를 위해 이 라이브러리는 MuJoCo C 구조체와 함수에 직접 액세스할 수 있는 하위 수준의 인터페이스를 제공합니다.

Sources