모델 압축의 4축은 어떻게 하나의 철학으로 수렴하는가
Low-rank factorization의 Eckart-Young 정리부터 LoRA의 intrinsic rank 가설, Tucker 분해, Hybrid recipe까지 — 학습된 가중치의 redundancy를 제거하는 통일된 관점을 추적한다.
학습된 신경망 가중치에는 공통된 패턴이 있다. SVD를 걸어보면 singular value가 long-tail을 그린다. top 10%가 전체 에너지의 80%를 차지한다. 이 하나의 사실이 Low-rank factorization, Tensor decomposition, LoRA, Hybrid recipe를 하나의 철학으로 묶는다. 가중치 행렬은 사실상 low-rank다 — 그렇다면 나머지는 버려도 되지 않는가?
Eckart-Young 정리가 말하는 것
행렬 의 SVD는 다음과 같다.
rank- truncation 는 Frobenius norm 의미에서 유일한 최적 해다.
rank- 행렬 로 매개변수화하고 를 KKT 조건으로 최소화하면 , 가 된다. 잔차 에너지는 제거된 singular value의 제곱합과 같다.
이 정리는 강력한 보증을 제공한다. “얼마나 버려도 되는가”의 질문이 spectrum을 보는 것으로 환원된다. 가중치를 rank-64로 압축하면 파라미터가 96.9% 감소하고, 에너지 손실은 이다. 학습된 가중치의 spectrum이 실제로 heavy-head라면, 이 손실은 작다.
Tensor 차원으로의 확장
2D 행렬에서 작동하는 SVD는 4D conv kernel에 직접 적용되지 않는다. 는 4개의 mode를 가진 텐서다. Tucker decomposition은 이를 일반화한다.
core tensor 가 압축된 표현을 담고, factor matrix 가 각 mode의 basis를 정의한다. 에 Tucker 을 적용하면 5배 압축이 달성된다.
MobileNet의 depthwise separable convolution은 Tucker의 특수 사례다. depthwise()는 spatial mode를 그대로 유지하면서 channel mixing을 분리하고, pointwise()는 spatial을 건드리지 않는다. 표준 conv의 파라미터가 로 감소한다 — 이면 약 9배 차이다.
Standard conv: C_o × C_i × k × k (모든 channel × spatial 동시)
Depthwise: C_i × 1 × k × k (채널별 공간 필터)
Pointwise: C_o × C_i × 1 × 1 (채널 혼합만)
CP decomposition은 rank-1 outer product의 합으로 표현한다. . 직관적으로 가장 단순하지만, CP rank 결정이 NP-hard여서 Tucker보다 실용성이 낮다.
LoRA — delta를 low-rank로 표현하다
SVD-based truncation은 이미 학습된 가중치를 압축하는 데 쓰인다. LoRA(Hu 2022)는 다른 질문을 던진다. fine-tuning 시의 가중치 변화 가 low-rank라면?
Aghajanyan 2020의 “intrinsic rank” 가설은 이 직관을 뒷받침한다. BERT의 task-specific update 의 stable rank는 32–128 수준 — full rank 768의 일부다. pre-training이 광범위한 지식을 습득하고 fine-tuning은 좁은 과제에 적응하므로, 작은 변화로도 충분하다는 논리다.
는 zero로 초기화되어 학습 시작 시 을 보장한다. 학습이 진행되면서 가 활성화된다. 70B 모델에서 이면 학습 가능한 파라미터가 전체의 0.05%에 불과하다.
QLoRA(Dettmers 2023)는 여기에 quantization을 더한다. 를 NF4로 4비트 양자화하고 만 FP16으로 학습한다. 65B 모델의 메모리 요구량이 130GB에서 약 43GB로 줄어든다 — 80GB GPU 단일 장치에서 fine-tuning이 가능해지는 수준이다.
LoRA의 전제는 intrinsic rank 가설이다. architecture 변경이 필요한 task, 강한 domain shift, long-context fine-tuning에서는 rank가 부족해 plateau가 빨리 온다. 반대로 instruction following이나 QA 같은 in-domain adaptation에서는 full fine-tuning을 압도한다. rank 은 spectrum 분석과 validation curve로 결정하는 것이 원칙이다.
Hybrid Recipe — 네 축의 곱셈 효과
각 압축 기법은 다른 redundancy를 제거한다.
| 축 | 제거하는 redundancy |
|---|---|
| Pruning | weight support |
| Quantization | precision |
| Distillation | architecture capacity |
| Low-rank / Tensor decomp | rank |
독립적으로 다른 차원을 건드리므로 효과가 곱해진다.
Han 2016의 Deep Compression은 이 철학의 초기 구현이다. magnitude pruning으로 9–13배 sparsity를 얻고, k-means weight clustering으로 4비트 codebook을 만들고, Huffman coding으로 추가 1.4배를 얻는다. AlexNet 240MB가 6.9MB로 줄었다.
현재 LLM serving stack은 이를 더 밀어붙인다. GPTQ INT4 + KV cache INT8 + FlashAttention + PagedAttention을 조합하면 naive FP16 대비 10–20배 throughput이 가능하다.
순서도 중요하다. Pruning 후 nonzero weight의 dynamic range가 좁아지므로 같은 bit budget으로 더 촘촘한 quantization grid를 얻는다. prune → quantize가 일반적 표준인 이유다.
정리
- 학습된 가중치의 singular value는 long-tail이다. 이것이 모든 low-rank 기법의 공통 전제다.
- Eckart-Young 정리는 SVD truncation이 Frobenius norm 의미에서 rank- approximation의 유일한 최적 해임을 보장한다.
- Tucker decomposition은 이를 4D tensor로 확장하고, MobileNet의 separable conv는 그 특수 사례다.
- LoRA는 fine-tuning 시의 가 low-rank라는 가설 위에서 학습 비용을 100–1000배 줄인다.
- 네 축의 압축을 순서에 맞게 쌓으면 효과가 곱해진다.
redundancy는 여러 이름을 가지고 있다 — singular value, rank, precision, capacity. 하지만 그것을 측정하고 제거하는 도구는 결국 하나의 질문으로 수렴한다: 어느 방향이 정말 중요한가?