Skip to content

ci(winml): standalone MSIX packaging workflow, ROCm runtime 7.2.2609.47 (do not merge) - #579

Draft
zz002 wants to merge 11 commits into
mainfrom
ci/winml-msix-build-v2
Draft

ci(winml): standalone MSIX packaging workflow, ROCm runtime 7.2.2609.47 (do not merge)#579
zz002 wants to merge 11 commits into
mainfrom
ci/winml-msix-build-v2

Conversation

@zz002

@zz002 zz002 commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

Standalone CI workflow that packages the AMD GPU EP into a signed Windows ML MSIX, pulling the pre-built gpu-test-package artifact from the latest successful windows-build.yml run on main/release. Build-only: uploads the .msix (plus gpu-test-package / hipep-wheels / winml-ep-validate release zips) as artifacts. Compared to #541, the vendored ROCm runtime DLLs are updated to 7.2.2609.47.

Not for merge — this branch exists to validate the MSIX packaging on CI. It vendors the ROCm runtime and packaging tool zips under .github/winml-msix/ via Git LFS, which is not something we want on main.

Why

Recreated instead of pushing onto #541 so the ROCm runtime bump lands as a reviewable delta on top of a known-green packaging run, and so the older runtime remains reachable if the new DLLs regress the MSIX validation.

What

  1. Workflow .github/workflows/winml-msix-build.yml (job on [windows, gfx1151]): download gpu-test-package via dawidd6/action-download-artifact into a dedicated dir, extract the vendored ROCm runtime + MSIX packaging tool, stage EP chain + ROCm DLLs, write the AMD GPU EP manifest, then pack + self-sign. Also produces gpu-test-package / hipep-wheels / winml-ep-validate release zips as artifacts.
  2. Vendored zips tracked via Git LFS (.gitattributes + .github/winml-msix/rocm_7.11_bin.zip, oga_winml_app.zip, msix_packaging_script.zip); checkout uses lfs: true. A license header is added to satisfy the licenseheaders pre-commit hook.
  3. ROCm runtime bump in .github/winml-msix/rocm_7.11_bin.zip: amdhip64_7.dll, amd_comgr0702.dll, hiprtc0702.dll and hiprtc-builtins0702.dll replaced with the 7.2.2609.47 build.
  4. Intentional non-changes: the other 253 zip entries (hipblaslt / rocblas / MIOpen libraries and kernel caches) are byte-identical, and hipdnn_backend.dll still comes from the CI gpu-test-package artifact rather than the vendored zip.

Test plan

  • all 257 entries of the rebuilt rocm_7.11_bin.zip decompress cleanly; the 4 replaced DLLs match their source files by SHA-256.
  • pre-commit run --all-files passes (including check-added-large-files, i.e. the zips stay LFS pointers).
  • job green on [windows, gfx1151]; .msix + release-zip artifacts produced.
  • LFS-vendored zips resolve to real files at checkout.

Notes for reviewers

Supersedes #541 (itself a recreation of #425 after the repo history cleanup). Not intended to merge.

Checklist

  • Incremental. This PR is either standalone, or a planned step in a documented series.
  • AI policy. No substantial AI-generated code; the workflow is carried over from ci(winml): standalone MSIX packaging workflow (do not merge) #541 and the diff on top of it is a vendored binary refresh.
  • No good first issue automation.
  • Reviews resolved.
  • CODEOWNERS routing.

@github-actions

Copy link
Copy Markdown

Thanks for opening a PR!

This project follows LLVM's incremental-development and AI-tool-use
guidance. See CONTRIBUTING.md
for the project workflow.

Before requesting review, please check that:

  1. The change is focused. Substantial work links the relevant issue
    or design discussion.
  2. The PR documents relevant test results and updates affected
    documentation.
  3. If AI tools provided substantial assistance, the description
    explains what was assisted and how it was validated, and commit
    trailers identify the tool. The contributor has reviewed and
    understands the result.

Reviewers are assigned through
CODEOWNERS where ownership
is configured.

@zz002
zz002 force-pushed the ci/winml-msix-build-v2 branch from a54b208 to 9e932bd Compare July 28, 2026 10:09
zz002 and others added 11 commits July 28, 2026 05:11
Standalone workflow that packages the AMD GPU EP into a signed Windows ML MSIX. It pulls the gpu-test-package artifact from the latest successful windows-build.yml run on main/release, merges a vendored ROCm 7.11 runtime, and runs the MSIX packaging tool (build-only; uploads the .msix). The ROCm runtime is vendored as a 74MB zip under .github/winml-msix/ (committed with --no-verify to bypass check-added-large-files); this branch is for CI validation and is not intended to merge.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…actory download

The CI runner cannot resolve mkmartifactory.amd.com, so the packaging tool (27.5MB, ships its own makeappx/signtool) is vendored under .github/winml-msix/ and extracted locally as the first build step (fail fast). Removes the TOOL_URL Artifactory dependency.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Convert the vendored ROCm runtime and MSIX packaging tool zips to Git LFS (pointers) so they no longer trip check-added-large-files and don't bloat the repo blob store.
Without lfs:true the checkout leaves the LFS-tracked zips as pointer text, so Expand-Archive fails with 'End of Central Directory record could not be found'.
…lidate release zips

Extend the MSIX workflow to emit three dated release zips from CI-downloadable artifacts + the built MSIX + vendored assets (no NAS, no 25GB models): winml-ep-validate (msix+cert+vendored oga_winml_app), gpu-test-package (artifact + vendored ROCm bin overlay), and hipep-wheels (hip-python-package wheels + ROCm deps resolved from onnxruntime_ep_hip wheel + example scripts).
pip download emits a cache-deserialization WARNING to stderr which, under ErrorActionPreference=Stop, terminated the step. Switch the step to Continue + PSNativeCommandUseErrorActionPreference=false and gate on \0.
Replace amdhip64_7.dll, amd_comgr0702.dll, hiprtc0702.dll and
hiprtc-builtins0702.dll inside the vendored rocm_7.11_bin.zip with the
7.2.2609.47 build. The remaining 253 zip entries (hipblaslt / rocblas /
MIOpen libraries and kernel caches) are byte-identical.
@github-actions

Copy link
Copy Markdown

L2 Accuracy Results (EP vs CPU)

Model Combined L2 Total Elems Skipped NaN/Inf
conv_test_hybrid 4.8668E-07 64 0
GroupQueryAttention_seq256 25.2366 2621440 0
MatMulNBits_o_seq128 259.906 368640 0
QMoE_seq128 34.957 368640 0

Threshold: 0.01 | Run: 3325 - Commit: a5b61f7

@github-actions

Copy link
Copy Markdown

MorphiZen EP Performance Results

Model QPS Session (s) 1st Infer (ms) CPU% Mem (MB)
full_model_seq128 7.53 6.49 359 3 1242
GroupQueryAttention_seq128 4520.89 1.68755 11 6 310
matmul_down_seq128 524.54 2.45 73 3 352

EPContext Export Performance

Model QPS Session (s) 1st Infer (ms) CPU% Mem (MB)
full_model_seq128 7.55 45.83 360 3 15590

EPContext Import Performance

Model QPS Session (s) 1st Infer (ms) CPU% Mem (MB)
full_model_seq128 7.54 9.88 359 3 15760

OGA Benchmark Results

Model Warmup Reps Prompt Len Gen Tokens TTFT (ms) TPS Peak Mem (GB) GPU Mem (GB)
gpt-oss-20b-webgpu-int4-rtn-block-32 1 5 128 128 168.1 77.0 1.33 13.54
Llama-3.1-8B-awq-g128-int4-asym-fp16-onnx-dml 1 5 128 128 188.1 40.6 1.22 6.43

OGA Wheel Smoke (Python benchmark_e2e.py)

Model TTFT (ms) TPS
Llama-3.1-8B-awq-g128-int4-asym-fp16-onnx-dml 194 39.4

Run: 3325 - Commit: a5b61f7

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