ONNX Runtime 1.31.0 Stabilizes Model-Package and EPContext APIs, Deprecates ACL EP and Changes GatherBlockQuantized Out-of-Range Behavior
ONNX Runtime 1.31.0 promotes model-package and EPContext data APIs to stable, deprecates the ACL execution provider, and makes out-of-range GatherBlockQuantized indices return zeros.
Overview
The ONNX Runtime project published version 1.31.0 on October 9, 2026. According to the release notes on GitHub, the release “stabilizes model-package and EPContext data APIs, improves CPU model loading and quantized MoE inference, expands device-based execution-provider selection, and strengthens model-loading and runtime reliability.” The notes thank 80 human contributors and cover changes since ONNX Runtime 1.30.0.
What Changed
Stable APIs
The release notes say the model-package API and EPContext data callbacks were promoted to stable C and C++ APIs, with EPContext callback support added across language bindings. Consumers of model packages are told to use OrtApi::GetModelPackageApi and the stable OrtModelPackageApi table, and the corresponding experimental lookup entries were removed. The project also extended the Compile API to write external initializers and EP context data to buffers, which the notes say enables in-memory compilation workflows for models larger than 2 GB.
Behavior and compatibility changes
The notes list several items under Announcements and Compatibility:
- GatherBlockQuantized: out-of-range indices now produce zero output slices across CPU, CUDA, and WebGPU for both integer and floating-point quantized formats. The notes state this deliberately differs from ONNX
Gathererror semantics, as the release notes describe. - ACL EP deprecated: the ACL execution provider will be removed in a future release, and source builds using
--use_aclnow receive a deprecation warning, per the release notes. - ONNX dependency: it remains at 1.22.0. The initial ONNX 1.23 integration was reverted pending upstream fixes, so this release does not ship that integration’s new opset or FLOAT6 support, according to the release notes.
- Telemetry: supported native builds now default to 1DS telemetry. Windows TraceLogging remains selectable with
--use_windows_telemetry, and telemetry can be disabled with--no_telemetry, per the release notes.
CPU and Apple hardware
On the CPU side, the release notes say eligible weight prepacking is now parallelized during session initialization using the intra-op thread pool. Block-wise INT4/INT8 QMoE CPU experts were accelerated with prepacked MLAS QNBit kernels and grouped dispatch, and a QMoE accuracy_level attribute was added: INT4 uses FP32 activations by default, while accuracy_level=4 opts into INT8 activation computation.
Per the same release notes, CoreML now participates in device-based execution-provider selection, including Apple Neural Engine selection through PREFER_NPU. NPU selection requires iOS 16 or macOS 13 or later, and GPU selection requires iOS 15 or macOS 12 or later.
Memory verification
The release adds workspace-memory accounting and post-partition reservation verification. According to the release notes, setting session.strict_workspace_verification=1 makes initialization fail on workspace declaration overruns or nonzero orphaned reservations, and strict verification is not supported for ORT-format model loads.
The CUDA Plugin Pairing
The CUDA execution provider ships separately. The release notes state that CUDA Plugin EP v0.3.0 and WebGPU Plugin EP v0.5.0 are matched with ONNX Runtime 1.31.0. They warn that core and plugin must use the same contributed-operator schemas, that building both from the same ONNX Runtime revision is recommended, and that schema mismatches can cause incorrect execution or crashes and may not be detected during plugin registration.
The CUDA Plugin EP v0.3.0 notes add that the minimum ONNX Runtime core version remains 1.24.4, but meeting that minimum alone does not guarantee compatibility for contributed operators. That release lists opt-in FP16/BF16 MatMul auto-tuning via ep.cuda.enable_gemm_auto_tune=1 or ORT_CUDA_GEMM_AUTO_TUNE=1, with cuBLAS remaining the default. It also adds CUDA SparsePagedAttention and DynamicSparseAttention operators, and QMoE execution for INT2 and mixed INT2/INT4 weight combinations.
What We Don’t Know
The release notes do not publish benchmark figures for the CPU prepacking or QMoE changes, so the size of the speedups is not stated. They also do not say when the ACL execution provider will be removed, only that removal will come in a future release.
Analysis
For teams deploying ONNX Runtime, the practical items in this release are the migration off experimental model-package lookups, the changed GatherBlockQuantized semantics for out-of-range indices, and the requirement to pair the CUDA or WebGPU plugin builds with the matching core revision. Each is documented in the project’s own release notes; no independent testing of these changes is cited here.