강화학습 성능지표 모니터링 하기
카테고리 없음2025. 7. 13. 15:44
반응형
1. TensorBoard 실행 및 접속
- 터미널(또는 PowerShell)에서 프로젝트 루트로 이동한 뒤,
-
bash복사편집python -m tensorboard.main --logdir=./tensorboard_logs
- 브라우저에서 http://localhost:6006 에 접속
- 왼쪽 사이드바에서 SCALARS 탭을 선택하면,
- train/episode_reward
- train/cumulative_return
- train/policy_loss, train/value_loss 등
2. 추가로 로깅할 커스텀 지표
현재 RewardLoggingCallback 에서 에피소드 보상을, CustomMetricsLoggingCallback 에서 cumulative_return 을 기록하도록 설정하셨는데,
훈련 평가에서 계산하는 Sharpe ratio, Max Drawdown, Accuracy 등도 TensorBoard에 남기면 더욱 편리합니다.
python
복사편집
from stable_baselines3.common.callbacks import BaseCallback class FullMetricsCallback(BaseCallback): def __init__(self, eval_env, verbose=0): super().__init__(verbose) self.eval_env = eval_env def _on_training_end(self) -> None: # 학습이 끝난 뒤 성능 지표 계산 perf = self.model.envs[0].calculate_performance_metrics(self.model, self.eval_env.envs[0].data) # TensorBoard에 기록 self.logger.record("eval/sharpe_ratio", perf["sharpe_ratio"]) self.logger.record("eval/max_drawdown", perf["max_drawdown"]) self.logger.record("eval/accuracy", perf["accuracy"]) # flush to make sure they appear immediately self.logger.dump(self.num_timesteps)
- model.learn(..., callback=[RewardLoggingCallback(), FullMetricsCallback(eval_env)]) 처럼 주입하면,
훈련이 끝난 시점에 eval/ 네임스페이스 아래에 커스텀 지표들이 남습니다.
3. 로그 포맷·출력 옵션 확장
만약 콘솔 출력이나 CSV 파일로도 보고 싶다면, configure 에 로그 타입을 추가할 수 있습니다.
python
복사편집
from stable_baselines3.common.logger import configure # tensorboard + stdout(console) + csv tmp_path = "./tensorboard_logs" new_logger = configure(tmp_path, ["tensorboard", "stdout", "csv"]) model.set_logger(new_logger)
- stdout : 터미널에 실시간 지표 출력
- csv : ./tensorboard_logs/progress.csv 에 기록
이렇게 하면 TensorBoard, 콘솔 로그, CSV 모두에 성능 지표가 남아 다양한 방식으로 분석할 수 있습니다.
4. 요약
- ./tensorboard_logs 에 잘 기록되니, TensorBoard로 그래프 확인
- BaseCallback 를 활용해 Sharpe, Drawdown, Accuracy 같은 커스텀 지표도 self.logger.record 로 남기기
- configure(..., ["tensorboard","stdout","csv"]) 로 콘솔/CSV 출력까지 확장
이 흐름을 적용하시면 훈련 전후, 하이퍼파라미터 변화에 따른 지표 변화를 한눈에 비교·분석하기 훨씬 수월해집니다.
반응형
댓글()