[Ray Serve] 처리량 최적화 설정 로깅 기능 추가
PR 링크: ray-project/ray#62146 상태: Merged | 변경: +24 / -0
들어가며
Ray Serve는 RAY_SERVE_THROUGHPUT_OPTIMIZED 환경 변수를 통해 처리량 최적화 모드를 활성화할 수 있다. 하지만 이 모드가 어떤 설정으로 동작하는지 확인하기 어려워, 디버깅이나 운영 시 불편함이 있었다. 이 PR은 처리량 최적화 모드 활성화 시 관련 설정들을 로그로 출력하는 기능을 추가한다.
핵심 코드 분석
컨트롤러 초기화 시 로그 출력
async def __init__(self, ...):
if RAY_SERVE_THROUGHPUT_OPTIMIZED:
self._log_throughput_opt_message()
# ...
최적화 설정 로그 메서드
def _log_throughput_opt_message(self) -> None:
msg = "Throughput optimized Ray Serve enabled with the following configurations:\n"
if RAY_SERVE_ENABLE_DIRECT_INGRESS:
msg += " * Direct ingress enabled\n"
if RAY_SERVE_USE_GRPC_BY_DEFAULT:
msg += " * gRPC communication enabled\n"
if not RAY_SERVE_RUN_USER_CODE_IN_SEPARATE_THREAD:
msg += " * User code running in main thread (not separate)\n"
if not RAY_SERVE_RUN_ROUTER_IN_SEPARATE_LOOP:
msg += " * Router running in main thread (not separate)\n"
if not RAY_SERVE_LOG_TO_STDERR:
msg += " * Log to stderr disabled\n"
msg += f" * Request path log buffer size: {RAY_SERVE_REQUEST_PATH_LOG_BUFFER_SIZE}\n"
logger.info(msg)
왜 이게 좋은가
- 운영 가시성: 처리량 최적화 모드에서 어떤 설정이 활성화되었는지 한눈에 파악할 수 있다.
- 디버깅 편의성: 성능 이슈 발생 시 어떤 최적화가 적용되었는지 로그에서 즉시 확인 가능하다.
- 설정 문서화 효과: 로그 메시지 자체가 처리량 최적화에 관련된 주요 설정들의 목록 역할을 한다.
- 조건부 출력:
RAY_SERVE_THROUGHPUT_OPTIMIZED가 설정된 경우에만 로그를 출력하므로 일반 사용 시 노이즈가 없다.
참고 자료
관련 포스트
- [Ray Serve] Direct Ingress 최적화: 상수 순서 정리 및 빈 프록시 조기 반환
- [Ray Data] 클러스터 오토스케일러에 논리 메모리 사용률 지표를 추가하여 스케일링 정확도 향상
- [Ray Serve] Pack 스케줄링 최적화: O(replicas x total_replicas)에서 O(replicas x nodes)로
- [ray] Ray Serve LLM 인그레스 최적화: 로컬 라우팅을 통한 병목 현상 제거
- [ray] [Ray 최적화] 액터 제출 병목 현상 해결: Placement Group 번들 정보 캐싱으로 GCS 부하 줄이기
PR Analysis 의 다른글
- 이전글 [CPython 3.13] asyncio.Queue docstring의 모호한 표현 수정 (backport)
- 현재글 : [Ray Serve] 처리량 최적화 설정 로깅 기능 추가
- 다음글 [CPython 3.14] asyncio.Queue docstring의 모호한 표현 수정 (backport)
댓글