MTP

MTP (Multi-Token Prediction, 다중 토큰 예측)

MTP는 타깃 모델 자체가 네이티브 다중 토큰 예측(multi-token prediction) 능력을 내장한 추측 디코딩 방법이에요. 드래프트 모델 기반 방법과 달리 별도의 드래프트 모델을 제공할 필요가 없어요. 모델이 MTP를 네이티브 지원할 때, 그리고 최소한의 추가 설정으로 모델 기반 추측 디코딩을 원할 때 유용해요.

출처: 문서

본문

Gemma 4 Assistant 모델

Gemma 4 assistant 체크포인트는 vLLM의 Gemma 4 MTP 경로를 사용해요. --speculative-configmodel 필드로 전달되지만 이들은 generic 드래프트 모델이 아니에요.

Gemma 4를 assistant 체크포인트와 함께 서빙할 때는 "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 assistant 체크포인트가 지원돼요. Tower 기반 변형은 model_type: gemma4_assistant를 사용하고, encoder-free Gemma 4 Unified 변형(12B)은 model_type: gemma4_unified_assistant를 사용해요. vLLM은 둘 다 내부적으로 Gemma4MTPModel에 매핑하고, assistant 레이어가 타깃 모델과 KV 캐시를 공유하도록 연결해요.

만약 이전 vLLM 릴리스가 Gemma 4 assistant 체크포인트에 대해 SpeculativeConfig(method='draft_model', ...)를 로그하면, 그 릴리스는 assistant를 generic 드래프트 모델로 취급하는 것이며 멀티모달 Gemma 4 타깃에서 초기화 중 실패할 수 있어요. Gemma 4 MTP 지원이 있는 버전으로 업그레이드하세요.

오프라인 예시

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}")

온라인 예시

vllm serve XiaomiMiMo/MiMo-7B-Base \
    --tensor-parallel-size 1 \
    --speculative-config '{"method":"mtp","num_speculative_tokens":1}'

참고 사항

  • MTP는 vLLM에서 MTP를 지원하는 모델 계열에서만 동작해요.
  • num_speculative_tokens는 추측 깊이를 제어해요. 1 같은 작은 값이 시작하기 좋은 기본값이에요.
  • 모델이 MTP를 지원하지 않으면 EAGLE이나 드래프트 모델 추측 같은 다른 방법을 사용하세요.

더 알아보기 (Learn more)