Skip to content

Speculative prefill loses request rendering settings #18184

Open

Description

@xianlubird

Problem

Speculative next-turn prefill builds a SpeculativePrefillRequest from messages alone. It loses the normalized request's tools, tool choice, response format, reasoning effort, and chat-template arguments before calling the formatter.

For DeepSeek V4.1, these fields affect the system prefix. With nvext.agent_hints.speculative_prefill=true, a request with reasoning_effort=low is warmed using the default effort 75 instead of 50. Declared tools disappear from the warmup prompt, and thinking=false is replaced by the formatter's default thinking mode.

Reproduction

On main 2fb3b132fc, compare the pinned dynamo-renderer 8.2.0 DeepSeek V4.1 formatter with the same user/assistant history through the messages-only speculative adapter and through an adapter retaining the request's rendering settings.

  • Low effort renders 75 through the speculative adapter and 50 with the request settings.
  • Tool schemas are absent through the speculative adapter.
  • Thinking-off requests acquire a reasoning-effort system prefix through the speculative adapter.

In CPU renderer probes, retaining tools or thinking=false makes the rendered completed history a prefix of the following user turn. Default thinking also has a separate last-assistant rendering difference, so preserving settings alone does not establish full prefix equality for every mode. These observations do not establish GPU cache-hit or latency improvements.

Expected behavior

Retain the effective rendering settings when constructing a speculative warmup. Cover the path from the streamed response to the warmup token request with a focused CPU regression test. Keep default-mode prefix qualification and measured inference benefits explicit.

Activity

  1. added
    dynamo-llmRelates to dynamo-llm component
    language::rustIssues/PRs that reference Rust code
    bugSomething isn't working
    frontend`python -m dynamo.frontend` and `dynamo-run in=http|text|grpc`
    on Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdynamo-llmRelates to dynamo-llm componentfrontend`python -m dynamo.frontend` and `dynamo-run in=http|text|grpc`language::rustIssues/PRs that reference Rust code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions