모델/시스템 최적화: 추론 기술 – Operator Fusion
ㅁ 추론 기술
ㅇ 정의:
– Operator Fusion은 딥러닝 모델의 연산 그래프 상에서 연속적으로 수행되는 여러 연산자(operator)를 하나의 커널로 결합하여 실행하는 최적화 기법이다.
ㅇ 특징:
– 메모리 접근 횟수를 줄이고, 중간 결과 저장/로드를 최소화하여 실행 속도를 향상시킨다.
– GPU/TPU 등 하드웨어 가속기에서 특히 효과적이다.
– 연산자 간 데이터 이동을 줄여 캐시 효율성을 높인다.
ㅇ 적합한 경우:
– CNN, Transformer 등에서 연속적인 element-wise 연산(ReLU, BatchNorm 등)이 있는 경우.
– 연산 병합으로 메모리 I/O 병목이 발생하는 모델.
ㅇ 시험 함정:
– Operator Fusion은 항상 속도 향상을 보장하지 않으며, 일부 경우 커널 크기 증가로 인해 레지스터 사용량이 늘어나 오히려 성능이 저하될 수 있다.
– 그래프 최적화와 동일한 개념으로 혼동할 수 있으나, 그래프 최적화는 더 광범위한 개념이다.
ㅇ 시험 대비 “패턴 보기” 예시:
– (O) “연속된 연산자를 하나의 실행 단위로 결합하여 메모리 접근을 줄인다.”
– (X) “모든 연산을 하나의 거대한 커널로 결합하면 항상 성능이 향상된다.”
ㅁ 추가 학습 내용
Operator Fusion은 JIT 컴파일러(TensorRT, XLA, TVM 등)에서 자동으로 적용되며, 일부 프레임워크(PyTorch, TensorFlow)는 수동으로 fusion을 수행할 수 있는 API를 제공한다.
Fusion이 가능한 연산자는 주로 element-wise, pointwise, 일부 reduction 연산이며, convolution과 activation, matmul과 bias add 및 activation을 결합하는 패턴이 일반적이다.
성능 향상 효과는 메모리 대역폭이 병목인 경우에 극대화되며, 연산량이 매우 큰 경우에는 효과가 제한적일 수 있다.
시험에서는 Operator Fusion, Kernel Fusion, Layer Fusion의 용어 차이를 묻거나, 데이터 의존성이 강한 branching 연산과 같이 fusion이 불가능한 연산 패턴을 제시하여 구분하는 문제가 출제될 수 있다.