Web Analytics

pokemonred_puffer

⭐ 182 stars Korean by drubinstein

포켓몬 레드 (RL 에디션)

테스트

이 저장소는 포켓몬 레드 RL 개발에 사용될 라이브러리로 설계되었습니다. 여기에는 라이브러리 환경에서는 사용하지 말아야 할 편의 함수들이 포함되어 있으며, 포크해서 사용해야 합니다. 앞으로는 이러한 편의 함수들이 마이그레이션되어 포크가 필요 없게 될 예정입니다.

빠른 시작

설치

라이브러리를 설치하려면 다음 중 하나를 선택할 수 있습니다.

예를 들어,

pip3 install -e . 

실행

아래는 경우에 따라 기본 인수를 사용하는 명령어입니다. 이 저장소와 관련된 명령줄 작업 사용법이 확실하지 않은 경우 python3 -m pokemonred_puffer.train --help를 실행해 주세요. 일부 명령어는 최근에 테스트되지 않았을 수 있으니 문제가 있으면 이슈를 남겨 주세요.

설치 후에는 다음 명령어로 학습을 시작할 수 있습니다:

# Run before training to test what num_envs value you should use
python3 -m pokemonred_puffer.train autotune

Default

python3 -m pokemonred_puffer.train train

멀티노드 하이퍼파라미터 스윕 (진행 중)

하이퍼파라미터 스윕을 실행하려면 관련 패키지를 설치하고 두 개의 명령어를 실행하면 됩니다:

pip3 install -e '.[sweep]'
python3 -m pokemonred_puffer.sweep launch-sweep
python3 -m pokemonred_puffer.sweep launch-agent 
스윕 ID는 스윕을 시작할 때 출력됩니다. 스윕을 재개하려면 다음과 같이 스윕을 다시 실행할 수 있습니다.

python3 -m pokemonred_puffer.sweep launch-sweep --sweep-id 
스윕은 스윕 구성(기본값은 sweep-config.yaml)과 기본 구성(기본값은 config.yaml)으로 설정할 수 있습니다. 하이퍼파라미터 스윕은 스윕 구성을 사용하여 범위를 설정하고 하이퍼파라미터를 기본 구성의 파라미터를 중심으로 설정합니다. 하이퍼파라미터 알고리즘에 대해 더 알고 싶다면 Imbue의 CARBS 저장소를 방문하세요.

참고: 현재 단일 노드 스윕은 지원되지 않습니다. 이 기능이 필요하다면 이슈를 만들어 주세요.

학습을 위한 수정

실행 중인 작업이 있는데 변경하고 싶다면, 어떻게 해야 할까요?

몇 가지 옵션이 있습니다:

디버깅

변경 사항을 테스트하고 싶다면 다음을 실행할 수 있습니다.

python3 -m pokemonred_puffer.train --config config.yaml --debug
비상 상황에서는 environment.py에서 send_input 함수 호출을 제거하는 것이 권장됩니다. 이렇게 하면 모델의 일정에 맞추지 않고 직접 보상을 테스트할 수 있습니다.

디렉토리 구조

이 저장소는 궁극적으로 라이브러리로 사용될 예정입니다. 모든 소스 파일은 pokemonred_puffer 디렉토리 아래에 있어야 합니다. __main__이 포함된 모듈을 추가하고 싶다면 자유롭게 추가하되, 반드시 pokemonred_puffer 디렉토리 내에 두어야 합니다. 이후에는 python3 -m pokemonred_puffer. 명령어로 메인을 실행할 수 있어야 합니다.

pokemonred_puffer 디렉토리 내에는 다음과 같은 파일과 디렉토리가 있습니다:

변경 사항 만들기

간단한 변경 사항은 config.yaml을 직접 수정할 수 있습니다. config.yaml에는 몇 가지 중요한 규칙이 있습니다. wrappers, rewards, policies의 경우, 래퍼, 보상, 정책은 반드시 module_name.class_name 키로 지정되어야 합니다. 이 섹션들은 여러 종류의 wrappers, rewards, policies를 포함할 수 있습니다. 일반적인 구조는 label : 클래스에 대한 인자 형태입니다. 더 나은 간접 참조 방식이 마련될 때까지 이 방식을 사용합니다.

래퍼 추가하기

래퍼를 추가하려면 gym.Wrapper를 상속하는 새 클래스를 wrappers 디렉토리에 추가합니다. 그 다음 config.yamlwrappers 섹션을 업데이트합니다. 래퍼들은 기본 환경을 위에서 아래 순서로 감쌉니다. 래퍼 목록은 클래스 경로로 키가 지정되지 않습니다. 래퍼 컬렉션을 구별하는 고유 이름입니다.

보상 추가하기

보상을 추가하려면 rewards 디렉토리에 새 클래스를 추가합니다. 그 다음 config.yamlrewards 섹션을 업데이트합니다. 보상 섹션은 클래스 경로로 키가 지정됩니다.

정책 추가하기

정책을 추가하려면 policies 디렉토리에 새 클래스를 추가합니다. 그 다음 config.yamlpolicies 섹션을 업데이트합니다. 정책 섹션은 클래스 경로로 키가 지정됩니다. 순환 정책은 감싸는 정책과 같은 모듈에 존재한다고 가정합니다.

개발

이 저장소는 pre-commit을 사용하여 포맷과 린트를 강제합니다. 개발을 위해서는 다음 명령어로 이 저장소를 설치하세요:

pip3 install -e '.[dev]'
pre-commit install
변경 사항이 있을 경우 PR을 제출해 주세요.

저자

David Rubinstein, Keelan Donovan, Daniel Addis, 최경환, Joseph Suarez, Peter Whidden

Star History Chart

--- Tranlated By Open Ai Tx | Last indexed: 2026-02-26 ---