한줄 요약: 가중치 크기 × 활성화 크기라는 단순한 기준만으로, 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 |
기존 LLM 프루닝:
Magnitude Pruning: |w| 기준으로 작은 가중치 제거 → LLM에서 실패
SparseGPT: Hessian 기반 보상으로 정확 → 하지만 복잡하고 느림
Wanda의 관찰:
AWQ(양자화)가 "활성화가 큰 채널의 가중치가 중요"함을 보였음
→ 같은 원리를 프루닝에 적용하면?
가중치만 보는 것 (|w|) → 실패
가중치 × 활성화를 보는 것 (|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:
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: 보상 없이 그냥 제거 → 그런데도 성능이 비슷!
| 방법 | 50% 비구조적 | 4:8 반구조적 | 2:4 반구조적 |
|---|---|---|---|
| Dense (원본) | 5.68 | 5.68 | 5.68 |
| Magnitude | 54.59 | 18.47 | 24.17 |
| SparseGPT | 6.55 | 6.60 | 10.17 |
| Wanda | 6.42 | 6.54 | 11.07 |
→ 50%·4:8에서 SparseGPT와 동등하거나 약간 우수, 2:4에서는 약간 열위
| 모델 | Magnitude | SparseGPT | Wanda |
|---|---|---|---|
| LLaMA-7B | 54.59 | 6.55 | 6.42 |
| LLaMA-13B | 24.13 | 5.63 | 5.64 |
| LLaMA-30B | 15.71 | 4.84 | 4.89 |
| LLaMA-65B | 11.38 | 3.99 | 4.07 |
→ 모든 규모에서 SparseGPT와 사실상 동등
| 모델 | SparseGPT | Wanda |
|---|---|---|
| LLaMA-7B | ~5분 | ~1초 |
| LLaMA-65B | ~2시간 | ~2분 |
→ 60-100배 빠른 프루닝 — Hessian 계산과 보상 없이
| 태스크 | SparseGPT | Wanda |
|---|---|---|
| BoolQ | 72.5% | 71.8% |
| ARC-Easy | 69.3% | 69.1% |
| HellaSwag | 66.1% | 65.8% |
| WinoGrande | 65.7% | 65.4% |
→ 다운스트림에서도 격차 미미
Wanda의 아름다움은 "왜 이것이 작동하는가?"라는 질문에 있다. SparseGPT는 Hessian 역행렬을 계산하여 최적 보상을 수행한다. Wanda는 보상 없이 그냥 지운다. 그런데 결과가 비슷하다. 이는 LLM의 가중치 분포가 매우 "친절"하여, 올바른 기준으로 프루닝하면 보상이 거의 불필요하다는 것을 의미한다.
AWQ와의 평행 관계가 가장 인상적이다:
이 패턴은 "LLM 압축에서 활성화 분포가 가장 중요한 정보"라는 일반 원리를 시사한다.
관련 논문: SparseGPT, AWQ, GPTQ, Magnitude Pruning, OWL