AI 시스템 구축: 배포 방식 – TorchServe
ㅁ 배포 방식
1. TorchServe
ㅇ 정의:
PyTorch로 학습한 모델을 REST API 또는 gRPC 형태로 쉽게 서비스할 수 있도록 지원하는 모델 서버 프레임워크.
ㅇ 특징:
– PyTorch 모델을 `.mar` 파일로 패키징하여 배포.
– 멀티 모델 서빙, 배치 처리, 모델 버전 관리 지원.
– REST API 및 gRPC 인터페이스 제공.
– 모델 로드/언로드, 스케일링, 모니터링 기능 내장.
ㅇ 적합한 경우:
– PyTorch 기반 모델을 빠르게 프로덕션 환경에 배포해야 하는 경우.
– 다양한 모델을 동시에 운영하고 관리해야 하는 경우.
– 실시간 추론과 배치 추론을 모두 지원해야 하는 경우.
ㅇ 시험 함정:
– TorchServe는 TensorFlow 모델을 직접 지원하지 않음 (ONNX 변환 후 가능).
– REST API만 지원한다고 착각하기 쉬움 (gRPC도 지원함).
– 모델 파일 포맷은 `.pt`가 아니라 `.mar`임.
ㅇ 시험 대비 “패턴 보기” 예시:
O: “TorchServe는 PyTorch 모델을 REST API와 gRPC로 서비스할 수 있는 배포 프레임워크이다.”
X: “TorchServe는 TensorFlow 모델을 기본 지원하며 `.pt` 파일을 직접 서빙한다.”
ㅁ 추가 학습 내용
TorchServe의 주요 아키텍처 구성 요소는 모델 저장소, 핸들러, Inference API, Management API로 나뉜다.
모델 저장소는 서빙할 모델 파일과 설정을 보관하는 위치이며, 핸들러는 입력 전처리, 모델 추론, 출력 후처리를 담당하는 코드이다.
Inference API는 클라이언트로부터 추론 요청을 받아 결과를 반환하고, Management API는 모델 등록, 제거, 상태 조회 등 관리 작업을 수행한다.
모델 핸들러 작성 시에는 handle 함수 내부에서 데이터 전처리, 모델 호출, 후처리 과정을 정의하며, 배치 추론 시에는 여러 요청을 모아 한 번에 처리하여 성능을 높인다.
멀티 모델 서빙에서는 메모리와 GPU 자원을 효율적으로 분배하고, 필요 시 모델을 언로드하여 자원 사용을 최적화하는 전략이 필요하다.
Prometheus 기반 모니터링 기능을 활용하면 요청 수, 지연 시간, 자원 사용량 등을 시각화하여 서비스 상태를 관리할 수 있다.
AWS SageMaker와 TorchServe를 연계하면 SageMaker의 관리형 인프라에서 TorchServe 모델을 배포할 수 있으며, Docker 컨테이너 기반 배포 절차를 통해 환경 일관성과 이식성을 확보할 수 있다.
또한 HTTPS 설정을 통해 추론 서비스의 통신 보안을 강화할 수 있다.