모델/시스템 최적화: 효율화 방식 – Layer Fusion
ㅁ 효율화 방식
ㅇ 정의:
연산 과정에서 인접한 여러 레이어(layer)의 연산을 하나의 연산으로 합쳐 메모리 접근 횟수와 연산 오버헤드를 줄이는 최적화 기법.
ㅇ 특징:
– 연속된 연산을 하나로 병합하여 중간 결과 저장을 최소화함.
– CPU/GPU 메모리 대역폭 사용량 감소.
– 연산자 간 데이터 이동을 줄여 캐시 효율 향상.
– 주로 딥러닝 프레임워크의 그래프 최적화 단계에서 적용.
ㅇ 적합한 경우:
– 동일한 텐서에 대해 연속적으로 수행되는 연산이 많은 경우.
– 모델 추론 속도를 높이고 메모리 사용량을 줄이고자 할 때.
– 임베디드/모바일 환경처럼 메모리 제약이 큰 경우.
ㅇ 시험 함정:
– Layer Fusion은 항상 속도를 개선하는 것이 아니라, 하드웨어 특성에 따라 성능 향상이 미미하거나 오히려 손해일 수 있음.
– 연산 순서를 변경하면 부동소수점 연산 오차가 누적될 수 있음.
– 모든 연산이 병합 가능한 것은 아님(비선형 연산이나 상태를 가지는 연산은 제한적).
ㅇ 시험 대비 “패턴 보기” 예시:
– O: “연속된 레이어 연산을 하나로 합쳐 메모리 접근을 줄이는 최적화 기법이다.”
– X: “Layer Fusion은 모든 연산에서 무조건 성능이 향상된다.”
– X: “Layer Fusion은 메모리 사용량을 늘려 속도를 높인다.”
ㅁ 추가 학습 내용
Layer Fusion과 관련해 알아야 할 핵심 내용은 다음과 같다.
1. Conv, BatchNorm, ReLU와 같이 자주 결합되는 연산자 병합 사례를 숙지해야 한다.
2. TensorRT, TVM, ONNX Runtime 등 주요 추론 엔진에서 Layer Fusion이 어떻게 구현되는지 이해하면 응용 문제에 유리하다.
3. Layer Fusion은 그래프 최적화 과정의 일부이며, 커널 호출 수를 줄여 GPU 성능 향상에 기여한다.
4. 병합 가능한 연산의 조건으로는 동일한 데이터 배치, 호환되는 데이터 타입, 메모리 레이아웃 유지 등이 있으며, 이를 기억하면 OX 문제에서 혼동을 줄일 수 있다.
5. 일부 하드웨어에서는 Layer Fusion보다 병렬 실행이 더 효율적일 수 있으므로, 항상 더 빠르다고 단정해서는 안 된다.