모델 프루닝(가지치기) (Model Pruning)

컴퓨터과학·AI
한 줄 정의: 모델 성능에 기여도가 낮은 가중치나 뉴런, 채널을 제거해 모델의 크기와 연산량을 줄이는 경량화 기법.

쉽게 풀면

학습이 끝난 신경망을 자세히 들여다보면 결과에 거의 영향을 주지 않는, 값이 0에 가까운 가중치나 별로 활성화되지 않는 뉴런들이 꽤 있어요. 모델 프루닝은 이런 중요도가 낮은 연결이나 뉴런을 찾아서 잘라내는(가지치기) 방법입니다. 나무의 불필요한 가지를 쳐내도 나무는 잘 자라는 것처럼, 신경망에서도 덜 중요한 부분을 제거해도 성능은 크게 떨어지지 않으면서 모델의 크기와 연산량은 확 줄일 수 있어요. 어떤 단위로 잘라내느냐에 따라 개별 가중치를 잘라내는 비구조적 프루닝과, 뉴런이나 채널 전체를 통째로 잘라내는 구조적 프루닝으로 나뉩니다.

왜 중요한가

딥러닝 모델이 점점 커지면서 모바일 기기나 엣지 디바이스처럼 메모리와 연산 자원이 제한된 환경에 배포하기 어려워지는 문제가 생겼는데, 모델 프루닝은 성능 손실을 최소화하면서 모델을 가볍게 만드는 대표적인 해법으로 다뤄집니다. 이 때문에 모델 경량화, 효율적 딥러닝, 온디바이스 AI 연구에서 양자화·지식증류와 함께 핵심 축을 이루며, 실시간 추론이 필요한 산업 응용에서도 실무적 중요성이 큽니다.

논문에서는 이렇게 쓰입니다

"연산량 감소를 위해 중요도가 낮은 채널을 제거하는 구조적 프루닝을 적용한 뒤 재학습을 수행하였다."

모델에서 중요도가 낮다고 판단된 채널들을 통째로 잘라내고, 성능을 회복하기 위해 다시 학습시켰다는 뜻이다.

"대규모 언어 모델의 추론 지연시간을 줄이기 위해 가중치 크기 기반의 비구조적 프루닝을 적용하고 희소 연산을 지원하는 하드웨어에서 성능을 평가하였다."

자연어처리 분야에서는 개별 가중치 단위로 잘라내는 비구조적 프루닝이 흔히 쓰이며, 이때 실제 속도 향상을 얻으려면 희소 행렬 연산을 지원하는 하드웨어나 소프트웨어가 함께 필요하다는 점이 언급된다.

"객체 탐지 모델의 백본 네트워크에 반복적 프루닝과 미세조정을 번갈아 적용하여 모델 크기를 절반으로 줄이면서도 정확도 저하를 최소화하였다."

컴퓨터 비전 분야에서는 한 번에 크게 잘라내기보다 조금씩 잘라내고 재학습하는 과정을 반복해 성능 저하를 억제하는 방식이 자주 활용된다.

조금 더 깊게 보면

프루닝은 어떤 단위를 잘라내는지에 따라 개별 가중치를 대상으로 하는 비구조적 프루닝과, 뉴런·채널·층 전체를 통째로 제거하는 구조적 프루닝으로 나뉘는데, 비구조적 프루닝은 이론적 압축률은 높지만 실제 속도 향상을 얻으려면 희소 연산을 지원하는 하드웨어가 필요한 반면 구조적 프루닝은 일반 하드웨어에서도 바로 속도 이득을 얻기 쉽습니다. 중요도를 판단하는 기준으로는 가중치의 크기(magnitude), 활성화 값의 민감도, 손실 함수에 대한 기여도 등이 흔히 쓰이며, 프루닝 이후 성능을 회복하기 위한 미세조정(fine-tuning) 과정을 함께 반복하는 경우가 많습니다. 논문을 읽을 때는 어떤 단위로, 어떤 기준으로 잘라냈는지와 함께, 압축률 대비 실제 속도 향상이 어느 정도인지를 구분해서 보는 것이 중요합니다.

주의할 점

프루닝을 과도하게 적용하면 성능이 급격히 떨어질 수 있어, 보통 프루닝 이후에는 남은 파라미터로 모델을 다시 학습시키는 재학습 과정이 필요하다.

관련 용어