안녕하세요! 이번 11월 동안 RLKorea에서 주최하는 Drone Delivery Challenge with Unity가 진행되고 있는데요! 마침 11월 초에 카카오엔터프라이즈에서 오픈소스 강화학습 프레임워크 **JORLDY (Join Our Reinforcement Learning framework for Developing Yours)**가 공개되었습니다!
JORLDY 링크: https://github.com/kakaoenterprise/JORLDY
JORLDY는 다양한 강화학습 알고리즘과 환경을 포함하고 있을 뿐 아니라 알고리즘과 환경을 변경하고 새로운 환경, 에이전트, 네트워크 등을 추가하는 것이 가능합니다! 이에 따라 현재 진행중인 Drone Delivery Challenge의 환경을 JORLDY에 추가하여 JORLDY에서 제공하는 알고리즘으로 드론 배송 환경을 학습할 수 있도록 하였습니다! 😊
지금부터 어떻게 JORLDY를 통해 드론 배송 환경을 학습하고 제출하는지 과정을 살펴보겠습니다!
먼저 깃허브에서 JORLDY의 코드를 받으시고 requirements.txt를 이용하여 필요한 라이브러리들을 설치해주세요!
드론 배송 환경의 경우 JORLDY/jorldy/core/env/mlagents/DroneDelivery에 윈도우, 맥, 리눅스 빌드 모두 포함시켜놓았습니다. 단 리눅스의 경우 chmod를 통한 파일 권한 변경을 해주셔야하며 맥 빌드의 경우 조금 더 복잡한 과정을 수행하서야 합니다. 맥 빌드 사용 관련해서는 다음의 링크 내용을 참고해주시기 부탁드립니다.
https://github.com/reinforcement-learning-kr/2021_RLKR_Drone_Delivery_Challenge_with_Unity/discussions/13
먼저 JORLDY 내부의 requirements.txt를 이용하여 JORLDY 0.0.2 버전에 필요한 라이브러리들을 설치합니다.
현재 드론 배송 환경의 경우 PPO, SAC, MPO, V-MPO, ICM PPO, RND PPO 등을 통해 실행이 가능합니다. jorldy/config의 해당 에이전트들의 폴더로 가보시면 drone_delivery_mlagent.py 안에 환경에 대한 config 설정이 되어있는 것을 확인하실 수 있습니다.
아래의 예시는 PPO 내부의 drone_delivery_mlagent.py의 내용입니다.
### PPO Drone Delivery Config ###
env = {"name": "drone_delivery_mlagent", "train_mode": True}
agent = {
"name": "ppo",
"network": "continuous_policy_value",
"head": "multi",
"gamma": 0.99,
"batch_size": 32,
"n_step": 128,
"n_epoch": 3,
"_lambda": 0.95,
"epsilon_clip": 0.1,
"vf_coef": 1.0,
"ent_coef": 0.01,
"clip_grad_norm": 1.0,
}
optim = {
"name": "adam",
"lr": 1e-4,
}
train = {
"training": True,
"load_path": None,
"run_step": 30000000,
"print_period": 10000,
"save_period": 100000,
"eval_iteration": 5,
"record": False,
"record_period": 300000,
# distributed setting
"distributed_batch_size": 256,
"update_period": agent["n_step"],
"num_workers": 4,
}
이제 JORLDY/jorldy로 이동하셔서 drone 환경에 대한 학습을 실행합니다. 현재 JORLDY에서는 학습을 위해 3가지 형태의 distributed 구조를 지원합니다. 자세한 내용은 JORLDY 내의 Distributed Architecture에 대해 설명한 문서 링크를 참고 부탁드립니다.