Bump Microsoft.ML.OnnxRuntime.Gpu from 1.24.4 to 1.28.0
Updated Microsoft.ML.OnnxRuntime.Gpu from 1.24.4 to 1.28.0.
Release notes
Sourced from Microsoft.ML.OnnxRuntime.Gpu's releases.
1.28.0
Announcements & Breaking Changes
- Upgraded to ONNX 1.22.0 and protobuf 6.33.5 (#28754, #29606, #28967). Graph optimizer opset version checks were updated accordingly (#28966).
- cuDNN and cuFFT are now optional at runtime for the CUDA EP, and
nvrtcis no longer linked, which significantly reduces the required CUDA redistributable footprint (#29252, #29808, #29705, #29620). - An experimental C/C++ API surface was introduced.
OrtModelPackageApinow lives in the experimental C API and may change in future releases (#28746, #29142, #28990). - Deprecated / removed:
- SkipLayerNorm strict mode is deprecated (#29388).
- The TensorRT fused causal attention kernels were removed from the CUDA EP (#29143).
- The dynamic WGSL generator (duktape/Node) path was removed in favor of the Python
wgsl-genimplementation (#29141, #28355). CUDA_QUANT_PREPROCESSis off by default (#29687).
- NPM packages are now published from the CUDA 13 pipeline (#28773).
- The CUDA 12.8 package architecture list was refreshed for this release (#29711).
Security Fixes
Memory safety & input validation
- Hardened the ORT FlatBuffer model loader against malformed buffers, and removed now-redundant table offset validation (#28186, #29068)
- Fixed type confusion in raw-pointer
bind_inputcausing an out-of-bounds write (#28839) - Fixed out-of-bounds pointer in
TensorAtfor sub-byte packed types (#28973) - Fixed arbitrary memory read, out-of-bounds dereference, and other OOB accesses in kernels (#28991, #29011, #29012, #29014)
- Validated
Col2Iminputs to prevent heap over-read (#28706) - Hardened
CropAndResizeagainst malformedcrop_sizetensors (#28766) - Validated
BeamSearchvocab_sizeagainst logits width (#28774) - Fixed bounds in
WhisperDecoderSubgraph::CreateInitialFeeds(#29239) - Validated
SparseAttentionCSR indices/key lengths and rejected zero-dimensionblock_row_indices(#29015, #29242) - Clamped derived sequence lengths and KV-cache index in CUDA GroupQueryAttention, and fixed a CPU GQA out-of-bounds read in the past-KV buffer (#29240, #29447)
- Clamped 1D attention
mask_indexto valid bounds (#29449) - Validated
MaxpoolWithMaskkernel rank against input spatial rank (#29253) - Rejected CUDA BERT
EmbedLayerNorm/SkipLayerNormshapes exceeding 32-bit output indexing (#29264) - Fixed the optional-output guard in
DecoderAttention/MultiHeadAttentionshape inference and negative-axis handling inExpandDimsshape inference (#29268, #29448) - Fixed
TreeEnsembletarget id validation and added input validation toLinearClassifier(#29293, #29060) - Fixed
DynamicQuantizeLSTMzero-point/scale validation typos (#29462) - Handled non-trivially-copyable types in
Loop/Scanoutput concatenation (#29397) - Normalized bool tensor
raw_datato{0, 1}on unpack (#29238) - Addressed hardening gaps in
Resize,PadFusion, and LoRA handling (#28779, #28780, #28801) - Fixed unbounded lifetime on
WithOutputTensorin the Rust bindings (#29251)
Integer overflow & allocation size
- Guarded
MlasConvPrepareworking-buffer products andConvTransposepad computation with SafeInt (#29444, #29446) - Fixed signed-int overflow in
SamplingState::Initthat could cause a heap buffer overflow (#29443) - Hardened QMoE against integer overflow and partial K tiles (#29067)
- Validated
B/scales/zero-points shape inMatMulNBits::PrePack(#29445) - Pre-checked
ConstantOfShapeoutput size against the input initializer before constant folding (#28751) - Fixed integer overflow in RKNPU implicit bias allocation (#29249)
- Fixed WebGPU out-of-bounds reads in
Pad(int64/int32 truncation),Slice, andGatherBlockQuantized(#28721, #28704, #28718)
Supply chain & tooling
... (truncated)
1.27.1
This is a patch release on top of v1.27.0, containing targeted bug fixes, a CUDA QMoE decode-path optimization, and CI/build infrastructure fixes.
Bug Fixes
- [MLAS] Fixed an
igemmregression in the KleidiAI path (#28571) - Fixed a QMoE CPU livelock by eliminating nested intra-op parallelism (#29081)
- Fixed a regression in graph-capture session initialization that rejected an empty graph (#29457)
- Fixed CustomOp forward compatibility by capping the version instead of rejecting it (#29574)
Performance
NVIDIA CUDA EP
- Added a QMoE GEMV fast path for batch-1 decode (#29038)
CI & Build Infrastructure
- Fixed an incorrect identity for
azcopy(#29274) - Fixed a
brew install applesimutilsfailure by trusting the wix/brew tap (#29450) - Upgraded to Xcode 26 (#29468)
- Stopped echoing the command when setting a VSO variable in
mac-cpu-packing-jobs.yml(#29575) - Fixed the web e2e (npm/vite) and Python DML CI pipelines (#29609)
Contributors
Thanks to our 8 contributors for this release!
@tianleiwu, @chilo-ms, @edgchen1, @adrastogi, @damdoo01-arm, @JonathanC-ARM, @martin-klacer-arm, @sanaa-hamel-microsoft
Full Changelog: v1.27.0...v1.27.1
1.27.0
n.b. This release is targeting ONNX 1.21. ONNX 1.22 will be supported in ORT 1.28.
n.b. This changelog was generated via LLM. Only the contributor list has been verified. As always, only trust the commit history.
Announcements & Breaking Changes
- CUDA 12 package files are now explicitly named as such.
- CUDA 12 packages are deprecated, please move to CUDA 13 ASAP.
Security Fixes
- Fixed out-of-bounds read in
SoftmaxCrossEntropyLossvia label bounds validation (#28004) - Hardened
OneHotinput validation and output-size computation (#28014) - Added SafeInt overflow protection in
Expandand capped constant-folding output sizes (#28055) - Bounded total output allocation size in
Tilekernel (#28070) - Added mask/input shape consistency checks in
MaxpoolWithMask::Compute(#28223) - Fixed
BitShiftUB for shift amounts greater than or equal to bit width (#28272) - Validated sequence bounds in GQA (
seqlens_kvscos_cache) (#28277) - Validated conv bias shape in
WordConvEmbeddingto prevent OOB reads (#28279) - Fixed int32 overflow in CUDA Cast and UnaryElementWise kernels for very large tensors (#28386)
- Fixed out-of-bounds read in
CropBasescale handling (#28399) - Fixed rank-underflow bug in Inverse kernel trailing-dimension indexing (#28400)
- Added sparse tensor external file path validation and additional external-path hardening (#28408, #28709, #28725)
- Switched remaining
torch.load()calls toweights_only=True(#28421) - Added CPU cache-indirection beam-index validation (#28486)
- Added additional overflow/bounds checks and test coverage in runtime buffers (#28713, #28747)
New Features
Execution Provider Plugin API
- Added zero-copy I/O for plugin EPs with HOST_ACCESSIBLE memory (#28037)
- Added
OrtEp::OnSessionInitializationEnd()callback (#28319) - Added plugin EP session-options getters (#28377)
- Added CUDA Plugin EP provider options for streams and external allocators (#28603)
Core APIs & Runtime
- Added support for ONNX overloaded functions (IR v10+) (#28275)
- Added FLOAT8E8M0 datatype support in ONNX Runtime (#28381)
- Added CPU Cast support for FLOAT8E8M0 (#28435)
- Added
kOrtEpDevice_EpMetadataKey_OSDriverVersionexample and docs (#28282)
Quantization & Training Tooling
- Added calibration cache support to
quantize_static(#28221) - Added
ActivationRestrictedAsymmetricquantization option (#28237)
... (truncated)
1.26.0
n.b. The following was generated via LLM from Git history. Only the contributor list has been verified.
ONNX Runtime Release 1.26.0
Announcement - Breaking Changes
- Support for CUDA 12 will be removed in 1.27.0.
- CUDA 13 will continue to be published as
onnxruntime-<os>-<arch>-gpu_cuda13-<version>.<ext>
- CUDA 13 will continue to be published as
- CUDA runtime will be moving soon to a dedicated Execution Provider (EP) instead of a published package from ORT core.
Highlights
- Added optional memory mapping for
.ortmodel loads (#28164). - Added RISC-V Vector (RVV) support for CPU EP (#28261).
- OpenVINO EP upgraded for 1.26.0 development release (#28297).
- WebGPU gained GridSample support (#28264) and Split-K improvements (#28151).
- CUDA plugin EP gained graph support (#28002), profiling API (#28216).
Security and Reliability Hardening
- Replaced unrestricted Python
setattrconfiguration with an allowlist (#28083). - Hardened multiple OOB and overflow scenarios across ML and core ops:
- Attention mask index OOB write (#27789).
- MaxPoolGrad indices bounds validation (#27903).
- SVM and TreeEnsemble bounds/security fixes (#27950, #27951, #27952, #27989).
- RNN sequence_lens OOB read and integer overflow handling (#28052, #28003).
- GroupQueryAttention seqlens_k bounds validation and compatibility follow-up (#28031, #28259).
- MatMulBnb4 and ML coefficient SafeInt checks (#27995, #28001).
- CUDA Gather int32 overflow fix (#28108).
- GridSample float->int64 cast hardening for NaN/Inf/out-of-range coords (#28302).
- Fixed session logger use-after-free during EP teardown under verbose logging (#28274).
CUDA, Attention, and MLAS
- Filled CUDA opset/operator gaps and extended support:
- Attention/GQA improvements:
- Fixed ONNX Attention min-bias alignment crash on SM<80 and masked-batch NaN behavior (#27831).
- Added FP32 QK accumulation path for unfused GQA attention (#28198).
- Added CUDART_VERSION reduction compatibility in GQA attention (#28296).
- Fixed CUDA 13 build error in GQA unfused attention (#28309).
- PagedAttention fallback for SM<80 fp16 (#28200).
- MLAS updates:
WebGPU, WebNN, and JavaScript
... (truncated)
1.25.1
n.b. This changelog is LLM generated. Only the contributor listing has been verified.
ONNX Runtime Release 1.25.1
📢 Announcements & Breaking Changes
ONNX Op Updates
- Enhanced ONNX operator support with new opset versions: Reshape (opset 25), Transpose (opset 24) (#27752)
✨ New Features
📊 New ONNX Ops & Model Support
- LinearAttention and CausalConvState operators for Qwen3.5 model support (#27907)
- RotaryEmbedding (RotEMB) and RMSNorm operators added (#27752)
- Linear Attention signature support (#27842)
🌐 Web & JavaScript
WebGPU EP
- Qwen3.5 model support on WebGPU execution provider (#27996)
- QMoE 1-token decode path optimization — fused operations to reduce GPU dispatches for improved performance (#27998)
🐛 Bug Fixes
Core Runtime Fixes
- Improved filesystem error messages during Linux device discovery for better debugging experience (#27289)
- Fixed missing include for
SetRawDataInTensorProtoin NVIDIA TensorRT RTX tests (#28065)
🙏 Contributors
Thanks to our 7 contributors for this release:
@guschmue, @sanaa-hamel-microsoft, @apsonawane, @eserscor, @ishwar-raut1, @qjia7, @theHamsta
Full Changelog: https://github.com/microsoft/onnxruntime/compare/v1.25.0...v1.25.1
1.25.0
📢 Announcements & Breaking Changes
Build & Platform
- C++20 is now required to build ONNX Runtime from source. Minimum toolchains: MSVC 19.29+, GCC 10+, Clang 10+. Users of prebuilt packages are unaffected. (#27178)
- CUDA minimum version raised to 12.0 — CUDA 11.x is no longer supported. Users pinned to CUDA 11.x should stay on ORT 1.24.x or upgrade their CUDA toolkit/driver. (#27570)
- ONNX upgraded to 1.21.0 (#27601)
- sympy is now an optional dependency for Python builds. (#27200)
Execution Provider Changes
- ArmNN EP has been removed. Users should remove any
--use_armnnbuild flags and migrate to the MLAS/KleidiAI-backed CPU EP or QNN EP for Qualcomm hardware. (#27447)
API Version
- ORT_API_VERSION updated to 25. (#27280)
🔒 Security Fixes
- Fixed potential integer truncation leading to heap out-of-bounds read/write (#27544)
- Addressed Pad Reflect vulnerability (#27652)
- Security fix for transpose optimizer (#27555)
- Upgraded minimatch 3.1.2 → 3.1.4 for CVE-2026-27904 (#27667)
- Hardened shell command handling for constant strings (#27840)
- Added validation of
onnx::TensorProtodata size before allocation (#27547) - Cleaned up external data path validation (#27539)
- Fixed misaligned address reads for tensor attributes from raw data buffers (#27312)
- Fixed CPU Attention overflow issue (#27822)
- Fixed CPU LRN integer overflow issues (#27886)
- Additional input validation hardening:
- Tile kernel dim overflow (#27566)
- Out-of-bounds read in cross entropy (#27568)
- TreeEnsembleClassifier attributes (#27571)
- AffineGrid (#27572)
- EmbedLayerNorm position_ids (#27573)
- RotaryEmbedding position_ids (#27597)
- RoiAlign batch_indices (#27603)
- MaxUnpool indices (#27432)
- QMoECPU swiglu OOB (#27748)
- SVMClassifier initializer (#27699)
- Col2Im SafeInt (#27625)
✨ New Features
🔌 Execution Provider Plugin API & CUDA Plugin EP
... (truncated)
Commits viewable in compare view.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Summary by cubic
Upgrade to Microsoft.ML.OnnxRuntime.Gpu 1.28.0 and align related runtime packages. This brings ONNX 1.22 support, security fixes, and reduces CUDA redistributable requirements.
-
Dependencies
- Bumped central
OnnxRuntimeVersionto 1.28.0 and updatedMicrosoft.ML.OnnxRuntime.Managedto 1.28.0. - Updated
Microsoft.ML.OnnxRuntime.Gputo 1.28.0; lock files refreshed for Linux/Windows GPU runtimes. - Switched to
Microsoft.ML.OnnxRuntimeGenAI.Cuda(0.13.1); removedMicrosoft.WindowsAppSDK.MLand related runtime entries from lock files.
- Bumped central
-
Migration
- Ensure target machines/containers have CUDA 13–compatible drivers/tooling.
- If you relied on TensorRT fused causal attention in the CUDA EP, it was removed in 1.28—validate affected models.