bestKpad 위의 두 방법 — W4A4와 동적-K
3편에서 확립한 bestKpad를 기준선으로 두고, 양자화(W4A4)와 런타임 동적-K가 그 처리량을 넘어서는지 측정했다. W4A4는 11개 모델 중 Llama-3.1-70B에서만 기하평균 +7%였고, 동적-K는 offline best-K에 미달했다(70B 기준 −8%).
3편은 bestKpad(suffix, 균일 K 패딩, FaP cudagraph, corpus별 best-K의 조합)를 기준 구성으로 확립하고, 양자화와 동적-K의 검증을 다음 편 과제로 남겼다. 이번 편은 두 방법을 동일한 하드웨어와 측정 하니스에서 bestKpad와 비교한다. 결론부터 적으면, 두 방법 모두 bestKpad의 처리량을 넘어서지 못했다. W4A4는 등가 게이트를 통과한 한 모델에서만 이득을 냈고, 동적-K는 대체하려던 offline best-K를 재현하지 못했다.
기준선: bestKpad
3편에서 확립한 기준 구성. 11개 모델 × 7개 corpus 중 68셀에서 행 최대.
3편의 결론은 bestKpad가 기존의 모든 설정을 상회한다는 것이었다(70셀 중 68셀에서 행 최대). 구성은 두 요소로 이루어진다. 첫째, draft를 K로 균일 패딩해 FULL cudagraph를 적중시킨다. 둘째, 그 K를 (모델, corpus)별 best-K로 선택한다. 패딩 토큰은 rejection sampler가 기각하므로 출력은 패딩 전과 비트 단위로 동일하다. 따라서 bestKpad는 정확도 저하 없이 처리량만 높인다.
이번 편의 질문은 이 기준선 위에 처리량을 더 높일 수 있는지다. 후보는 두 가지로, 모델 가중치를 4-bit로 양자화하는 W4A4와 offline best-K를 런타임에 추정하는 동적-K다. 두 방법 모두 bestKpad를 기준선으로 두고, 그 처리량을 넘어서는지로 판정한다.
W4A4: 출력을 바꾸는 양자화
bestKpad와 달리 W4A4는 출력 분포를 바꾸므로 등가 게이트가 필요하다.
W4A4는 weight와 activation을 모두 4-bit로 양자화한다(B200이 native로 지원하는 NVFP4 포맷, AWQ+GPTQ 보정). 16-bit(bf16) 대비 메모리 사용이 줄고, 좁은 비트폭이 연산량과 대역폭을 아껴 처리량이 오를 여지가 있다. 다만 이 이득에는 비용이 따른다.
두 방법의 차이는 출력 분포에 있다. bestKpad의 패딩 토큰은 기각되므로 출력 분포가 비트 단위로 동일하다. 반면 W4A4는 가중치를 근사하므로 출력 분포가 바뀐다. 따라서 무조건 적용할 수 없고, 양자화 전후의 출력이 통계적으로 등가인지 검사하는 분포 동등성 게이트를 통과해야 한다. bestKpad가 정확도를 유지하는 반면, W4A4는 정확도 손실 가능성을 감수하고 처리량과 메모리를 얻는 방법이다.
W4A4 결과: 70B만 게이트 통과
11개 모델 중 10개는 적용 불가. 통과한 70B도 mix에서는 하락.
W4A4를 11개 모델에 적용한 결과, 등가 게이트를 통과한 모델은 Llama-3.1-70B 하나였다. 나머지 10개는 두 유형으로 나뉜다.
| W4A4 적용 결과 | 모델 | 사유 |
|---|---|---|
| 통과 (1개) | Llama-3.1-70B | 분포 동등성 게이트 PASS → 측정 가능 |
| 게이트 탈락 (7개) | 7B~72B dense·distill, distill-70B | 출력 분포가 등가가 아님(정확도 손실) |
| 양자화 불가 (3개) | 405B-FP8, DeepSeek-R1(MoE), K-EXAONE(FP8) | 이미 FP8이거나 MoE라 4-bit 양자화 경로 자체 실패 |
W4A4는 모든 모델에 적용되는 방법이 아니다. 7개 모델은 출력 분포가 등가가 아니어서 탈락했고, 3개 모델(이미 FP8이거나 MoE)은 4-bit 양자화 경로 자체가 성립하지 않았다.
게이트를 통과한 70B의 결과는 corpus에 따라 갈린다. bestKpad에 W4A4를 더하면 코드 corpus에서 크게 상승한다(humaneval +16.1%, mbpp +28.7%). 반면 mix에서는 −9.6%로 하락한다. 전 corpus 기하평균은 bestKpad 대비 +7.1%다.
| Llama-3.1-70B | bestKpad | W4A4 | Δ |
|---|---|---|---|
| sharegpt | 6,092 | 6,183 | +1.5% |
| swebench | 7,179 | 7,328 | +2.1% |
| humaneval | 6,218 | 7,216 | +16.1% |
| mbpp | 3,814 | 4,909 | +28.7% |
| wildchat | 6,883 | 7,497 | +8.9% |
| lmsys | 6,060 | 6,418 | +5.9% |
| mix | 14,389 | 13,011 | −9.6% |
| 기하평균 | 기준 | +7.1% |
W4A4는 코드 corpus(humaneval·mbpp)에서 이득이 크다. 출력이 짧고 결정적일수록 4-bit 근사의 처리량 이득이 정확도 손실을 상회하기 때문이다. 반대로 긴 혼합 트래픽(mix)에서는 bestKpad가 더 높다.
W4A4를 단독으로(speculative decoding 없이) 적용하면 vanilla 대비 +55% 수준이지만, bestKpad에 추가하면 +7.1%로 줄어든다. 이미 큰 이득을 낸 구성 위에 다른 방법을 더할 때 나타나는 수확체감이다. bestKpad가 host-bound 병목을 상당 부분 제거했으므로, W4A4가 추가로 얻을 여지가 그만큼 작다.
동적-K: 런타임 K 컨트롤러
bestKpad의 K는 offline sweep으로 고른 best-K다. 런타임 컨트롤러가 이를 재현할 수 있는지 검증한다.
3편에서 K는 (모델, corpus)마다 미리 sweep해 고른 best-K였다. 운영에서 corpus를 사전에 알 수 없는 경우에는 런타임에 K를 조정하는 컨트롤러가 필요하다. 동적-K가 그 방법으로, 후보 K∈{4,6,12} 사이를 채택률 기반(α-EMA)으로 조정하며 매 시점의 K를 선택한다. upstream vLLM이 개발 중인 적응형 speculative decoding(eagle 계열 dynamic proposer)과 같은 계열이다.
검증할 질문은 런타임 컨트롤러가 offline best-K의 처리량을 재현하거나 넘어서는지다. 넘어선다면 사전 sweep이 불필요해진다. 넘어서지 못한다면, 적어도 이 워크로드에서는 offline sweep이 여전히 필요하다는 결론이 된다.
동적-K 결과: offline best-K 미달
11개 모델 중 mix에서 bestKpad를 넘은 모델은 DeepSeek-R1 하나.
동적-K는 출력을 바꾸지 않으므로 게이트 제약 없이 11개 모델 전부에서 측정했다. 결과는 일관된다. mix 기준으로 bestKpad를 넘은 모델은 DeepSeek-R1(+3.1%) 하나이고, 나머지는 모두 미달했다. Llama-3.1-70B는 −32.9%로 가장 큰 하락을 보였다.
원인은 기능 중복에 있다. suffix decoding은 step마다 suffix tree에서 match된 길이만큼만 draft를 생성하므로, 실효 draft 길이가 이미 입력에 따라 변한다. 여기에 별도의 K 컨트롤러를 더하면, offline에서 이미 확정된 최적 K를 런타임 추정으로 뒤따라가는 형태가 되어 추정 지연과 과소추정으로 손실이 발생한다. 특히 이질적 요청이 섞인 mix에서 offline best-K는 큰 K(K12)를 선택하지만, 컨트롤러는 이를 즉시 따라가지 못해 격차가 가장 크다.
DeepSeek-R1이 예외인 것은 이 모델의 특성 때문으로 보인다. suffix가 회귀했던(3편 §05) 이 MoE에서는 offline 단일 best-K보다 런타임 적응이 근소하게 유리했다. 다만 이는 11개 중 하나의 예외이며, 전체 결과는 동적-K(upstream 적응형 계열)가 bestKpad를 넘지 못한다는 것이다.
범위 주의. 동적-K가 절대적으로 느리다는 뜻은 아니다. 고정-K6 같은 단순 기준과 비교하면 동적-K도 +1% 안팎으로 앞선다. 다만 이번 편의 기준선은 그 단순 기준이 아니라 offline best-K인 bestKpad이며, 그 기준선을 넘지는 못했다.
두 방법이 막힌 이유
출력 보존, 출력 변경, 기능 중복.
세 방법을 성격별로 구분하면 결과가 설명된다.
- bestKpad — 출력 보존. 출력 분포를 바꾸지 않고 처리량만 높인다. 전 모델·전 corpus에 적용 가능하므로 기준 구성이 된다.
- W4A4 — 출력 변경. 정확도 손실 가능성을 감수하고 처리량·메모리를 얻는다. 게이트를 통과한 모델(여기서는 70B)에서만, 그리고 corpus에 따라(코드 이득, mix 손해) 효과가 갈린다. 일반적으로 적용되는 방법이 아니라 조건부 이득이다.
- 동적-K — 기능 중복. suffix가 이미 수행하는 런타임 가변 draft를 별도 컨트롤러로 반복하면서 offline best-K에 미달한다. bestKpad의 offline sweep을 대체하지 못한다.
즉 bestKpad를 넘지 못한 이유는 추가 여지가 없어서가 아니라, 남은 두 방법이 각각 적용 조건(게이트)과 기능 중복이라는 제약을 가졌기 때문이다.
적용 기준 (decision tree)
기본 구성은 bestKpad. W4A4는 조건부 적용, 동적-K는 보류.
| 상황 | 권장 | 근거 |
|---|---|---|
| 대부분의 모델·트래픽 | bestKpad | 출력 보존·전 모델 적용, 기본 구성 유지 |
| 70B + 코드 위주 트래픽 | bestKpad + W4A4 | humaneval·mbpp +16~29% (정확도 게이트 통과 후) |
| 70B + 혼합(mix) 트래픽 | bestKpad | mix에선 W4A4가 −9.6% |
| 동적-K(런타임 적응) | 보류 | oracle 못 넘음(−7.9%) — DeepSeek-R1만 예외 |
| FP8·MoE 모델(405B·R1·EXAONE) | bestKpad | W4A4 양자화 불가 → bestKpad가 상한 |
정리하면 bestKpad를 기본 구성으로 두고, 70B에서 코드 트래픽 비중이 높으며 정확도 검증을 통과한 경우에 한해 W4A4를 추가한다. 동적-K는 offline best-K를 넘지 못하므로, corpus를 사전에 알 수 있는 환경에서는 offline sweep을 유지한다.
주의할 해석 오류
이번 편 결과에서 특히 주의할 점.
- W4A4를 모든 모델에 일반화하는 것. 11개 중 70B만 게이트를 통과했다. 7개는 출력 변화로 탈락했고, 3개(FP8·MoE)는 양자화가 불가능했다. “70B에서 +7%”를 다른 모델로 확대 적용해서는 안 된다.
- W4A4를 출력 보존 방법으로 오해하는 것. bestKpad와 달리 W4A4는 출력 분포를 바꾼다. 정확도 검증 없이 적용하면 품질이 저하될 수 있다.
- W4A4의 mix 하락을 간과하는 것. 코드 corpus의 +16~29%만 보고 적용하면 운영 분포(mix)에서 −9.6%가 될 수 있다. 실제 트래픽 분포를 기준으로 판단해야 한다.
- 동적-K가 offline best-K를 넘으리라 기대하는 것. suffix 자체가 런타임 가변 draft를 수행하므로, 별도 K 컨트롤러는 대부분 손해다. 단순 기준보다 낫다는 것과 offline best-K를 넘는다는 것은 다르다.
- 단일 예외를 일반 규칙으로 확대하는 것. 동적-K가 앞선 것은 DeepSeek-R1 mix뿐이다. 이 한 셀로 동적-K가 우수하다고 결론지어서는 안 된다.
이번 편의 결론은 두 방법 모두 bestKpad를 넘지 못한다는 것이다. W4A4는 등가 게이트를 통과한 70B에서, 그중에서도 코드 corpus에서만 이득을 냈고 mix에서는 손해였다. 동적-K는 suffix가 이미 수행하는 런타임 가변 draft와 기능이 겹쳐 offline best-K를 넘지 못했다. 따라서 기본 구성은 bestKpad로 유지하고, W4A4는 조건을 만족하는 경우에만 추가한다. 시리즈 전체의 누적 성과와 적용 절차는 다음 편에서 정리한다.
11개 모델 × 7개 corpus · bestKpad(bf16, suffix+FaP+best-K) / W4A4(Llama-3.1-70B, AWQ+GPTQ NVFP4 4-bit, 등가 게이트 통과) / 동적-K(bf16, 런타임 K 컨트롤러 KS={4,6,12}). 2026-06 측정.