모델 효율화의 4축 — Memory, Compute, Latency, Throughput
Efficient ML의 모든 기법을 관통하는 4가지 축의 정의부터 Roofline model, 압축 분류의 직교성, 그리고 알고리즘 압축률과 wall-clock speedup의 괴리까지 추적한다.
- 01 모델 효율화의 4축 — Memory, Compute, Latency, Throughput
- 02 Pruning은 무엇을 제거하는가 — saliency에서 hardware까지
- 03 LLM Quantization은 왜 scale 결정의 문제인가
- 04 Knowledge Distillation은 왜 단순 압축이 아닌가
- 05 모델 압축의 4축은 어떻게 하나의 철학으로 수렴하는가
- 06 FlashAttention은 어떻게 O(N²) 메모리 벽을 넘었나
- 07 LLM을 어떻게 배포할 것인가 — serving 스택의 네 층
“INT8로 양자화하면 4배 빠르다”는 말은 절반만 맞다. 압축률이 곧 속도 향상이라는 등식은 GPU의 메모리 계층과 Tensor Core의 작동 방식을 무시한 단순화다. Efficient ML의 모든 기법 — Pruning, Quantization, Distillation, Kernel Fusion — 은 결국 네 가지 축 위에서 서로를 트레이드오프한다. 그 축을 정확히 정의하지 않으면, 어느 기법이 어디서 의미를 갖는지 판단할 수 없다.
4축의 정의
효율화 논의의 출발점은 네 축의 명확한 구분이다.
Memory 은 단순히 파라미터 수가 아니다.
KV cache는 모델 크기와 무관하게 시퀀스 길이에 선형으로 증가한다. LLaMA-7B (32 layers, )에서 시퀀스 4096, FP16 기준으로 KV cache만 약 2GB다. 파라미터 14GB와 별도로 추가된다.
Compute 는 forward 1 토큰 기준 FLOPs로 정의한다. Transformer에서 ( = 시퀀스 길이, = 파라미터 수).
Latency 은 단일 쿼리의 end-to-end 시간이다. P50이 아닌 P99가 user experience를 결정한다. P99/P50 비율이 5라는 것은 일부 쿼리가 중앙값의 5배 느리다는 뜻이고, GC pause, kernel preemption, memory contention이 그 원인이다.
Throughput 는 단위 시간당 처리량이다. 배치 크기 가 커지면 는 saturation까지 증가하지만, 자체는 단조증가한다. Latency와 Throughput은 같은 hardware에서 정반대 방향으로 당긴다.
Roofline — memory-bound와 compute-bound의 경계
4축의 병목이 어디인지를 정량화하는 도구가 Roofline model이다.
여기서 Arithmetic Intensity는 다음과 같다.
는 peak FLOP/sec, 는 memory bandwidth. 이면 memory-bound, 그 이상이면 compute-bound다.
A100 기준으로 경계는 FLOP/byte다. Standard attention의 AI는 대략 (head dim, 예: 128) — memory-bound 영역이다. FlashAttention이 SRAM tiling으로 effective AI를 높여 compute-bound 영역으로 이동하는 이유가 여기서 나온다.
연산이 memory-bound 구간에 있으면 FLOPs를 줄여도 latency가 그대로다. bytes accessed를 줄여야 — 즉 메모리 접근 패턴을 바꿔야 — 빨라진다. “FLOPs 50% 감소 = 2배 빠름”이라는 가정이 무너지는 지점이다.
압축의 4분류와 직교성
모든 압축 기법은 네 가지로 분류된다. 각각이 다른 차원의 redundancy를 제거한다는 것이 핵심이다.
- Pruning: , — weight의 support를 줄인다.
- Quantization: , — precision을 줄인다.
- Distillation: 더 작은 architecture로 teacher의 함수를 이전한다 — 파라미터 수 자체를 줄인다.
- Low-Rank: , — 행렬의 유효 차원을 줄인다.
Pruning과 Low-Rank는 같은 weight matrix에 적용해도 다른 redundancy를 잡는다. 은 sparse(n개 nonzero)이지만 full-rank다. 은 rank-1이지만 dense다. 두 분류는 서로 다른 manifold에 존재한다.
이 직교성 때문에 조합 시 압축률이 곱해진다. Han 2016의 Deep Compression은 Pruning 9× × Quantization 5.5× × Huffman ≈ 49×를 달성했다.
배치 크기 가 커지면 throughput 는 saturation까지 단조증가하고, latency 는 단조증가한다.
Compute-bound이면 . Memory-bound이면 weight load 비용 가 amortize되어 , throughput as . 따라서 는 saturation, 은 단조증가.
Hardware-Software 궁합 — 알고리즘 압축률 ≠ wall-clock speedup
Unstructured sparsity 90%인데 실제 속도가 1.5배도 안 나오는 일이 흔하다. 이유는 세 가지다.
첫째, Tensor Core는 dense GEMM에 최적화되어 있다. Irregular sparsity는 mma instruction이 활용하지 못한다. A100의 Sparse Tensor Core는 2:4 structured sparsity (4개 연속 weight 중 2개가 0)에서만 정확히 2× TFLOPS를 낸다.
둘째, GPU memory hierarchy의 bandwidth 차이가 크다.
HBM (off-chip) 80 GB 1.55 TB/s 400 ns
L2 cache 40 MB 4 TB/s 100 ns
SMEM/L1 (per SM) 192 KB ~19 TB/s 20 ns
Register ~80 TB/s 1 cycle
FlashAttention이 SMEM tiling으로 HBM access를 줄이는 것, INT8 GPTQ가 weight bandwidth를 4× 줄이는 것 — 모두 이 계층에서 실질적인 효과가 나온다.
셋째, H100으로 갈수록 AI boundary()가 증가해 memory-bound 영역이 넓어진다. 같은 attention이 V100에서는 AI boundary 139, H100에서는 295 — FlashAttention의 가치가 더 커진다.
트레이드오프
4축은 독립적으로 최적화할 수 없다.
| 시나리오 | 우선 축 | 트레이드오프 |
|---|---|---|
| Mobile 추론 | Memory + Latency | Throughput 포기 |
| LLM serving (high QPS) | Throughput + Memory | P99 latency 증가 |
| Autonomous driving | P99 Latency | Throughput, Memory 비용 증가 |
| Edge (배터리) | Energy ∝ Memory bandwidth | 정확도 일부 희생 |
Quantization은 memory bandwidth를 줄이지만 FLOPs는 그대로다 (dequant 후 FP16 연산). “INT8이니까 4배 빠르다”는 주장은 memory-bound regime에서만 성립한다. Compute-bound layer (large GEMM, small )에서는 효과가 미미하다.
Pareto frontier 위에서만 비교가 의미를 갖는다. 모델 A가 accuracy 85%, P99 10ms이고 B가 accuracy 83%, P99 5ms라면, 두 점은 incomparable이다. SLO(latency 상한)가 7ms라면 B만 가능하고, accuracy 하한이 84%라면 A만 가능하다. 단일 숫자 비교는 그 SLO 조건을 숨긴다.
정리
- Memory, Compute, Latency, Throughput은 독립된 축이다. “모델이 작으면 빠르다”는 등식은 이 축들이 동일하다는 가정을 숨기고 있다.
- Roofline model로 memory-bound/compute-bound 경계를 먼저 파악해야 어느 기법이 의미를 갖는지 알 수 있다.
- Pruning, Quantization, Distillation, Low-Rank는 서로 다른 redundancy를 제거하므로 조합 시 압축률이 곱해진다.
- 알고리즘 압축률과 wall-clock speedup의 괴리는 hardware-software 궁합 — structured sparsity, Tensor Core, vendor library 지원 — 에서 온다.
4축과 Roofline은 이후 모든 챕터의 분석 도구다. Pruning이 어느 축을 움직이는지, FlashAttention이 왜 compute-bound로 이동하는지, PagedAttention이 KV cache의 어느 항을 줄이는지 — 전부 이 frame 안에서 읽힌다.