<!-- [](https://gitlab.com/araffin/stable-baselines3/-/commits/master) -->
CI
Documentation Status coverage report
codestyle
Stable Baselines3
<img src="https://raw.githubusercontent.com/DLR-RM/stable-baselines3/HEAD/docs/_static/img/logo.png" align="right" width="40%"/>
Stable Baselines3 (SB3)는 PyTorch에서 강화학습(Reinforcement Learning, RL) 알고리즘의 신뢰할 수 있는 구현 세트입니다. 이는 Stable Baselines의 차기 주요 버전입니다.
Stable Baselines3에 대한 자세한 발표는 v1.0 블로그 게시물 또는 저희 JMLR 논문에서 읽을 수 있습니다.
이러한 알고리즘들은 연구 커뮤니티와 산업계가 새로운 아이디어를 재현하고, 개선하며, 식별하는 것을 더 쉽게 만들 것이며, 프로젝트를 구축할 좋은 기준선(baseline)을 제공할 것입니다. 저희는 이 도구들이 새로운 아이디어가 추가될 수 있는 기반으로, 그리고 새로운 접근 방식을 기존의 것과 비교하는 도구로 사용되기를 기대합니다. 또한 이러한 도구들의 단순성이 초보자들이 구현 세부 사항에 파묻히지 않고도 더 진보된 도구 세트로 실험할 수 있게 하기를 바랍니다.
참고: 사용하기는 간단하지만, Stable Baselines3 (SB3)는 사용자에게 강화학습(RL)에 대한 어느 정도의 지식이 있다고 가정합니다. 이 라이브러리를 사용할 때는 충분한 연습이 필요합니다. 따라서 저희는 RL을 시작하는 데 도움이 되는 좋은 자료를 문서에서 제공하고 있습니다.
주요 기능
각 알고리즘의 성능은 테스트되었습니다 (해당 페이지의 결과(Results) 섹션 참조).
더 자세한 내용은 이슈 #48 및 #49을 참고하십시오.
또한, 저희는 OpenRL Benchmark 플랫폼에서 상세한 로그와 보고서를 제공합니다.
| 기능 | Stable-Baselines3 |
|---|
| 최신 RL 방법론 (State of the art RL methods) | ✅ |
| ... | |
계획된 기능
원래 로드맵의 대부분의 기능이 구현되었기 때문에, SB3에는 큰 변화가 계획되어 있지 않습니다. 현재는 *안정적(stable)*입니다.
만약 기여하고 싶다면, 이슈에서 도움이 필요한 곳이나 다른 제안된 개선 사항을 검색해 볼 수 있습니다.
SB3 개발은 현재 버그 수정 및 유지보수(문서 업데이트, 사용자 경험 등)에 중점을 두고 있지만, 관련 저장소에서는 더 활발한 개발이 진행되고 있습니다:
마이그레이션 가이드: Stable-Baselines (SB2)에서 Stable-Baselines3 (SB3)로
SB2에서 SB3로의 마이그레이션 가이드는 문서에서 확인할 수 있습니다.
문서화 (Documentation)
문서는 온라인에서 이용 가능합니다: https://stable-baselines3.readthedocs.io/
통합 (Integrations)
Stable-Baselines3는 Weights & Biases와 같은 다른 라이브러리/서비스와의 통합 기능을 제공하여 실험 추적을 하거나 Hugging Face를 통해 학습된 모델을 저장 및 공유할 수 있습니다. 자세한 내용은 문서의 전용 섹션에서 확인할 수 있습니다.
RL Baselines3 Zoo: Stable-Baselines3 강화학습 에이전트 훈련 프레임워크
RL Baselines3 Zoo는 강화학습(RL)을 위한 훈련 프레임워크입니다.
이곳은 에이전트 훈련, 평가, 하이퍼파라미터 조정, 결과 플로팅 및 비디오 녹화에 필요한 스크립트를 제공합니다. 또한, 일반적인 환경과 RL 알고리즘에 대한 조정된 하이퍼파라미터 모음과 해당 설정으로 훈련된 에이전트도 포함하고 있습니다.
이 저장소의 목표는 다음과 같습니다:
- RL 에이전트를 훈련하고 활용할 수 있는 간단한 인터페이스 제공
- 다양한 강화학습 알고리즘을 벤치마킹
- 각 환경 및 RL 알고리즘에 대한 조정된 하이퍼파라미터 제공
- 훈련된 에이전트로 재미있게 실험하기!
Github 저장소: https://github.com/DLR-RM/rl-baselines3-zoo
문서화: https://rl-baselines3-zoo.readthedocs.io/en/master/
SB3-Contrib: 실험적 RL 기능
실험적인 기능을 별도의 contrib 저장소인 SB3-Contrib에 구현했습니다.
이를 통해 SB3는 안정적이고 간결한 핵심을 유지하면서도, Recurrent PPO (PPO LSTM), CrossQ, Truncated Quantile Critics (TQC), Quantile Regression DQN (QR-DQN) 또는 Maskable PPO와 같은 최신 기능을 제공할 수 있습니다.
문서화는 온라인에서 이용 가능합니다: [https://sb3-contrib.readthedocs.io/]
Stable-Baselines Jax (SBX)
Stable Baselines Jax (SBX)는 DroQ나 CrossQ와 같은 최신 알고리즘을 포함하는 Stable-Baselines3의 Jax 기반 개념 증명(proof of concept) 버전입니다.
SB3에 비해 최소한의 기능만 제공하지만 훨씬 빠를 수 있습니다 (최대 20배까지!): https://twitter.com/araffin2/status/1590714558628253698
설치(Installation)
참고: Stable-Baselines3는 PyTorch >= 2.8을 지원합니다.
전제 조건 (Prerequisites)
Stable Baselines3는 Python 3.10 이상이 필요합니다.
Windows
Windows에서 stable-baselines를 설치하려면 문서(documentation)를 참조하십시오.
pip을 사용하여 설치 (Install using pip)
Stable Baselines3 패키지를 설치합니다:
pip install 'stable-baselines3[extra]'
이 명령어는 Tensorboard, OpenCV, 아타리 게임(atari games)에서 훈련하기 위한 ale-py와 플로팅 및 결과 분석을 위한 pandas, matplotlib 같은 선택적 종속성(optional dependencies)을 포함합니다. 이들이 필요하지 않다면 다음 명령어를 사용할 수 있습니다:
pip install stable-baselines3
더 많은 세부 정보와 대안(소스에서, docker 사용 등)은 문서(documentation)를 읽어보십시오.
예시 (Example)
라이브러리의 대부분의 코드는 강화학습(Reinforcement Learning) 알고리즘에 대해 sklearn과 유사한 구문을 따르려고 합니다.
여기서는 cartpole 환경에서 PPO를 훈련하고 실행하는 간단한 예시가 있습니다:
import gymnasium as gym
from stable_baselines3 import PPO
...
또는 환경이 Gymnasium에 등록되어 있고 정책도 등록된 경우, 한 줄로 모델을 훈련할 수 있습니다:
from stable_baselines3 import PPO
model = PPO(
- [전체 튜토리얼](https://github.com/araffin/rl-tutorial-jnrr19)
- [모든 노트북](https://github.com/Stable-Baselines-Team/rl-colab-notebooks/tree/sb3)
- [시작하기](https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/sb3/stable_baselines_getting_started.ipynb)
- [학습, 저장, 불러오기](https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/sb3/saving_loading_dqn.ipynb)
- [멀티프로세싱](https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/sb3/multiprocessing_rl.ipynb)
- [학습 모니터링 및 플로팅](https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/sb3/monitor_training.ipynb)
- [Atari 게임](https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/sb3/atari_games.ipynb)
- [RL Baselines Zoo](https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/sb3/rl-baselines-zoo.ipynb)
- [PyBullet](https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/sb3/pybullet.ipynb)
| **이름** | **순환(Recurrent)** | `Box` | `Discrete` | `MultiDiscrete` | `MultiBinary` | **멀티프로세싱** |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: |
| A2C | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| ... |
<b id="f1">1</b>: [SB3 Contrib](https://github.com/Stable-Baselines-Team/stable-baselines3-contrib) GitHub 저장소에 구현됨.
<b id="f2">2</b>: [SBX (SB3 + Jax)](https://github.com/araffin/sbx)에 구현됨.
Actions `gymnasium.spaces`:
* `Box`: 액션 공간의 모든 지점을 포함하는 N차원 상자(box).
* `Discrete`: 가능한 액션 목록으로, 타임스텝당 하나의 액션만 사용 가능.
* `MultiDiscrete`: 가능한 액션 목록으로, 각 타임스텝에서 각 이산 집합(discrete set)의 액션 중 하나만 사용 가능.
* `MultiBinary`: 가능한 액션 목록으로, 각 타임스텝에서 어떤 조합이든 액션을 사용할 수 있음.
```sh
pip install -e '.[docs,tests,extra]'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
테스트 실행 (Run tests)
stable-baselines3의 모든 단위 테스트(unit tests)는 pytest 러너를 사용하여 실행할 수 있습니다:
단일 테스트 파일 실행:
python3 -m pytest -v tests/test_env_checker.py
단일 테스트 실행:
python3 -m pytest -v -k 'test_check_env_dict_action'
또한 mypy를 사용하여 정적 타입 검사(static type check)를 수행할 수 있습니다:
pip install mypy
make type
ruff를 사용한 코드 스타일 검사 (Codestyle check):
pip install ruff
make lint
Stable-Baselines3를 사용하는 프로젝트 (Projects Using Stable-Baselines3)
documentation에서 stable-baselines3를 사용하는 프로젝트 목록을 유지하려고 노력하고 있습니다.
본 페이지에 귀하의 프로젝트가 나타나기를 원하시면 알려주세요 ;)
프로젝트 인용 (Citing the Project)
출판물에 이 저장소(repository)를 인용하려면:
@article{stable-baselines3,
author = {Antonin Raffin and Ashley Hill and Adam Gleave and Anssi Kanervisto and Maximilian Ernestus and Noah Dormann},
title = {Stable-Baselines3: Reliable Reinforcement Learning Implementations},
...
참고: SB3의 특정 버전을 참조해야 하는 경우, Zenodo DOI를 사용할 수도 있습니다.
유지 관리자 (Maintainers)
Stable-Baselines3는 현재 Ashley Hill (별명 @hill-a), Antonin Raffin (별명 @araffin), Maximilian Ernestus (별명 @ernestum), Adam Gleave (@AdamGleave), Anssi Kanervisto (@Miffyli), 그리고 Quentin Gallouédec (@qgallouedec)이 유지보수하고 있습니다.
중요 공지: 저희는 기술 지원이나 컨설팅을 제공하지 않으며, 이메일을 통해 개인적인 질문에 답변하지 않습니다.
질문이 있는 경우, RL Discord, Reddit, 또는 Stack Overflow에 게시해 주십시오.
기여 방법 (How To Contribute)
베이스라인을 개선하는 데 관심이 있는 모든 사람들을 위해, 아직 처리해야 할 문서 작업이 남아 있습니다.
기여하고 싶다면, 먼저 CONTRIBUTING.md 가이드를 읽어주십시오.
감사의 말씀 (Acknowledgments)