모델/시스템 최적화: 추론 기술
ㅁ 추론 기술
1. ONNX Runtime
ㅇ 정의:
오픈 뉴럴 네트워크 익스체인지(Open Neural Network Exchange) 형식을 기반으로 다양한 하드웨어와 프레임워크에서 모델을 최적화하여 실행할 수 있는 범용 추론 엔진.
ㅇ 특징:
– PyTorch, TensorFlow 등 다양한 프레임워크에서 학습된 모델을 ONNX 포맷으로 변환하여 실행 가능
– CPU, GPU, 모바일, IoT 등 다양한 환경 지원
– 그래프 최적화, 연산자 병합, 메모리 관리 개선 기능 제공
ㅇ 적합한 경우:
– 여러 플랫폼에서 동일한 모델을 배포해야 하는 경우
– 프레임워크 종속성을 줄이고 추론 속도를 높이고 싶은 경우
ㅇ 시험 함정:
– ONNX Runtime은 학습(Training) 엔진이 아니라 추론(Inference) 엔진임
– 모든 연산자가 자동 최적화되는 것은 아님
ㅇ 시험 대비 “패턴 보기” 예시:
O: “ONNX Runtime은 다양한 환경에서 추론 속도를 향상시킬 수 있다.”
X: “ONNX Runtime은 모델 학습 속도를 향상시키기 위해 사용된다.”
2. TensorRT
ㅇ 정의:
NVIDIA GPU 환경에서 딥러닝 모델의 추론 속도를 극대화하기 위한 고성능 추론 최적화 라이브러리.
ㅇ 특징:
– FP32, FP16, INT8 정밀도 지원으로 성능/정확도 트레이드오프 가능
– 레이어 병합, 커널 자동 선택, 메모리 최적화 기능 제공
– NVIDIA GPU 전용
ㅇ 적합한 경우:
– NVIDIA GPU 환경에서 초저지연 추론이 필요한 경우
– 대규모 배치 처리보다 실시간 응답성이 중요한 경우
ㅇ 시험 함정:
– TensorRT는 CPU 전용 환경에서는 동작하지 않음
– INT8 최적화를 위해서는 사전 Calibration 과정 필요
ㅇ 시험 대비 “패턴 보기” 예시:
O: “TensorRT는 NVIDIA GPU 환경에서 추론 속도를 향상시킨다.”
X: “TensorRT는 CPU 환경에서 GPU보다 더 빠른 추론을 제공한다.”
3. Distillation
ㅇ 정의:
성능이 좋은 대형 모델(Teacher)에서 작은 모델(Student)로 지식을 전이하여 경량 모델의 성능을 향상시키는 기법.
ㅇ 특징:
– Teacher 모델의 Soft Label과 Feature를 활용
– 모델 크기 감소에도 불구하고 정확도 유지 가능
– 학습 과정에서 추가적인 Loss 항목 사용
ㅇ 적합한 경우:
– 모바일, 임베디드 환경에서 모델 경량화 필요 시
– 대형 모델의 추론 비용이 과도한 경우
ㅇ 시험 함정:
– Distillation은 모델 구조를 단순 복사하는 것이 아님
– Teacher 모델의 성능이 낮으면 Student 모델도 성능이 제한됨
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Distillation은 Teacher 모델의 지식을 Student 모델로 전달하는 기법이다.”
X: “Distillation은 모델 크기를 줄이기 위해 레이어를 무작위로 삭제하는 과정이다.”
4. Operator Fusion
ㅇ 정의:
연속된 연산자(Operators)를 하나의 커널로 결합하여 메모리 접근과 연산 오버헤드를 줄이는 최적화 기법.
ㅇ 특징:
– 메모리 대역폭 사용량 감소
– 캐시 효율성 증가
– GPU/CPU 모두에서 적용 가능
ㅇ 적합한 경우:
– 동일한 데이터에 대해 연속된 연산을 수행하는 경우
– 메모리 접근 비용이 병목인 경우
ㅇ 시험 함정:
– 모든 연산자가 Fusion 가능한 것은 아님
– 연산 순서 변경 시 결과가 달라질 수 있어 적용 불가한 경우 존재
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Operator Fusion은 메모리 접근을 줄여 추론 속도를 높일 수 있다.”
X: “Operator Fusion은 모델의 파라미터 수를 줄이는 방법이다.”
ㅁ 추가 학습 내용
정리 내용
1. ONNX Runtime Execution Provider 개념 및 비교
– Execution Provider: ONNX Runtime이 다양한 하드웨어/가속기에서 모델을 실행할 수 있도록 하는 모듈
– 주요 예시: Azure EP(클라우드 최적화), TensorRT EP(NVIDIA GPU 최적화), OpenVINO EP(Intel 하드웨어 최적화)
– 장점/단점:
• Azure: 클라우드 환경 통합 용이, 로컬 최적화 한계
• TensorRT: NVIDIA GPU 성능 극대화, 환경 의존성 큼
• OpenVINO: Intel CPU/VPU 최적화, 비Intel 환경에서 성능 제한
2. TensorRT Dynamic Shape 지원 및 Calibration
– Dynamic Shape: 입력 크기가 변하는 상황에서 런타임에 최적화된 커널 선택
– Calibration: INT8 추론 시 정밀도 손실 최소화를 위해 대표 데이터셋으로 스케일링 파라미터 산출
– Calibration 절차:
1) 대표 데이터셋 준비
2) FP32 모델 실행 후 통계 수집
3) 스케일링 팩터 계산
4) INT8 변환 및 검증
3. Distillation 변형 기법
– Feature-based: 중간 레이어 특성을 교사-학생 모델 간 일치
– Response-based: 최종 출력 로짓/확률 분포를 모방
– Relation-based: 샘플 간 관계나 거리 정보 전달
– 적용 사례: 이미지 분류, NLP, 음성 인식 등 다양한 분야
4. Operator Fusion
– 연산자 종속성 분석: 연산 순서, 데이터 흐름, 메모리 액세스 패턴 파악
– 자동 Fusion: 프레임워크/컴파일러가 최적화 수행
– 수동 Fusion: 개발자가 직접 연산 병합 구현
– 장점: 메모리 접근 감소, 캐시 효율 증가, 실행 속도 향상
5. 효율적 추론을 위한 연계 전략
– Mixed Precision: FP16/FP32 혼합으로 메모리 절감 및 속도 향상
– Quantization: 모델 파라미터를 저정밀도로 변환하여 경량화
– Pruning: 불필요한 가중치 제거로 연산량 감소
– 전략 연계: Mixed Precision과 Quantization 병행, Pruning 후 재학습 등
시험 대비 체크리스트
[ ] ONNX Runtime Execution Provider의 개념과 역할 설명 가능
[ ] Azure, TensorRT, OpenVINO EP의 장단점 비교 가능
[ ] TensorRT Dynamic Shape 지원 원리 이해
[ ] INT8 Calibration 과정의 단계별 절차 설명 가능
[ ] Feature-based, Response-based, Relation-based Distillation 차이와 사례 제시 가능
[ ] Operator Fusion 시 종속성 분석 요소 나열 가능
[ ] 자동 Fusion과 수동 Fusion의 차이 설명 가능
[ ] Mixed Precision, Quantization, Pruning 각각의 목적과 효과 설명 가능
[ ] 세 기법을 어떻게 조합해 효율적 추론을 구현할지 전략 제시 가능