[논문 리뷰] Wanda: A Simple and Effective Pruning Approach for Large Language Models

smj·2026년 3월 31일

review

목록 보기
29/30

한줄 요약: 가중치 크기 × 활성화 크기라는 단순한 기준만으로, SparseGPT와 동등한 프루닝 성능을 Hessian 계산 없이 달성하여 프루닝을 극도로 단순화했다.

항목내용
저자Mingjie Sun, Zhuang Liu, Anna Bair, J. Zico Kolter
소속Carnegie Mellon University, Meta AI
발표ICML 2024
링크arxiv.org/abs/2306.11695
키워드Pruning, Activation-Aware, Simple, One-Shot

1. 문제 정의

기존 LLM 프루닝:
  Magnitude Pruning: |w| 기준으로 작은 가중치 제거 → LLM에서 실패
  SparseGPT: Hessian 기반 보상으로 정확 → 하지만 복잡하고 느림

Wanda의 관찰:
  AWQ(양자화)가 "활성화가 큰 채널의 가중치가 중요"함을 보였음
  → 같은 원리를 프루닝에 적용하면?

  가중치만 보는 것 (|w|) → 실패
  가중치 × 활성화를 보는 것 (|w| × ||X||) → 성공할 수 있지 않을까?

2. 제안 방법

프루닝 기준: |w| × ||X||

Magnitude Pruning:
  점수 = |w_ij|
  → 가중치 크기만 고려

Wanda:
  점수 = |w_ij| × ||X_j||₂
  → 가중치 크기 × 해당 입력 채널의 활성화 norm

직관:
  y = Wx 에서 출력에 대한 w_ij의 기여 ≈ |w_ij| × |x_j|
  → 가중치가 크더라도 해당 채널의 활성화가 작으면 출력 영향 미미
  → 가중치가 작더라도 활성화가 크면 출력에 중요

계산:
  1. 캘리브레이션 데이터(128샘플)로 각 채널의 활성화 norm 계산
  2. 각 가중치에 활성화 norm 곱하기
  3. 점수가 낮은 가중치를 제거 (0으로 설정)
  → Hessian 계산 없음, 보상 업데이트 없음, 단 1회 forward pass

비교: SparseGPT vs Wanda

SparseGPT:
  1. Hessian H = XX^T 계산
  2. 열 단위 순차 처리
  3. 제거 시 Hessian 기반 보상으로 남은 가중치 조정
  → 정확하지만 복잡 (O(d³) 연산)

Wanda:
  1. 활성화 norm ||X_j|| 계산 (단순 통계)
  2. |w_ij| × ||X_j||로 점수 매기기
  3. 점수 하위 p%를 0으로 설정
  → 보상 없음, 단순 마스킹만 (O(d²) 연산)

핵심 차이: 보상 업데이트 유무
  SparseGPT: 제거된 가중치의 오차를 남은 가중치에 분배 (최적 보상)
  Wanda: 보상 없이 그냥 제거 → 그런데도 성능이 비슷!

3. 실험 결과

3.1 LLaMA-7B Perplexity (WikiText-2)

방법50% 비구조적4:8 반구조적2:4 반구조적
Dense (원본)5.685.685.68
Magnitude54.5918.4724.17
SparseGPT6.556.6010.17
Wanda6.426.5411.07

→ 50%·4:8에서 SparseGPT와 동등하거나 약간 우수, 2:4에서는 약간 열위

3.2 다양한 모델 크기 (50% 비구조적)

모델MagnitudeSparseGPTWanda
LLaMA-7B54.596.556.42
LLaMA-13B24.135.635.64
LLaMA-30B15.714.844.89
LLaMA-65B11.383.994.07

→ 모든 규모에서 SparseGPT와 사실상 동등

3.3 속도 비교

모델SparseGPTWanda
LLaMA-7B~5분~1초
LLaMA-65B~2시간~2분

60-100배 빠른 프루닝 — Hessian 계산과 보상 없이

3.4 다운스트림 태스크 (LLaMA-7B, 50% 프루닝)

태스크SparseGPTWanda
BoolQ72.5%71.8%
ARC-Easy69.3%69.1%
HellaSwag66.1%65.8%
WinoGrande65.7%65.4%

→ 다운스트림에서도 격차 미미


4. 한계점

  • 보상 없음의 한계: 고희소도(>60%)에서는 SparseGPT 대비 성능 하락이 커짐
  • 비구조적 희소성: Magnitude와 같은 한계 — 일반 GPU에서 속도 향상 없음
  • 활성화 분포 가정: 캘리브레이션 데이터의 활성화 분포가 실제 사용 분포와 다를 수 있음
  • 레이어별 균일 희소도: 모든 레이어에 같은 비율로 프루닝 → 레이어별 최적 비율은 다를 수 있음
  • 양자화와의 결합: SparseGPT는 양자화와 자연스럽게 결합되지만, Wanda는 별도 처리 필요
  • 구조적 프루닝 미지원: 채널/헤드 단위 프루닝에 대한 확장은 추가 연구 필요

5. 의의와 영향

  • "단순함의 승리": SparseGPT의 Hessian 기반 보상이 불필요함을 실증
  • AWQ(양자화)와 정확히 동일한 패턴: "활성화가 중요한 파라미터를 가리킨다"
    • GPTQ → AWQ: Hessian 보상 → 활성화 기반 스케일링 (양자화)
    • SparseGPT → Wanda: Hessian 보상 → 활성화 기반 점수 (프루닝)
  • LLM 압축의 통합 원리: "활성화 인식(activation-aware)"이 양자화와 프루닝 모두에서 유효
  • 구현 코드 10줄 이내 → 극도의 접근성
  • 후속 연구에서 Wanda 기준을 베이스라인으로 광범위하게 채택

6. 💬 리뷰어 코멘트

Wanda의 아름다움은 "왜 이것이 작동하는가?"라는 질문에 있다. SparseGPT는 Hessian 역행렬을 계산하여 최적 보상을 수행한다. Wanda는 보상 없이 그냥 지운다. 그런데 결과가 비슷하다. 이는 LLM의 가중치 분포가 매우 "친절"하여, 올바른 기준으로 프루닝하면 보상이 거의 불필요하다는 것을 의미한다.

AWQ와의 평행 관계가 가장 인상적이다:

  • 양자화: GPTQ(복잡, Hessian) → AWQ(단순, 활성화 기반) → 동등 성능
  • 프루닝: SparseGPT(복잡, Hessian) → Wanda(단순, 활성화 기반) → 동등 성능

이 패턴은 "LLM 압축에서 활성화 분포가 가장 중요한 정보"라는 일반 원리를 시사한다.


관련 논문: SparseGPT, AWQ, GPTQ, Magnitude Pruning, OWL

0개의 댓글