Ray RLlib PPO 트레이딩 환경 초기화 오류 (Gymnasium API 호환성)

Source

  • Ancom Workbench/Research/Stock Trader/Error log.md

Summary

2023년 6월 26일, Ray RLlib의 PPO 알고리즘을 사용하여 TensorTrade 기반 트레이딩 환경(TradingEnv)을 실행하던 중 RolloutWorker 생성 단계에서 오류가 발생했다. 핵심 원인은 Ray 2.3 이상 버전이 요구하는 새로운 Gymnasium API(gym>=0.26 또는 gymnasium)와 기존 gym API 간의 호환성 문제였다. 구체적으로 TradingEnv.reset() 메서드가 seed 키워드 인자를 받지 못하여 TypeError가 발생했으며, RLlib은 환경이 새로운 Gymnasium 스타일 API를 따르지 않는다고 보고 실행을 중단했다.

Key Points

  • 오류 발생 시점: Ray Tune을 통한 PPO 알고리즘 실행 중 Trial PPO_TradingEnv_7ee5685c 처리 시.
  • 핵심 오류 메시지: TypeError: TradingEnv.reset() got an unexpected keyword argument 'seed'ValueError: Your environment ... does not abide to the new gymnasium-style API!
  • 원인 분석: Ray 2.3 이상부터 RLlib은 Gymnasium API를 필수로 요구함. 기존 gym 기반 커스텀 환경(TradingEnv)이 새로운 reset(self, *, seed=None, options=None) 시그니처 및 반환값(info dict)을 지원하지 않음.
  • 해결 방안 제안 (로그 내):
    1. pip install gymnasium 실행.
    1. 코드 내 import gymimport gymnasium as gym으로 변경.
    1. 커스텀 환경 클래스의 reset() 메서드 시그니처 수정 및 info 반환 추가.
    1. step() 메서드에서 truncated 플래그 반환 추가 (또는 EnvCompatibility 래퍼 사용).