Fix packed sequence length handling for Megatron-Core 0.16.0/0.16.1 - #175
Merged
Conversation
tastelikefeet
approved these changes
Aug 29, 2026
hjh0119
added a commit
to hjh0119/mcore-bridge
that referenced
this pull request
Sep 3, 2026
main landed the same feature independently in modelscope#174, so qwen4_exp.py / ple.py / qsa_indexer.py / hyper_connection_gated.py came out as add/add conflicts. Resolved to this branch's versions -- they are supersets: select_mask -> selection_as_mask (+ selection_as_token_indices, select_token_indices_thd for the sparse kernel) _set_ple_ngram_embedding -> fill_table_from_hf / export_table_to_hf (offload-aware, and reduces the offload flag across pp before gating pp collectives) _warn_qsa_fallback_once -> dropped with the fallback path itself Kept main's ple_seed instead of this branch's hardcoded _PLE_SEED: the parser derives it from text_config.seed (defaulting to 1234), which stays configurable and still avoids the vLLM config-pollution issue. Wired it through Qwen4ExpTextNGramEmbedding with the same fail-loud treatment as eos_token_id / split_ngram_parts. Also picks up modelscope#175 (packed sequence length handling for mcore 0.16.0/0.16.1).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
In Megatron-Core 0.16.0/0.16.1,
PackedSeqParams.max_seqlen_qis defined as a Pythonint. The Qwen3.5 and Qwen3-Next THD packed-sequence paths called.item()on this value, causing:AttributeError: 'int' object has no attribute 'item'Changes
Convert
max_seqlen_qwithint(...)before allocating hidden states and attention masks. This supports both Python integers and scalar tensors without changing numerical computation.Validation
intand scalar Tensor conversion cases passed.GPU Compatibility
This change is device-agnostic and remains compatible with GPU training.
max_seqlen_qis sequence-length metadata used only to construct tensor shapes; converting it withint(...)works with both Python integers and single-element CPU/CUDA/NPU tensors.Experiments