Force: 딥 강화학습(RL) 연구 라이브러리
요약
Force는 PyTorch와 Gymnasium 기반의 딥 강화학습(RL) 연구 전용 라이브러리입니다. 다양한 RL 알고리즘을 모듈화하여 구현했으며, 조합 가능한 설정 관리 시스템과 브라우저 GUI를 제공합니다. Slurm 스케줄러 지원으로 병렬 실험 관리가 용이합니다.
핵심 포인트
- PyTorch와 Gymnasium 기반의 딥 RL 연구 라이브러리입니다.
- 모든 하이퍼파라미터를 지정하는 조합 가능한 설정 관리 시스템을 갖췄습니다.
- 실험 로그 확인을 위한 브라우저 GUI를 제공하여 시각화가 편리합니다.
- Slurm 스케줄러 지원으로 대규모 병렬 실험 관리가 가능합니다.
Force
개요
Force는 PyTorch와 Gymnasium을 기반으로 구축된 딥 강화학습 (RL) 연구용 라이브러리입니다.
현재 활발하게 개발되고 있습니다.
주요 기능:
- 다양한 딥 RL 알고리즘의 가독성 높고 모듈화된 구현체
- 모든 하이퍼파라미터를 파일 및 커맨드라인 인수로 지정할 수 있는 조합 가능한 설정 관리 시스템
- 실험 정보 확인을 위한 브라우저 기반 GUI (기본 필터링 및 플로팅 포함)
- Slurm 스케줄러에서 작업을 실행하며, 하이퍼파라미터를 통한 쉬운 병렬화 지원
Force라는 이름은 원래 'reinforcement'라는 단어에서 유래했지만, 재미있는 우연의 일치로 저의 박사 지도 교수님과도 뉴턴의 운동 제2법칙을 통해 관련이 있습니다.
설치
저장소를 클론하고, 다음 명령어를 저장소의 루트 디렉토리에서 실행합니다:
pip install -r requirements.txt
pip install -e .
사용법
라이브러리 사용 예시는 scripts/train.py에서 확인할 수 있습니다.
더 복잡한 로직이 필요하다면, Experiment 클래스를 서브클래싱하여 쉽게 자신만의 로직을 정의할 수 있습니다.
스크립트는 다음과 같이 호출할 수 있습니다:
python scripts/train.py --root-dir ROOT_DIR --domain DOMAIN --config CONFIG_PATH
여기서 대문자로 된 변수들은 적절하게 대체되어야 합니다:
ROOT_DIR은 실험 로그가 작성될 디렉토리를 지정해야 합니다.
(각 실험 실행마다 해당 디렉토리 내에 하위 디렉토리가 생성됩니다.)DOMAIN은 해결하려는 태스크를 의미합니다.CONFIG_PATH는 구성을 명시하는 JSON 파일의 경로입니다.
여러 개의 설정 파일을 사용할 경우, --config (약어: -c) 플래그를 반복하여 사용하면 됩니다.
설정 파일의 특정 항목을 덮어쓰려면 --set (약어 -s) 플래그를 사용하세요. 이 플래그는 키와 값이라는 두 개의 인수를 받습니다. 키 이름에는 중첩(nesting)을 나타내기 위해 점(dot)을 포함할 수 있습니다. 예를 들어, SAC 에이전트를 사용하는 경우 -s agent.init_alpha 0.5와 같이 사용할 수 있습니다.
선택적으로 --seed SEED를 전달하여 특정 난수 시드(random seed)를 설정할 수 있습니다. 그렇지 않으면 시드가 무작위로 선택됩니다.
실험 보기 (Viewing experiments)
The GUI는 실험 로그가 일반적으로 원격 장치에 존재하기 때문에 클라이언트-서버 아키텍처를 사용합니다. 서버를 실행하려면 단순히 해당 디렉토리를 지정하면 됩니다:
python force/workflow/result_server.py -d DIRECTORY
--port (-p) 플래그를 사용하여 선택적으로 특정 포트를 설정할 수 있습니다.
클라이언트 측에서는 각 실험에 대한 다양한 정보를 볼 수 있으며, 구성 파일(config)과 로그 파일에 접근할 수 있습니다. URL 쿼리 문자열을 사용하여 플롯할 항목의 양을 지정할 수 있습니다 (예: ?plot=eval/return_mean) 그리고 도메인, 알고리즘, 최신성 또는 작업 상태별로 필터링할 수도 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기