Pytorch-RL-CPP: 강화학습 알고리즘의 C++ 구현체 저장소 (PyTorch)
요약
Pytorch-RL-CPP는 PyTorch C++ frontend를 활용하여 개발된 강화학습(Reinforcement Learning, RL) 프레임워크입니다. Python 사용이 어려운 환경에서도 최적화되고 프로덕션 레디한 방식으로 RL을 구현할 수 있게 합니다. Arcade Learning Environment의 C++ 포트를 사용하여 다양한 DQN 알고리즘 확장 기능을 지원합니다.
핵심 포인트
- PyTorch C++ frontend 기반으로 개발되어 성능 최적화가 용이함.
- Python 환경 제약 없이 데스크톱 애플리케이션에 RL을 적용 가능.
- DQN, Double Q-learning 등 최신 RL 연구 결과를 구현체로 제공함.
Pytorch-RL-CPP
<img width="160px" height="22px" href="https://github.com/pytorch/pytorch" src="https://pp.userapi.com/c847120/v847120960/82b4/xGBK9pXAkw8.jpg">A Repository with C++ implementations of Reinforcement Learning Algorithms (Pytorch)
<img src="/assets/pong_dqn.gif?raw=true" width="200">RlCpp는 PyTorch C++ frontend를 사용하여 작성된 강화학습 프레임워크입니다.
RlCpp는 Python을 사용하기 어려운 프로젝트에서 강화학습을 활용할 수 있도록 확장 가능하고, 합리적으로 최적화되었으며, 프로덕션 준비가 된(production-ready) 프레임워크를 목표로 합니다. 사용자 측에서 최소한의 설정만으로도 사용자의 컴퓨터에 있는 데스크톱 애플리케이션에서 바로 사용할 수 있어야 합니다.
사용되는 환경은 Arcade Learning Environment의 C++ 포트입니다.
현재 지원하는 모델
심층 강화학습(deep reinforcement learning) 커뮤니티는 DQN 알고리즘에 여러 독립적인 개선을 이루어 왔습니다. 이 저장소는 DQN 알고리즘의 최신 확장 기능을 제시합니다:
- Deep Reinforcement Learning을 이용한 Atari 게임 플레이 [arxiv]
- Double Q-learning을 사용한 심층 강화학습 (Deep Reinforcement Learning) [arxiv]
- 심층 강화학습을 위한 듀엘링 네트워크 아키텍처 (Dueling Network Architectures for Deep Reinforcement Learning) [arxiv]
- 우선순위 경험 리플레이 (Prioritized Experience Replay) [arxiv]
- 탐험을 위한 노이즈 네트워크 (Noisy Networks for Exploration) [arxiv]
- 강화학습에 대한 분포적 관점 (A Distributional Perspective on Reinforcement Learning) [arxiv]
- Rainbow: 심층 강화학습의 개선 사항 결합 [arxiv]
- 분위수 회귀를 이용한 분포적 강화학습 (Distributional Reinforcement Learning with Quantile Regression) [arxiv]
- 계층적 심층 강화학습: 시간 추상화 및 내재적 동기 부여 통합 (Hierarchical Deep Reinforcement Learning: Integrating Temporal Abstraction and Intrinsic Motivation) [arxiv]
- 신경 에피소드 제어 (Neural Episodic Control) [arxiv]
Double DQN을 사용한 Pong 결과
<img src="/assets/dqn_pong_results.png" width="600">환경 (모든 Atari 환경)
- Breakout
- Pong
- Montezuma's Revenge (현재 연구 중)
- Pitfall
- Gravitar
- CarRacing
의존성 설치하기
Arcade Learning Environment
주요 의존성 설치:
sudo apt-get install libsdl1.2-dev libsdl-gfx1.2-dev libsdl-image1.2-dev cmake
컴파일:
$ mkdir build && cd build
$ cmake -DUSE_SDL=ON -DUSE_RLGLUE=OFF -DBUILD_EXAMPLES=ON ..
$ make -j 4
파이썬 모듈 설치하기:
$ pip install .
or
$ pip install --user .
ALE을 Visual Studio에서 작동시키려면 약간의 추가적인 작업(wrangling)이 필요합니다. IslandMan93의 Visual Studio용 ALE 포트를 사용하는 것이 좋을 수 있습니다.
질문하고 토론하려면, ALE 사용자 그룹에 참여해 주십시오.
Libtorch
빌드 (Building)
CMake를 빌드 시스템으로 사용합니다.
대부분의 의존성(dependencies)은 서브모듈(submodules)로 포함되어 있습니다 (서브모듈을 가져오려면 git submodule update --init --recursive를 실행하세요).
Libtorch는 별도로 설치해야 합니다.
cd Reinforcement_CPP
cd build
cmake ..
...
실행하기 전에, libtorch/lib을 PATH 환경 변수에 추가해야 합니다.
cmake 파일 변경 사항 (Changes to cmake file)
원활하게 실행되려면 CMake 파일에 몇 가지 변경이 필요합니다.
- ALE를 빌드한 후, libale.so를 링크하세요.
- libtorch를 빌드한 후에 torch 디렉터리(dir)를 설정하세요.
현재의 CMakeLists.txt를 참조하여 관련 변경을 수행하십시오.
향후 계획 (Future Plans)
지원할 계획:
- C++와 Python 간의 런타임 차이점 처리.
- Trainer 모듈에 대한 Python 바인딩(Python bindings).
- 더 많은 모델과 방법론 지원.
- mujoco 환경 지원.
계속 지켜봐 주세요!
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기