MTP
MTP (Multi-Token Prediction)
MTP는 타깃 모델 자체가 여러 토큰을 한 번에 예측하는 능력(native multi-token prediction)을 갖춘 스페큘레이티브 디코딩(Speculative Decoding) 방식이에요. 드래프트 모델(draft model)을 활용하는 방식과 달리, 별도의 드래프트 모델을 준비할 필요가 없어요. "작은 모델이 먼저 몇 개 토큰을 예측하고, 큰 모델이 그 결과를 한 번에 검증"하는 구조에서, 큰 모델 자체가 그 역할을 겸하는 셈이죠.
MTP가 특히 유용한 경우는 이렇습니다.
- 모델이 MTP를 기본적으로 지원할 때
- 최소한의 추가 설정만으로 모델 기반 스페큘레이티브 디코딩을 쓰고 싶을 때
Gemma 4 어시스턴트 모델 (Gemma 4 Assistant Models)
Gemma 4 어시스턴트 체크포인트는 vLLM의 Gemma 4 MTP 경로를 사용해요. 비록 --speculative-config의 model 필드를 통해 전달되기는 하지만, 이들은 일반적인 드래프트 모델이 아니에요. Gemma 4를 어시스턴트 체크포인트와 함께 서빙할 때는 "method": "mtp"를 쓰면 됩니다.
vllm serve google/gemma-4-E2B-it --tensor-parallel-size 1 --max-model-len 8192 --speculative-config '{"method":"mtp","model":"gg-hf-am/gemma-4-E2B-it-assistant","num_speculative_tokens":1}'
E2B, E4B, 12B, 26B-A4B, 31B Gemma 4 IT 어시스턴트 체크포인트가 지원돼요. Tower 기반 변형은 model_type: gemma4_assistant를 사용하고, 인코더가 없는 Gemma 4 Unified 변형(12B)은 model_type: gemma4_unified_assistant를 사용합니다. vLLM은 둘 다 내부적으로 Gemma4MTPModel로 매핑하고, 어시스턴트 레이어를 타깃 모델과 KV cache를 공유하도록 연결해요.
만약 예전 vLLM 릴리스에서 Gemma 4 어시스턴트 체크포인트에 대해 SpeculativeConfig(method='draft_model', ...) 로그가 찍힌다면, 그 릴리스는 어시스턴트를 일반 드래프트 모델로 취급하고 있는 거예요. 멀티모달 Gemma 4 타깃의 경우 초기화 중 실패할 수 있으니, Gemma 4 MTP를 지원하는 버전으로 업그레이드하세요.
오프라인 예제 (Offline Example)
from vllm import LLM, SamplingParams
prompts = ["The future of AI is"]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
llm = LLM(
model="XiaomiMiMo/MiMo-7B-Base",
tensor_parallel_size=1,
speculative_config={
"method": "mtp",
"num_speculative_tokens": 1,
},
)
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
온라인 예제 (Online Example)
vllm serve XiaomiMiMo/MiMo-7B-Base --tensor-parallel-size 1 --speculative-config '{"method":"mtp","num_speculative_tokens":1}'
참고 사항 (Notes)
- MTP는 vLLM에서 MTP를 지원하는 모델 패밀리에 대해서만 동작해요.
num_speculative_tokens가 스페큘레이션 깊이(speculative depth)를 결정해요. 작은 값인1이 시작하기 좋은 기본값이에요.- 모델이 MTP를 지원하지 않는다면 EAGLE 같은 다른 방식이나 드래프트 모델 스페큘레이션을 사용하세요.