MTP

MTP (Multi-Token Prediction)

MTP는 타깃 모델 자체가 여러 토큰을 한 번에 예측하는 능력(native multi-token prediction)을 갖춘 스페큘레이티브 디코딩(Speculative Decoding) 방식이에요. 드래프트 모델(draft model)을 활용하는 방식과 달리, 별도의 드래프트 모델을 준비할 필요가 없어요. "작은 모델이 먼저 몇 개 토큰을 예측하고, 큰 모델이 그 결과를 한 번에 검증"하는 구조에서, 큰 모델 자체가 그 역할을 겸하는 셈이죠.

MTP가 특히 유용한 경우는 이렇습니다.

  • 모델이 MTP를 기본적으로 지원할 때
  • 최소한의 추가 설정만으로 모델 기반 스페큘레이티브 디코딩을 쓰고 싶을 때

출처: vLLM 공식 문서 — features-speculative_decoding-mtp

Gemma 4 어시스턴트 모델 (Gemma 4 Assistant Models)

Gemma 4 어시스턴트 체크포인트는 vLLM의 Gemma 4 MTP 경로를 사용해요. 비록 --speculative-configmodel 필드를 통해 전달되기는 하지만, 이들은 일반적인 드래프트 모델이 아니에요. 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 같은 다른 방식이나 드래프트 모델 스페큘레이션을 사용하세요.

더 알아보기 (Learn more)