CNN 구조, 트랜스포머 모델, ‘네트워크 가지치기’로 경량화
불필요, 중요도 낮은 가중치나 뉴런 제거, 네트워크 복잡도 줄여
구조적 가지치기, 비구조적 가지치기, 훈련 중 가지치기 등
[애플경제 전윤미 기자] AI모델 경량화를 위해선 학습된 신경망 모델에서 불필요하거나 중요도가 낮은 가중치나 뉴런을 제거, 네트워크의 복잡도를 줄이는 방법이 있다. 이른바 ‘네트워크 가지치기’(network pruning)다. 이는 단순히 모델의 크기를 줄일 뿐 아니라, 추론 시간이나 전력 소모를 줄인다. 또한 모델 배포나 유지 비용까지 절감할 수도 있다.
가지치기 방식은 쉽게 말해 단순히 중요하지 않은 토큰을 제거하는 것이라고 할 수 있다.
흔히 과잉 설계 신경망 많아 ‘가지치기’ 필요
흔히 방대한 데이터를 처리하기 위해 신경망이 과잉 설계되는 경향이 있다. 가지치기는 이런 불필요한 요소를 제거, 경량화하는 것이다. 실제로 많은 AI모델은 전체 성능에 별로 영향이 없는 많은 파라미터가 포함되어 있다. 그 중 불필요한 매개변수 등을 제거, 품질이나 정확도를 훼손하지 않고도 모델을 압축할 수 있다.
네트워크 가지치기는 모델의 구조를 변경하지 않고 계산량과 메모리 사용량을 줄일 수 있다는게 장점이다. 특히, 학습이 완료된 모델에게 적용할 수 있어, 그 성능을 유지하면서 다양한 기기의 환경에도 적응할 수 있다.
지금까진 주로 CNN 구조에 관한 가지치기 연구가 활발히 이루어졌다. CNN 구조에서의 가지치기 방법은 채널의 중요도를 평가하거나, ‘배치 정규화’(batch normalization)의 스케일링 계수를 기준으로 채널을 제거하는 방법 등이 있다. ‘배치 정규화’는 학습 과정에서 각 배치 단위 별 다양한 분포를 가진 데이터의 배치별 평균과 분산을 이용, 정규화하는 것이다.
그러나 최근에는 트랜스포머 기반 모델에서도 가지치기 기법이 월활하게 적용되고 있다. 트랜스포머 모델에서는 ‘셀프 어텐션’ 구조의 특성을 고려, ‘어텐션 헤드’나 전체 레이어 단위로 가지치기한다. 또는 입력 토큰 수를 줄이는 ‘토큰 프루닝’ 기법도 있다.
예를 들어, ‘DynamicViT’와 같은 모델이 이에 속한다. 즉, 입력 이미지의 토큰 중요도를 동적으로 평가해 불필요한 토큰을 제거함으로써 연산량을 줄이는 것이다.
‘가지치기’의 종류별로 다른 특성
이런 가지치기는 일단 제거하는 단위에 따라 ‘비구조적 가지치기’(unstructured pruning)와 ‘구조적 가지치기’(structured pruning)로 구분된다.
비구조적 가지치기는 각각의 가중치별로 중요도가 낮은 파라미터를 제거하는 방식이다. 이는 매우 높은 압축률을 달성할 수 있다. 그러나 압축 패턴이 불규칙하다보니, 하드웨어에서 병렬 처리를 하거나 최적화시키는데엔 비효율적이란 평가다.
이에 비해 ‘구조적 가지치기’는 채널이나, 필터, 레이어 단위 등 일정한 구조를 가진 블록을 제거하는 방식이다. 이를 통해 연산량을 직접 감소시킬 수 있다.
이 외에도 최근엔 ‘훈련 중 가지치기(pruning during training)’ 기법도 주목받고 있다. 이는 모델의 각 구조의 중요도를 학습 중에 동적으로 평가, 가지치기 기법을 적용하는 것이다. 이미 훈련된 네트워크를 대상으로 가지치기하는 방식보다, 한결 정확도 손실이 적다. 훈련 과정에선 성능뿐만 아니라 네트워크의 효율성을 고려해 파라미터를 학습할 수 있다는 것도 장점이다.
유사 토큰 병합, 연산 복잡도 낮춰
그런 가운데 입력 토큰 수 자체를 줄이기 위해 유사한 토큰을 병합하는 ‘토큰 병합’(Token Merging, ToMe) 방식도 눈길을 끈다. 본래 트랜스포머 기반의 비전 모델은 입력 이미지를 패치로 분할, 토큰으로 변환하여 처리한다. 그 때문에 해상도가 높아질수록 연산 복잡도가 급격히 증가하는 구조다. 이런 문제를 해결하기 위한 것이 ‘토큰 병합’이다.
이는 의미적으로 유사한 토큰들을 병합함으로써 입력 정보를 압축, 연산 효율성과 성능을 높이는 방식이다. 이를 위해 트랜스포머 블록에서 ‘어텐션’의 키(key)와 인덱스를 활용, 일단 입력 토큰을 짝수와 홀수 그룹으로 분할한다. 그런 다음 코사인(Cosign, 기울기값) 유사도를 계산해 비슷한 쌍을 선별, 병합함으로써 전체 토큰 수를 줄이는 것이다.
그 결과 보통 연산량을 30~40% 가량 줄이면서도, 정확도가 떨어지는 비율은 약 1% 정도에 그친다. 이 방법은 “별도의 재학습 과정 없이 모델에 바로 적용 가능하다는 점에서 실용적이며, 모델의 구조나 파라미터를 변경하지 않고도 연산 효율성을 크게 향상시킬 수 있다”는 설명이다.
의미론적 정보, 위치 정보 고려한 토큰 병합도
다만 이런 토큰 병합은 여러 토큰의 시각적 정보를 하나의 토큰으로 묶는 셈이어서, 세부 객체의 경계나 위치 정보가 손실될 우려가 있다는 지적이다. 이는 ‘의미론적 분할’(시멘틱 분할)이나 객체 검출(object detection)과 같은 공간적 정보가 중요한 작업에서 성능 저하로
이어질 수 있다. 이를 해결하기 위해 ‘시맨틱 정보’와 ‘위치 정보’를 함께 고려한 토큰 병합 전략들이 활용되기도 한다,
이는 지역 단위에서 유사한 토큰을 우선 병합한 후, 전역 단위에서 추가 병합을 수행하는 2단계 병합 방식으로 객체 경계를 보존한다. 또한 토큰 병합 기법은 이미지 기반 작업을 넘어 비디오 데이터의 높은 시공간 중복성을 효과적으로 활용할 수 있다.
예를 들어, 토큰 통합은 비디오 인식 측면에서 재학습 없이 기존 모델에 비해 2배 향상된 처리량과 높은 정확도를 동시에 달성했다. 비디오 트랜스포머 초기 블록에서 중요도가 낮은 배경 토큰을 병합, 계산량을 크게 줄이면서도 성능을 유지하거나 향상시킬 수 있다.
