Repository navigation
QVAC-25534 fix: restore OpenVINO Windows CI #310
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
yingying0906
wants to merge
12
commits into
master
Choose a base branch
from
QVAC-25534-openvino-windows
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 11 commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
651e0a6
QVAC-25534 fix: restore OpenVINO Windows tests
yingying0906 55d8618
QVAC-25534 fix: restore Windows OpenVINO coverage
yingying0906 9a62298
QVAC-25534 fix: keep MXFP4 MoE experts compressed on OpenVINO CPU
yingying0906 40e0a40
QVAC-25534 fix: limit MXFP4 path change to CPU
yingying0906 6b58c65
QVAC-25534 doc: clarify packed MXFP4 device paths
yingying0906 0153440
QVAC-25534 doc: remove unproven MSVC attribution
yingying0906 21ab94c
QVAC-25534 fix: bound OpenVINO MXFP4 CPU gather buffers
yingying0906 f5516cf
QVAC-25534 fix: chunk real OpenVINO CPU MXFP4 prefill
yingying0906 6aec67c
QVAC-25534 fix: handle changing OpenVINO output shapes
yingying0906 16346ba
QVAC-25534 fix: cap OpenVINO CPU MXFP4 MUL_MAT_ID instead of chunking it
yingying0906 14a3c52
QVAC-25534 fix: revert the OpenVINO CPU MXFP4 MUL_MAT_ID cap
yingying0906 42957c3
QVAC-25534 fix: keep out_ids and split OpenVINO views dynamic
yingying0906 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In fixed-token mode
get_view_input_ov_shapeturns every tracked dynamic dim intotensor->ne[dim], including dims rooted atinp_out_ids, whose graph input is still-1, so views downstream of an in-layer out_ids gather no longer match and get re-sliced.compute_node_dynamic_dimstracksinp_out_idsas a dynamic dim (ggml-decoder.cpp:1641), but its graph input keeps-1(:708).process_view_input_new(openvino/utils.cpp:316-336) has no match for expected-static/actual-dynamic, so these views fall through toprocess_single_view. For decode (n_outputs = 1), the last-layerffn_moe_weightedview (llama-graph.cpp:2273) becomesSlice(axis=2, i, i+1)on an axis of size 1, which is empty for every expert after the first (openvino/utils.cpp:631-655).qwen3moe.cpp:123-125gathersinp_out_idsinside the last layer, before the MoE FFN, andbuild_inp_out_idsalways builds the input. This therefore runs on every decode step, becausefixed_token_count == 1enables fixed mode. gpt-oss gathers after all layers by default and is unaffected.Impact: Qwen3-MoE MXFP4 (and
openai-moewithembeddings_nextn_masked) on the OpenVINO CPU device either loses all but one expert from the last-layer MoE sum or fails on the output shape. Traced from the code; not reproduced on a device.Suggested fix: keep out_ids-derived dims dynamic, as on master. cgraph nodes are topologically ordered, so one pass right after
compute_node_dynamic_dims();in the graph constructor collects every descendant of an out_ids gather:Then change the fixed branch of both view getters to
m_fixed_token_shape && !m_out_ids_derived.count(tensor)(src_tensorat:1463).Every tensor this touches returns to master's
-1, and nothing changes outside fixed mode. It also removes the n_outputs dependence of the compiled views, whichgraph_keydoes not cover. Not compiled against OpenVINO.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, confirmed in the code.
out_idsstays-1but the views became static in fixed mode, so they fall through to re-slicing. Applied your fix in 42957c3. gpt-oss gathers after all layers so my VM runs did not hit it, and I don't have a Qwen3-MoE MXFP4 model to reproduce, so I checked it with gpt-oss regression runs only: 91 MXFP4 op cases, 32-token prefill, 1-token decode and ubatch=16 all pass.