sail-sg/envpool
C++-based high-performance parallel environment execution engine (vectorized env) for general RL environments.
해결하는 문제
EnvPool은 강화학습(RL) 환경 병렬화와 관련된 성능 저하 문제를 해결합니다. 기존의 Python 서브프로세스 기반 벡터 환경은 높은 오버헤드로 인해 경험 수집의 처리량이 제한되는 경우가 많습니다. EnvPool은 고성능 C++ 기반 실행 엔진을 제공하여 훈련 중 처리할 수 있는 프레임 수 또는 스텝 수를 크게 증가시킵니다.
작동 방식
EnvPool은 C++로 구현되었으며, pybind11를 사용해 Python 인터페이스를 제공합니다. 환경 풀을 관리하고 스레드 풀을 활용해 병렬로 실행합니다. 동기 실행(사용자가 모든 환경의 스텝 완료를 기다리는 방식)과 비동기 실행(send 및 recv 함수를 사용해 환경이 완료될 때마다 상호작용하는 방식)을 모두 지원합니다.
대상 사용자
Atari, MuJoCo 등 다양한 환경에서 대량의 훈련 데이터를 빠르게 생성해야 하는 강화학습 연구자 및 개발자에게 적합합니다. 또한 표준 Gymnasium 또는 DeepMind dm_env API의 즉시 대체 가능한 솔루션입니다.
주요 특징
- 극한의 처리량: 고성능 하드웨어(DGX-A100)에서 초당 100만 프레임의 Atari 또는 300만 스텝의 MuJoCo를 처리할 수 있습니다.
- 광범위한 환경 지원: Atari, MuJoCo, Box2D, Procgen, Google Research Football 등 다양한 환경을 통합 지원합니다.
- API 호환성: Gymnasium 및
dm_envAPI와 완전 호환되어 Stable-Baselines3, Tianshou, CleanRL 등의 라이브러리와 쉽게 통합할 수 있습니다. - 크로스 플랫폼: Linux, macOS, Windows를 모두 지원합니다.
- 고급 렌더링: 내장된 배치 RGB 출력 및 인간용 표시 모드를 제공하며, MuJoCo용으로 네이티브 C++ 픽셀 관측을 지원합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch