AI 시스템 구축: 서빙 최적화 – TorchScript
ㅁ 서빙 최적화
ㅇ 정의:
– 학습된 모델을 실제 서비스 환경에서 빠르고 안정적으로 추론할 수 있도록 변환, 경량화, 배포하는 과정.
ㅇ 특징:
– 모델의 추론 속도와 메모리 효율을 높임.
– 다양한 하드웨어(CPU, GPU) 환경에 맞춰 최적화 가능.
– 배포 환경에서의 의존성 최소화.
ㅇ 적합한 경우:
– 실시간 응답이 필요한 서비스(챗봇, 음성 인식 등).
– 자원이 제한된 엣지 디바이스 환경.
ㅇ 시험 함정:
– 학습 최적화와 서빙 최적화를 혼동하는 경우.
– 단순히 모델을 저장하는 것과 서빙 최적화를 동일시하는 경우.
ㅇ 시험 대비 “패턴 보기” 예시:
– (O) 서빙 최적화는 추론 성능 개선을 목적으로 한다.
– (X) 서빙 최적화는 모델 학습 속도를 높이기 위해 사용된다.
================================
1. TorchScript
ㅇ 정의:
– PyTorch 모델을 직렬화하여 Python이 없는 환경에서도 실행 가능하도록 변환하는 기능.
ㅇ 특징:
– `tracing`과 `scripting` 두 가지 방식 지원.
– C++ 런타임에서도 모델 실행 가능.
– 모델 배포 시 Python 인터프리터 의존성 제거.
ㅇ 적합한 경우:
– 프로덕션 환경에서 C++로 추론을 수행해야 하는 경우.
– Python 환경이 제한되거나 없는 서버/디바이스.
ㅇ 시험 함정:
– TorchScript는 모델 학습을 위한 기능이라고 오해하는 경우.
– tracing과 scripting의 차이를 묻는 문제에서 코드 흐름 제어(if, loop) 처리 가능 여부를 혼동.
ㅇ 시험 대비 “패턴 보기” 예시:
– (O) TorchScript는 Python이 없는 환경에서도 모델 실행이 가능하다.
– (X) TorchScript는 오직 Python 환경에서만 동작한다.
ㅁ 추가 학습 내용
TorchScript 변환 방식은 두 가지가 있다.
1. Tracing: 예시 입력 데이터를 기반으로 연산 그래프를 기록한다. 동적 제어 흐름(if, loop 등)에는 취약하다.
2. Scripting: PyTorch의 TorchScript 언어 subset으로 코드를 변환한다. 동적 제어 흐름도 지원한다.
TorchScript 모델은 .pt 파일 형태로 저장되며, C++ API인 libtorch로 로드할 수 있다.
변환 시 일부 Python 기능(특정 라이브러리 호출, 복잡한 데이터 구조 등)이 지원되지 않을 수 있으므로 변환 전 코드 호환성을 점검해야 한다.
시험에서는 TorchScript와 ONNX를 비교하는 문제가 자주 출제된다. 비교 시 포맷 구조, 호환성, 실행 환경 차이를 구분할 수 있어야 한다.