Skip to content

v1.31.0

Latest

Choose a tag to compare

@kibae kibae released this 09 Oct 13:45
61e6c32

Aligns with upstream ONNX Runtime v1.31.0.

This release fixes UINT2 output decoding after upstream corrected the C API/ONNX tensor-type conversion. CI and Docker downloads use the recorded upstream version. Docker builds can be tested locally before committing, while publication retains the established version tags. CUDA and cuDNN bases remain aligned with upstream's packaging.

🎯 Correct packed UINT2 output

UINT2 stores four values per byte. Older ONNX Runtime releases confused the ABI-stable C API type number with ONNX's serialized type number; the server consequently treated UINT2 storage as individual bytes. Upstream #33066 fixes that boundary in 1.31.0. The server now unpacks the two-bit values, including a partial final byte. The existing datatype fixture returns the expected [3, 0, 2, 1, 3], and the integration test now requires that exact sequence.

The public tensor-type enum retains its numeric values. INT2 and FLOAT8E8M0 are also covered by the upstream conversion fix and were revalidated by the server's datatype tests.

🔧 Chores

  • Pinned runtime downloads — record ORT_VERSION separately from the server version, select exact-version release assets, verify supplied archive checksums, and fail instead of using an unpinned macOS Homebrew fallback. Release metadata parsing uses Python 3; Docker builder images install it.
  • Local Docker validation — build.sh --local builds and tests uncommitted changes without uploading. --dry-run prints tags and commands without executing them. No-argument invocation builds, tests, then pushes the usual <version>-linux-{cpu,cuda12,cuda13} tags. All selected amd64 tests must pass before uploads begin.
  • Release-tool regression checks — Linux CI runs 28 offline tests covering tag selection, local-only execution, failure handling, version-pinned downloads, and stale/missing CI results. These checks supplement actual Docker execution tests.
  • Release workflow — diagnose and verify changes locally before committing and waiting for cross-platform CI; work in the existing source checkout. Tag the PR's actual merge commit after the release checks complete.
  • ci: release 1.31.0 — update the established seven version files and pin the runtime version test to 1.31.0.

📋 Upstream 1.31.0 review

  • Public API headers and enums — added onnxruntime_type_conversion.h; the existing tensor-type, graph-optimization, and execution-mode enum declarations retain their members and values. The server uses named C API constants and does not convert ONNX serialized type numbers itself.
  • Session options — SetEpContextDataReadFunc and ClearEpContextDataReadFunc register native callbacks/state (#32265). They remain outside the JSON session API, which has no application-managed EPContext storage interface. Stable model-package APIs (#33166), compilation-buffer APIs, and plugin-provider interfaces likewise require no adaptation to the existing server model/session API.
  • Config keys — parallel prepacking, workspace verification, function expansion limits, MoE counters, CPU/CUDA tuning, and external initializer-buffer settings remain reachable through the existing session_options.config_entries passthrough. CUDA provider options retain their existing forwarding behavior.
  • ONNX/opset — upstream retains ONNX 1.22.0 after reverting the initial 1.23 integration (#33073); the datatype fixture remains at opset 23. No FLOAT6 support is claimed.
  • Existing assumptions — float8, INT2, and other supported types pass the model-output tests. Complex64/128 remain unconstructible through ORT and their defensive decoder comments remain applicable. The previous UINT2 bug assumption was replaced by the correct packed-storage contract.
  • Release assets — exact-version Linux amd64/arm64, Windows x64, and macOS arm64 archives are available. CI and Docker pin 1.31.0; the arm64 NuGet fallback remains version-pinned and unused for this release.

🐳 Docker Images

  • 1.31.0-linux-cuda13 — amd64; CUDA 13.0.3 and cuDNN 9.14.0.64.
  • 1.31.0-linux-cuda12 — amd64; CUDA 12.8.1 and cuDNN 9.8.0.87.
  • 1.31.0-linux-cpu — amd64 and arm64.

Both GPU images retain their Ubuntu 24.04 builder/runtime bases. Upstream's immutable Linux packaging stage, build command, and pipeline variables establish CUDA 12.8/13.0 and the corresponding cuDNN alignment. The full NVIDIA_REQUIRE_* expressions match the published 1.30.0 images; this release makes no driver-support-floor change.

NVIDIA's container constraints include alternative driver/brand clauses, and minor-version compatibility has feature and PTX limitations. A toolkit version or one WSL measurement does not establish a universal driver requirement.

Local validation passed all 9 Debug CTest executables and 28 release-tool regression tests. The final release head passed Linux (Ubuntu 22.04/24.04, GCC/Clang), Windows, macOS, and CodeQL PR workflows. CPU, CUDA12, and CUDA13 amd64 image tests each confirmed ONNX Runtime 1.31.0, session creation, and inference returning [13, 14, 11]. Both CUDA sessions reported device ID 0 on this WSL/RTX 5080 host (container-visible NVIDIA driver 610.88; host nvidia-smi UMD 610.57.01/KMD 610.88). This is a measured host configuration, not a universal minimum-driver claim.

Published image digests:

Tag Digest
1.31.0-linux-cpu sha256:f8047423536dca723b22419516d549aa31d09662e569e196412ef5a6166e9c71
1.31.0-linux-cuda12 sha256:ea452646db90c6e3bdbc018d6ab7bab0196e4231ac9cd3d1299c945b5ea8a6f7
1.31.0-linux-cuda13 sha256:9de1ef6b31cc991da739f49920782350ac684062085cd66968e13434cc673c6b

The CPU image includes arm64 without an arm64 execution gate. This release does not claim the manual arm64 verification performed for some earlier releases.

Note: upstream telemetry remains enabled by default in the official Linux binaries used by these images, as documented since v1.29.0. Opt out with ORT_DISABLE_TELEMETRY=1.

Full Changelog: v1.30.0...v1.31.0