모델

프루닝

Pruning

프루닝은 모델에서 거의 쓰이지 않는 가중치, 뉴런, 레이어를 잘라내 더 작고 빠르게 만드는 기법으로, 메모리나 속도 제약이 있는 환경에 모델을 올려야 할 때 쓴다. 숫자 정밀도를 낮추는 양자화와 달리 모델의 일부를 아예 없앤다.

방식무엇을 자르나속도 효과
비구조적 (가중치)개별 가중치를 0으로전용 커널이 없으면 거의 없음
반구조적 (2:4)가중치 4개 중 2개씩 규칙적으로지원하는 GPU에서 빨라짐
구조적뉴런, 어텐션 헤드, 레이어일반 하드웨어에서도 빨라짐

파라미터는 많아도 성능에 크게 기여하는 것은 일부뿐이라는 관찰에서 출발한다.

잘랐다고 빨라지는 것은 아니다

가중치를 0으로 바꾸기만 하면 행렬 모양은 그대로여서 일반 GPU에서는 계산량이 줄지 않는다. 희소 형식으로 저장하지 않으면 파일 크기도 그대로다. 실제로 빨라지길 원한다면 구조적 프루닝이나 하드웨어가 지원하는 2:4 패턴을 고른다.

대신 비구조적 방식은 자를 위치를 자유롭게 고를 수 있어서, 같은 비율을 잘라도 성능이 덜 떨어진다. 정확도가 우선이면 비구조적 방식을, 속도가 우선이면 구조적 방식을 고른다.

LLM은 다시 학습하지 않고 한 번에 자른다

LLM은 다시 학습시키는 비용이 너무 커서, 학습 없이 한 번에 자르는 방법을 주로 쓴다. SparseGPT는 레이어마다 가중치를 잘라낸 뒤 남은 가중치를 보정한다. Wanda는 가중치 크기에 입력 활성값의 크기를 곱한 점수로 중요도를 매기는데, 계산이 단순해서 빠르게 적용할 수 있다.

작업 순서는 대체로 같다. 먼저 중요도 계산에 쓸 소량의 텍스트(calibration data)를 준비한다. 다음으로 자를 비율과 패턴(비구조적, 2:4 등)을 정해 자르고, 내가 맡길 작업으로 품질을 확인한다. 품질이 많이 떨어졌다면 LoRA 같은 가벼운 파인튜닝으로 되살린다. Llama 계열을 구조적으로 프루닝할 때는 LLM-Pruner, llm-shearing 같은 도구를 쓸 수 있다.

양자화, 증류와 무엇이 다른가

기법하는 일추가 학습특징
프루닝덜 중요한 부분을 제거필요할 때가 많음구조적이면 속도 향상
양자화숫자 정밀도를 낮춤대개 불필요가장 손쉬운 압축
증류작은 모델이 큰 모델을 따라 배움필수비용이 크지만 효과도 큼

보통은 양자화부터 시도한다. 그래도 부족하면 프루닝을 더하는데, 두 기법을 함께 쓰면 하나만 쓸 때보다 더 크게 줄일 수 있다.

얼마나 자를지는 직접 재 본다

자르는 비율이 높아질수록 성능이 급격히 떨어지고, 작은 모델일수록 손실이 크다. 평균 점수는 비슷해 보여도 추론이나 긴 글 생성 같은 특정 능력이 먼저 무너질 수 있다. 낮은 비율부터 조금씩 올려 가며, 내가 맡길 작업으로 품질과 속도를 함께 확인하는 것이 안전하다.

주로 배포 직전 경량화에 쓴다

가장 흔한 건 이미 학습된 모델을 배포하기 전에 줄이는 방식이다. 목표 기기와 하드웨어에 맞춰 자르는 방식을 고르고, 양자화와 함께 적용하는 경우가 많다.

어디서어떻게 쓰나
스마트폰·엣지 기기구조적 프루닝으로 레이어나 헤드를 줄이고 양자화까지 더해 메모리 안에 맞춘다
GPU 추론 서버2:4 희소성을 지원하는 GPU에서 2:4 패턴으로 잘라 처리량을 늘린다
작은 모델 만들기큰 모델을 구조적으로 잘라 뼈대를 만든 뒤, 추가 학습이나 증류로 성능을 되살린다
#경량화#가지치기#희소화
참고 자료
← AI Wiki에서 더 보기
updated at 2026-10-20