Overlay

vLLM의 설정 변경으로 속도에 박차를 가해 보자!

CUDA를 위한 Draft를 더미로 채우니, 70개 케이스 중 68개 케이스가 뒤집혔다 — vLLM Engineering Notes 3편
vLLM Performance · Engineering Notes — 3편

CUDA를 위한 Draft를 더미로 채우니, 70개 케이스 중 68개 케이스가 뒤집혔다

suffix 위에 한 줄. 가변 draft를 K로 균일 패딩해 FULL cudagraph를 적중시키는 K-pad — 2편이 남긴 +36%를 이번 편에서는 한 번 더 키운다.


2편에서 우리는 설정을 하나도 바꾸지 않았는데 vLLM 기본 설정 측정값이 +36% 빨라졌다는 것을 확인했다. CUDA graph 경로가 PIECEWISE에서 FULL_AND_PIECEWISE로 바뀐 것이다. 이번 편은 PIECEWISE를 강화할 수 있는 무기가 무엇인지 알아본다. draft를 K배로 균일 패딩해 FULL cudagraph를 일부러 적중시켜 캐시 라인을 맞춰 줌으로써, K-pad가 suffix를 강화해 새로운 챔피언이 탄생했다.

01

전편이 남긴 +36%의 정체

설정은 그대로였다. 빨라진 건 그래프 경로였다.

2편의 마지막 장은 +36%의 의문을 남기고 마무리 되었다. 설정을 하나도 바꾸지 않았는데, 두 측정 사이에서 vLLM 기본 설정이 7~8B 모델 기준 +33~36% 빨라졌다. 같은 코드, 같은 모델, 같은 입력

정답은 cudagraph 실행 모드였다. 두 측정의 빌드 경로에서 cudagraph가 잡히는 방식이 갈렸을 가능성. FULL cudagraph는 step 전체를 단일 그래프로 replay해 커널 런치 오버헤드를 걷어내므로, host-bound 구간에서 수십 % 단위의 차이를 만들 수 있다. 그런데 cudagraph 모드는 2편이 전혀 다루지 않은 축이다 — 그래서 이번 포스팅에서 정리 해 본다.

FULL cudagraph가 정말 그만한 효과가 있다면, 그걸 우연이 아니라 의도적으로 증대 시키면 된다.

02

K-pad — draft를 K크기의 데이터와 빈공간을 더미로 채워 FULL을 깨우다

가변 draft가 FULL cudagraph를 막는다. 균일 패딩이 그 문을 연다.

먼저 cudagraph 모드 세 가지다. PIECEWISE는 step을 여러 부분 그래프로 쪼개 캡처한다 — 입력 shape이 바뀌어도 견디지만, 그래프 사이마다 커널 런치 비용이 남는다. FULL은 step 전체를 단일 그래프로 캡처해 한 번에 replay한다 — 런치 오버헤드가 사라져 가장 빠르지만, 텐서 shape이 매 step 고정돼야 한다. vLLM의 FULL_AND_PIECEWISE(이하 FaP)는 둘을 합친 모드다: shape이 고정이면 FULL로 replay하고, 가변이면 PIECEWISE로 떨어진다. 즉 앞에서 본 +36% 레버의 정체는 “FULL이 잡혔느냐”였고, FULL을 쓰려면 shape을 고정해줘야 한다.

cudagraph 모드 — PIECEWISE / FULL / FULL_AND_PIECEWISE(FaP)
Figure 1 · cudagraph 모드. PIECEWISE는 부분 그래프 여러 개(shape 가변 OK, 런치 오버헤드 남음), FULL은 step 전체 단일 그래프(가장 빠름, shape 고정 필요). FaP는 draft shape이 고정이면 FULL, 가변이면 PIECEWISE로 분기한다 — K-pad이 노리는 건 그 FULL 분기다.

Suffix decoding은 step마다 가변 길이의 draft를 뽑는다. Suffix tree에서 match된 만큼만 — 어떤 step은 3토큰, 어떤 step은 9토큰. 그런데 FULL cudagraph는 고정된 텐서 shape을 전제로 replay한다. draft 길이가 매 step 흔들리면 FULL 그래프를 못 쓰고 PIECEWISE 경로로 떨어진다. 즉 suffix를 켜는 순간, 위에서 본 그 +36%짜리 레버를 스스로 반납하고 있던 셈이다.

K-pad의 처방은 한 줄이다. draft를 항상 K개로 균일 패딩해서 shape을 고정한다. 그러면 매 step이 같은 모양이 되어 FaP의 FULL 분기를 적중시킨다. 패딩으로 채운 가짜 토큰은 어떻게 되나 — rejection sampler가 전부 기각한다. 그래서 출력 분포는 패딩하지 않은 suffix와 비트 단위로 등가다(출력 동일성 검증 통과). 공짜로 모양만 맞춰 FULL을 켜는 것이다.

# suffix + uniform K-pad + FULL_AND_PIECEWISE
--speculative-config '{"method":"suffix","num_speculative_tokens":K}'   # K ∈ {4,6,8,12}
export VLLM_SUFFIX_PAD_UNIFORM=1     # draft를 K로 균일 패딩 → FULL cudagraph 적중
# cudagraph_mode=FULL_AND_PIECEWISE (FaP) · gmu 0.85 · max_model_len 16,384
K-pad 동작 다이어그램 — 가변 draft는 PIECEWISE, 균일 K 패딩은 FULL cudagraph 적중
Figure 2 · K-pad의 한 줄. 위: suffix는 step마다 draft 길이가 달라 FULL cudagraph를 못 쓴다(PIECEWISE). 아래: 모든 step을 K(=8)로 균일 패딩하면 shape이 고정되어 FULL이 적중한다. 패딩 토큰(점선)은 어차피 rejection sampler가 기각하므로 출력 분포는 패딩 전과 동일하다.

정리하면 K-pad = suffix + 균일 K 패딩 + FaP + corpus별 best-K의 4단 조합이다. 패딩 없는 suffix를 기준선으로, (a) K를 32 대신 {4,6,8,12}로 낮추고 (b) draft를 그 K로 균일 패딩한 변형. 이하 이 케이스는 bestKpad로 쓴다.

03

전체 결과 — 신임 강자

11개 모델 × 7개 corpus = 77셀. bestKpad가 그중 68개 에서 최대 출력.

아래는 운영 분포를 혼합한 mix corpus에서 전편의 챔피언이었던 suf(OFF)와 bestKpad를 나란히 둔 것이다. 셀 옆 (Kxx)는 그 조합에서 가장 성능이 좋은 best-K. 단위 tok/s.

model (mix)van(OFF)suf(OFF)bestKpadΔ vs suf(OFF)
Qwen2.5-7B4,1697,8037,488 (K6)−4.0%
DS-R1-Distill-Qwen-7B9,05824,45827,664 (K12)+13.1%
Llama-3.1-8B8,85027,85133,531 (K12)+20.4%
Qwen2.5-32B3,0566,5977,274 (K8)+10.3%
DS-R1-Distill-Qwen-32B4,9389,05611,750 (K12)+29.7%
Qwen2.5-72B2,7355,2686,897 (K6)+30.9%
Llama-3.1-70B3,12910,40014,389 (K12)+38.4%
DS-R1-Distill-Llama-70B3,1646,1276,493 (K12)+6.0%
Llama-3.1-405B-FP81,2522,8293,446 (K6)+21.8%
DeepSeek-R1 (671B MoE)1,5387812,224 (K12)+184.8%*
K-EXAONE-236B2,49111,21311,702 (K12)+4.4%

bestKpad가 11개 모델 중 10개에서 mix winner. 예외는 Qwen2.5-7B(−4.0%) 하나뿐 — 측정 세션 간 drift로 보이는 셀이다. *DeepSeek-R1의 Δ는 회귀한 suffix 대비라 과장됨: vanilla 대비로는 +44.6%(1,538→2,224). 전체 77셀로 넓히면 bestKpad는 68셀에서 행 최대, 예외 2셀(Qwen2.5-7B의 lmsys·mix).

핵심은 두 가지다. 첫째, K-pad은 전편의 챔피언 suf(OFF) 위에 dense·distill 전반에서 +10~+38%를 더 얹었다. suffix 자체가 만든 큰 점프(전편) 다음에, 같은 출력으로 한 번 더 점프가 있었던 셈이다. 둘째, 그 추가분의 크기가 모델마다 다른데 — 70B급(+30~38%)에서 가장 크고 소형(+6~13%)에서 작다. host-bound 비중이 큰 구간일수록 FULL cudagraph 성능 증감 효과 더 크다는 앞의 해석과 정확히 맞물린다.

K-pad이 전편 챔피언 위에 더한 mix 증가분 막대 차트
Figure 3 · K-pad이 전편 최고 성능(suf(OFF)) 위에 더한 mix 증가분. 70B급에서 가장 크고 작은 모델에서 효과가 작다 — host-bound 비중과 FULL cudagraph 증대 효과가 비례한다는 앞의 해석과 일치. †DeepSeek-R1만 vanilla 대비(suffix가 회귀한 모델).

비교 caveat. bestKpad와 van·suf 측정은 서로 다른 세션에서 잡혔다 — 같은 머신·같은 환경에 측정 시점이 달라, 작은 차(±몇 %)는 측정 간 drift일 수 있고 큰 차가 best-K-pad의 실효과다. 또 bestKpad는 일부 CPU 코어를 고정(taskset 0-47,56-103)해 측정했으므로 절대값 직접비교엔 주의가 붙는다. Qwen2.5-7B의 두 예외 셀이 정확히 이 drift 후보다.

위는 mix 한 열이다. 11개 모델 × 7개 corpus 전체와 K=4/6/8/12 raw sweep은 맨 끝 부록 전체 표에 있다.

04

best-K는 corpus에 따라 다르다

K∈{4,6,8,12}. mix는 거의 항상 최대 K — 2편의 K>R이 그대로다.

K-pad의 K는 고정 상수가 아니라 (모델, corpus)마다 가장 최대 출력을 가진 K값이다. 그런데 그 선택에 또렷한 결이 있다. 아래는 두 모델의 corpus별 best-K다.

best-Ksharegptwildchatlmsyshumanevalmbppswebenchmix
Llama-3.1-70BK6K6K8K4K6K6K12
DS-R1-Distill-Qwen-7BK8K8K8K12K8K8K12

mix가 항상 최대 K로 수렴한다. 고수용 모델(Llama-8B·K-EXAONE은 전 corpus K12)은 어디서나 큰 K에서 최대 성능을 보인다.

best-K 히트맵 — 모델 × corpus, 색이 진할수록 큰 K
Figure 4 · 모델 × corpus 별 best-K. 색이 진할수록 큰 K. mix 열은 거의 전부 K12, 고수용 모델(Llama-3.1-8B·K-EXAONE)은 전 corpus K12로 짙고, Qwen2.5-72B·DeepSeek-R1처럼 수용도가 낮은 쪽은 대부분 작은 K에서 최대 성능을 보인다.

이건 전편의 부등식 K > R — 평균 채택 토큰 수 K̄가 spec step overhead 배수 R을 넘느냐 — 의 직접적 결과다. best-K는 곧 “그 corpus·모델이 견딜 수 있는 draft 길이”이고, 그게 바로 K̄의 대리값이다. mix가 늘 최대 K를 고르는 것도 전편에서 본 그 패턴 그대로다: 이질적 요청이 섞이면 global suffix tree의 hit 기회가 늘어 K̄가 커진다. 경계를 모델 크기로 외우지 말고 자기 corpus에서 K를 재라던 2편의 교훈이, 이번엔 “그 K를 패딩 폭으로 그대로 쓰라”로 이어진다.

덧붙이면 — 여기서 K는 지정된 K로 수행해서 선정한 best-K다. 컨트롤러가 런타임에 K를 좇게 하는 동적-K(=upstream 류) 접근은 이 성능을 넘지 못한.

05

두 경계가 무너지다

K-pad은 처리량만 끌어올린 게 아니다. K를 32에서 {4,6,8,12}로 낮춘 것 자체가, 2편이 남긴 두 개의 예외를 회피 하였다.

예외 1 — Llama-405B-FP8이 동작 된다

2편에서 405B-FP8 + suffix K=32는 engine init에서 num_gpu_blocks=0 → override=512 후 crash했다. 그 suffix 셀들이 영구 미측정으로 남았고, 처방은 “gmu·K를 낮춘 재시도가 후속 과제”였다. K-pad이 정확히 그 재시도다. K6로 내리니 부팅이 됐고, mix에서 3,446 tok/s(suf(OFF) 대비 +21.8%)를 찍었다. 실행이 안되는 모델이 아니라, K=32라는 상수에서만 동작 되지 않던 모델이었다.

예외 2 — 671B MoE의 회귀가 뒤집힌다

전편에서 DeepSeek-R1(671B MoE)은 suffix가 7개 corpus 전부 net-negative인 유일한 모델이었다 — mix 기준 vanilla 1,538 → suffix 781(−49%). “MoE의 운영 정답은 현재로선 vLLM 기본 설정”이라고 결론 지었다. K-pad은 이 결론을 부정 한다. mix에서 bestKpad가 2,224 tok/s — suffix(781)의 2.8배이자, 회귀의 기준이던 vanilla(1,538)마저 +44.6% 상회한다.

왜 MoE에서 되살아나나. suffix의 가변 draft가 MoE의 expert routing과 겹치며 PIECEWISE 경로에서 특히 많은 성능을 요구 한 것으로 보인다. K로 패딩해 shape을 고정하자 그 비용이 FULL 그래프 안으로 흡수됐다 — 메커니즘 단정은 본 실험 범위 밖이지만, “MoE에 suffix 금지”라던 전편의 운영 가이드는 “MoE엔 패딩 없는 suffix를 금지”로 좁혀진다.

DeepSeek-R1 671B MoE — van/suf/K-pad corpus별 비교, 회귀에서 구제로
Figure 5 · 671B MoE의 반전. 2편에서 전 corpus 회귀했던 suffix(주황)가, K-pad(청록)에서는 vanilla(회색) 위로 올라선다(mix 1,538 → 781 → 2,224). dense에서의 직관이 MoE에 이식되지 않는다던 예외가, 패딩 한 줄로 해결 되었다.
06

K-EXAONE-236B — suffix가 4.4× 성능이 급등하다

같은 ‘MoE’라도 결과는 정반대다.

11번째 모델로 K-EXAONE-236B(A23B, 128 expert top-8, FP8 MoE)를 추가했다. 여기서 suffix는 폭발적이다 — vanilla ~2,500에서 suffix ~11,000으로 4.4×. 671B MoE가 회귀했던 것과 정반대라, “MoE라서 회귀한다”가 아니라 모델별 수용도 차이임을 보여준다. K-pad은 전 corpus K12로 mix에서 11,702(suf(OFF) 대비 +4.4%) 최대 성능을 보인다.

수용도가 높은 모델은 어디서나 큰 K를 견딘다는 패턴 그대로다(히트맵 맨 아래 줄이 전부 K12). 즉 FULL cudagraph 레버는 dense든 MoE든, 모델이 draft를 받아주기만 하면 그대로 박힌다 — 경계는 아키텍처가 아니라 수용도에 있다.

07

실전 적용 — decision tree 갱신판

전편의 트리에서, dense의 default를 한 칸 올린다.

전편의 권장은 “표준 dense는 suf(OFF)”였다. K-pad은 그 자리를 그대로 대체한다 — 같은 출력, 같은 골격에 패딩 한 줄.

모델군권장 lever근거 (mix, vs suf(OFF))
표준 dense 7B~405BbestKpad+10 ~ +38%, 출력 등가
distill 7B/32B/70BbestKpad+6 ~ +30%
405B-FP8bestKpad K6K=32 부팅불가 → K6로 해소, +21.8%
671B MoEbestKpad K12suffix 회귀를 vanilla 위로 반전(+44.6%)
FP8 MoE (EXAONE)bestKpad전 corpus 큰 K 유리
# server boot — K-pad (per-corpus best-K)
--speculative-config '{"method":"suffix","num_speculative_tokens":K}'   # K ∈ {4,6,8,12}
export VLLM_SUFFIX_PAD_UNIFORM=1
# cudagraph FULL_AND_PIECEWISE · gmu 0.85 · max_model_len 16,384

# 공통 env (2편과 동일)
export ARCTIC_INFERENCE_ENABLED=0 VLLM_PLUGINS=""
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
export VLLM_NGRAM_NUM_THREADS_CAP=8 VLLM_NGRAM_DIVIDE_BY_TP=0
08

회피해야 할 함정들

K-pad이 새로 들고 온 주의 사항.

  1. best-K를 단일 상수로 고정하기. K는 (모델, corpus)에 따라 다르다. mix는 거의 K12에서 최대 성능 이지만 단일 corpus 운영은 K4~K8로 갈린다.
  2. oracle best-K를 런타임 수치로 착각하기. 본 표의 K는 고정된 사전 지정의 결과다. 운영에서 K를 자동으로 변경하려면 별도 컨트롤러가 필요하고, 아직 별개 문제다.
  3. 측정 차이를 무시하기. bestKpad와 van·suf는 서로 다른 시점에 측정했고, 일부 CPU 코어를 고정해 측정했다. 작은 차는 drift일 수 있다 — 큰 차만 실효과로 읽어라.
  4. “패딩이 출력을 바꾼다”는 의심. pad 토큰은 rejection sampler가 전부 기각한다. 출력 분포가 패딩 전과 동일함이 검증됐다.
  5. 405B·MoE의 반전을 dense 규칙으로 일반화하기. 예외가 사라진 게 아니라 다른 예외가 여전이 있다. 405B는 여전히 K·gmu 조합에 민감하고, MoE는 수용도가 모델마다 크게 갈린다(671B vs EXAONE).
09

정리하면

세 줄로.

첫째, 전편의 미스터리가 성능 향상의 단초가 됐다. +36%의 원인으로 생각된 cudagraph(PIECEWISE→FULL)를, draft를 K로 균일 패딩해 의도적으로 적중시켰다. pad는 기각되니 출력은 그대로다.

둘째, 새 최고 성능, 77개 조합 중 68개. K-pad은 전편 최고 성능 위에 dense·distill +6~38% 성능 향상을 더 추가하고, 11개 모델 중 10개의 mix에서 최고 성능이 결과가 확인 됐다. 추가분은 host-bound 비중이 큰 70B급에서 가장 깊다.

셋째, 두 예외가 사라 졌다. 405B는 K6로 부팅됐고, 671B MoE의 suffix 회귀는 vanilla 위로 반전됐다. K-EXAONE은 suffix가 4.4× 터지며, 회귀가 ‘MoE라서’가 아니라 모델별 수용도 문제임을 보여줬다.

CLOSING

2편은 “vLLM은 이미 빠르다, 이번에 확인한 건 그 적용 범위”라고 닫았다. 이번 포스팅이 더한 건 한 줄이다 — 다음 편에서는 이 bestKpad를 기준선으로, W4A4 양자화와 동적-K가 그 위를 넘는지 따진다.

부록

K-pad 전체 결과

11개 모델 × 7개 corpus × K∈{4,6,8,12}. 최고 성능 결과 요약이 보여준 mix 한 열의 출처.

§03은 mix corpus 한 열만 보였다. 아래가 bestKpad의 전 corpus 전체 표다. 먼저 셀별 best-K — 각 (모델, corpus)에서 최적의 성능을 보인 K와 그때의 tok/s다. (Kx)가 그 셀의 best-K, mix 열을 음영으로 표시했다.

modelsharegptswebenchhumanevalmbppwildchatlmsysmix
Qwen2.5-7B-Instruct6,287 (K4)6,627 (K4)5,830 (K6)7,016 (K4)6,685 (K4)5,909 (K4)7,487 (K6)
DeepSeek-R1-Distill-Qwen-7B15,984 (K8)18,308 (K8)16,824 (K12)18,175 (K8)16,182 (K8)16,255 (K8)27,664 (K12)
Llama-3.1-8B-Instruct25,371 (K12)27,827 (K12)21,033 (K12)22,128 (K12)25,910 (K12)25,304 (K12)33,530 (K12)
Qwen2.5-32B-Instruct5,933 (K4)5,770 (K4)5,605 (K4)6,045 (K4)5,638 (K6)5,920 (K6)7,273 (K8)
DeepSeek-R1-Distill-Qwen-32B5,808 (K4)6,717 (K6)4,550 (K6)6,252 (K6)6,564 (K6)6,393 (K4)11,750 (K12)
Qwen2.5-72B-Instruct4,123 (K4)3,412 (K4)2,587 (K4)3,443 (K4)3,382 (K4)4,672 (K4)6,896 (K6)
Llama-3.1-70B-Instruct6,104 (K6)6,826 (K6)6,547 (K4)3,629 (K6)6,751 (K6)6,013 (K8)14,565 (K12)
DeepSeek-R1-Distill-Llama-70B4,064 (K6)3,588 (K4)3,877 (K4)3,444 (K4)4,294 (K4)4,268 (K4)6,493 (K12)
Llama-3.1-405B-Instruct-FP82,390 (K4)3,277 (K6)2,778 (K6)2,223 (K6)2,815 (K6)2,769 (K6)3,446 (K6)
DeepSeek-R11,872 (K4)1,979 (K4)1,954 (K4)1,852 (K4)1,933 (K4)1,998 (K4)2,223 (K12)
K-EXAONE-236B11,262 (K12)8,329 (K12)9,681 (K12)11,248 (K12)11,487 (K12)11,654 (K12)11,702 (K12)

모든 셀이 그 (모델, corpus)의 최적 K로 측정된 bestKpad 값. 패턴: chat·짧은 코드는 작은 K, mix는 거의 항상 K12, 고수용 모델(Llama-8B·K-EXAONE)은 전 corpus K12.

아래는 그 best-K를 고르기 전의 전체 K-sweep이다. 모델마다 K=4/6/8/12를 모두 돌린 raw 측정이며, 음영 셀이 해당 (모델, corpus)의 행 최대(=위 표의 best-K)다.

modelKsharegptswebenchhumanevalmbppwildchatlmsysmix
Qwen2.5-7B-Instruct46,2876,6275,1477,0166,6855,9097,360
65,9876,3805,8306,5986,4175,6577,487
85,6936,0215,3546,5366,0215,2947,411
124,6444,3554,5515,8005,3374,9056,977
DeepSeek-R1-Distill-Qwen-7B414,93616,26314,86416,44715,25914,27918,391
615,56118,15215,43717,73915,82016,14922,056
815,98418,30816,46418,17516,18216,25523,711
1215,38418,06516,82417,66915,80515,46627,664
Llama-3.1-8B-Instruct418,49918,89815,89316,92518,45718,39619,316
621,54122,83219,01919,07821,64221,82925,033
823,47326,01120,01620,46323,37523,41128,724
1225,37127,82721,03322,12825,91025,30433,530
Qwen2.5-32B-Instruct45,9335,7705,6056,0455,5465,8607,159
65,4885,4975,4485,7045,6385,9207,148
84,9695,4794,9565,5535,2225,4227,273
124,7434,7954,4865,2054,4614,6306,472
DeepSeek-R1-Distill-Qwen-32B45,8086,2254,2246,2516,4986,3939,609
65,6046,7174,5506,2526,5645,73210,301
85,5976,6234,1075,9746,4255,70310,864
124,9295,7803,6725,7326,1045,11711,750
Qwen2.5-72B-Instruct44,1233,4122,5873,4433,3824,6726,799
63,7513,2082,4862,7983,3674,3356,896
83,3273,1081,9152,9693,0333,7546,499
122,9722,7081,8122,6292,9243,4205,856
Llama-3.1-70B-Instruct45,8646,5226,5473,4486,4255,8467,751
66,1046,8266,2513,6296,7515,9688,346
85,9326,4756,2792,9096,4976,0139,707
125,5506,5185,8962,9266,1315,56214,565
DeepSeek-R1-Distill-Llama-70B43,9813,5883,8773,4444,2944,2684,915
64,0643,4383,7083,2963,8574,2495,002
83,7073,3173,2263,0084,0263,9194,476
123,2462,9432,9702,7583,7343,5676,493
Llama-3.1-405B-Instruct-FP842,3902,9122,7511,8822,5402,5263,228
62,2873,2772,7782,2232,8152,7693,446
82,0202,9582,4201,5322,4362,2102,995
121,8122,8662,4061,2802,2452,1903,006
DeepSeek-R141,8721,9791,9541,8521,9331,9982,192
61,7561,8501,8511,7421,8241,8191,945
81,7131,8501,7751,6581,7581,7732,140
121,4981,6351,4891,4631,5321,5782,223
K-EXAONE-236B46,9076,0706,4327,6536,7016,9197,090
68,8127,2668,4999,9508,7948,3848,711
89,6428,1117,99710,0819,64610,24310,204
1211,2628,3299,68111,24811,48711,65411,702

K가 커질수록 단조 증가하지 않는다 — corpus마다 최적 K가 다르다는 것이 K-pad의 핵심이다(§04). 단위 tok/s.

출처 / drift 주의. 위 두 표는 전체 K-sweep 측정이다. 03 전체결과의 헤드라인의 Llama-3.1-70B mix(14,389)는 W4A4·동적-K를 함께 측정한 별도 실험 값으로, 본 실험 14,565와 약 1.2% 차이가 난다 — 다른 측정 시점 사이의 작은 측정 drift다. 그 외 셀의 ±수 tok/s 차이도 같은 성격이다.

측정 환경 — DGX B200 · NVIDIA B200×8 (sm_100, HBM3e 183 GiB, NVLink5) · Intel Xeon Platinum 8570 ×2 (224 thread, AMX/AVX-512/DSA) · vLLM 1.7.dev (sm_100) · cudagraph FULL_AND_PIECEWISE · gmu 0.85 · max_model_len 16,384 · real-trace prompts, concurrency 32, max_tokens 8,192, streaming.
11개 모델(Qwen2.5 7/32/72B · DS-R1-Distill 7/32/70B · Llama-3.1 8/70/405B-FP8 · DeepSeek-R1 671B · K-EXAONE-236B) × 7개 corpus × bestKpad (2026-06-14 측정, K∈{4,6,8,12}, VLLM_SUFFIX_PAD_UNIFORM=1, taskset 0-47,56-103). K-EXAONE 2026-06-22.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다