Skip to content

Fix: mrope_position_delta missing in PD disaggregation decode mode for qwen-vl series#8219

Closed
LeoGoTi wants to merge 4 commits intosgl-project:mainfrom
LeoGoTi:fix_mrope_position_delta
Closed

Fix: mrope_position_delta missing in PD disaggregation decode mode for qwen-vl series#8219
LeoGoTi wants to merge 4 commits intosgl-project:mainfrom
LeoGoTi:fix_mrope_position_delta

Conversation

@LeoGoTi
Copy link
Copy Markdown

@LeoGoTi LeoGoTi commented Jul 21, 2025

This PR has been closed.
Check for this PR as it's handling this issue.

Motivation

This PR aims to fix a bug where mrope_position_delta is missing on PD-disaggregation setup, for decode mode only.

In brief:

  • Qwen-vl series models implement the mrope algorithm stage one for mrope_positions and mrope_position_delta.
  • mrope_position_delta is necessary for generating subsequent positions during the decode stage, and is not accessible when PD disaggregation is deployed.

Modifications

  • Add fields named decode_mrope_position_delta to the Req and ModelWorkerBatch dataclasses.
  • On _compute_mrope_positions calculation, if the delta values are available from the decode_mrope_position_delta field, we use it directly.
  • Add tensor allocation named mrope_position_delta in MetaDataBuffers, serving as a kv-meta part being transferred from prefill to decode. This is only valid when we register MetaDataBuffers using is_mrope_enabled=True.

Checklist

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @LeoGoTi, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request addresses a critical bug affecting Qwen-VL series models when operating in Paged-Disaggregation (PD) decode mode. The core issue was the unavailability of mrope_position_delta, a value essential for correctly computing subsequent token positions during the decode phase. The changes introduce the necessary plumbing to ensure this delta value is properly transferred from the prefill stage to the decode stage via the MetaDataBuffers and made accessible throughout the request and batch processing pipeline.

Highlights

  • Data Structure Enhancement: Introduced decode_mrope_position_delta field to Req, ModelWorkerBatch, and ForwardBatch dataclasses to carry the necessary position delta information for Qwen-VL models in decode mode.
  • Metadata Buffer Integration: Modified the MetaDataBuffers class to conditionally allocate, store, and retrieve the mrope_position_delta tensor, enabling its transfer from prefill to decode stages when mROPE is enabled.
  • Positional Calculation Update: Updated the _compute_mrope_positions function to utilize the newly available decode_mrope_position_delta for accurate positional calculations during the decode phase, specifically for Paged-Disaggregation (PD) setups, and added a fallback for warmup scenarios.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request fixes an issue where mrope_position_delta is missing in PD disaggregation decode mode for qwen-vl series models. The changes involve adding fields to dataclasses and using the delta values directly when available. A critical bug was identified in the m-rope position calculation, along with maintainability issues.

LeoGoTi and others added 3 commits July 21, 2025 17:45
@LeoGoTi LeoGoTi force-pushed the fix_mrope_position_delta branch from eb1bd8b to a060924 Compare July 21, 2025 09:45
@LeoGoTi LeoGoTi closed this Jul 22, 2025
@LeoGoTi
Copy link
Copy Markdown
Author

LeoGoTi commented Jul 22, 2025

Closed this PR as another active PR is doing this more elegantly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant