SAC 알고리즘의 GPU 최적화 및 성능 병목 분석

Source

  • Ancom Workbench/Research/Stock Trader/SAC.md

Summary

이 노트는 강화학습 알고리즘 SAC(Soft Actor-Critic)를 주식 거래 환경에 적용할 때 발생하는 GPU 연산 지연 문제를 분석한 기록이다. 특히 apply_gradient 단계에서 발생하는 심각한 병목 현상(초당 120~140ms 이상)을 식별하고, 네트워크 레이어 크기(256→128) 조정, 배치 크기 변경, 학습률 조절 등 다양한 하이퍼파라미터 튜닝을 시도했으나 학습 성능 저하나 속도 개선 실패로 이어졌다. 또한 TensorFlow Agents 및 Reverb와의 통합 난이도, tensortrade 라이브러리의 입력 구조, 그리고 초기화 및 보상 가중치 계산 시의 오버헤드 원인(텐서 변환 연산)을 조사했다.

Key Points

  • 주요 병목 지점은 정책 업데이트 단계인 apply (apply_gradient) 로 확인됨.
  • 네트워크 레이어 크기를 256 에서 128 로 축소했으나, 오히려 apply 시간이 증가하는 역설적 현상 관찰.
  • 배치 크기 증가는 속도 개선에 도움이 되지 않았으며, 작은 배치 크기는 학습 수렴을 방해함.
  • TensorFlow Agents 의 표준 튜토리얼 방식은 현재 OpenAI Gym 기반 환경과 호환성 문제가 있음.
  • 초기화(init) 및 보상 가중치 계산 시 convert_to_tensor 연산이 상당한 오버헤드를 발생시킴.
  • SAC 의 네트워크 구조: Value Network, Q-Value Network(state+action 입력), Policy Network(Actor) 로 구성됨.