Skip to content

[Doc]: Gemma 4 assistant speculative decoding docs do not match actual behavior on vLLM 0.20.1 #42005

Description

@mohyeon

📚 The doc issue

Environment
vLLM version: 0.20.1
Launch method: vllm serve
GPU: single GPU via CUDA_VISIBLE_DEVICES=0
Model under test: gemma-4-E2B-it
Speculative config: assistant model via google/gemma-4-E2B-it-assistant

Relevant docs currently show Gemma 4 assistant-model speculative decoding examples, and the Gemma 4 recipe presents this as a supported usage path.

Reproduction
I tried to run Gemma 4 assistant speculative decoding on vllm==0.20.1 with the following command:

CUDA_VISIBLE_DEVICES=0 vllm serve google/gemma-4-E2B-it
--host 0.0.0.0
--port 8002
--tensor-parallel-size 1
--max-model-len 8192
--speculative-config '{"model": "google/gemma-4-E2B-it-assistant", "num_speculative_tokens": 4}'

The attached runtime log shows the full startup sequence and failure during engine initialization.

Expected
Based on the current Gemma 4 documentation, I expected the documented assistant-model speculative decoding path to start successfully, or at minimum for the documentation to clearly state that this path is not supported on the latest stable PyPI release.

Actual
Engine initialization fails with the following error:

NotImplementedError: Speculative Decoding with draft models or parallel drafting does not support multimodal models yet

The log shows that vLLM resolves the Gemma 4 target model, initializes speculative decoding, and then aborts because the draft-model speculative path rejects multimodal models.

More specifically, the failure occurs after the engine is created with:

speculative_config=SpeculativeConfig(method='draft_model', model='google/gemma-4-E2B-it-assistant', num_spec_tokens=4)

and then terminates in llm_base_proposer.py with the multimodal restriction.

Why this is confusing
This is especially confusing because I am already using speculative decoding successfully in production with the following Qwen3.5-4B configuration:

CUDA_VISIBLE_DEVICES=0 vllm serve Qwen/Qwen3.5-4B
--served-model-name Qwen3.5-4B
--host 0.0.0.0
--port 8002
--tensor-parallel-size 1
--dtype bfloat16
--max-model-len 131072
--block-size 16
--gpu-memory-utilization 0.9
--max-num-seqs 2
--max-num-batched-tokens 4096
--enable-prefix-caching
--prefix-caching-hash-algo sha256
--speculative-config '{"model":"Qwen/Qwen3.5-4B","num_speculative_tokens":2}'

From a user perspective, this makes the current behavior look inconsistent. The issue is not that “speculative decoding is generally unavailable,” but that the documented Gemma 4 assistant path appears available while failing on the latest stable version with a multimodal restriction. The speculative decoding docs also distinguish between draft-model speculation and other speculation paths, which makes this difference important to document clearly.

Request
Please clarify the following:

  1. Is Gemma 4 assistant speculative decoding officially supported on stable vllm==0.20.1?
  2. If not, can the Gemma 4 recipe page explicitly warn that the documented command does not work on the latest stable PyPI release?
  3. If support currently requires nightly or a specific Docker image, can you provide a minimal reproducible example for that exact supported environment?
  4. Can you document clearly how the Gemma 4 assistant speculative path differs from currently working speculative configurations that users may already be running?

At the moment, the main issue is not only support status, but also that the current documentation and actual stable-runtime behavior do not line up clearly enough for users.

Suggest a potential alternative/fix

No response

Before submitting a new issue...

  • Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions