mrkeyoor.com_
Tue 01 Sept 17:42 UTC
AI Toolsevaluationupdated 26 Aug 2026

onnxruntime review

ONNX Runtime executes ONNX machine-learning models across CPUs, GPUs, browsers, mobile devices, and vendor accelerators. It lets teams export a model from a training framework, then run inference through one runtime while selecting an execution provider suited to the deployment hardware.

+45stars / 7d
Verdict

Our ONNX Runtime setup installed 65 packages and completed its measured build step in 10 seconds, but no test target ran, so that result supports a package trial rather than a source-build claim. ONNX Runtime is the default shortlist choice when one exported model must reach several hardware families. Pin the runtime and provider stack, compare outputs with a trusted implementation, and benchmark your exact model before upgrading production.

We ran it

Lab card: what happened when we ran onnxruntimeScreenshot of onnxruntime (onnxruntime.ai)
Install✓ · 138s65 packages · 452 MB
Build✓ · 10s
Testsn/ano test script
Known vulns0(pip-audit)
Repo20363 files~3,400,093 lines of source · 609.6 MB · 48 CI workflows

Answers from our run

Does onnxruntime build from source?

Dependencies installed in 138 seconds (65 packages), and the build succeeded in 10 seconds. We cloned commit 4d308da into a clean Debian container with 3 CPUs and no project-specific setup.

Does onnxruntime have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does onnxruntime have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use onnxruntime?

Teams that want to train and serve models without an ONNX export and compatibility step.

What are the alternatives to onnxruntime?

OpenVINO, TensorRT, Apache TVM. Our ONNX Runtime setup installed 65 packages and completed its measured build step in 10 seconds, but no test target ran, so that result supports a package trial rather than a source-build claim.

Setup3/5Package path worked; full provider builds are hardware-specific
Docs5/5Official guides cover inference, training, providers, and releases
Community5/521,652 stars, same-day push, and detailed issue activity
Maturity5/5v1.29.0 and 48 CI workflows support many production targets

Discussed on

  1. hnONNX Runtime merges WebGPU backend178 points
  2. hnONNX Runtime: cross-platform, high performance scoring engine for ML models8 points
  3. hnONNX Runtime v1.23.0 Released4 points

Who it’s for

Teams deploying exported ONNX models across more than one hardware or operating-system target.
Application developers who want maintained runtime packages instead of writing inference kernels.
Performance engineers prepared to test operator coverage and numerical parity on a chosen execution provider.
Organizations that need an MIT-licensed runtime with active security releases and vendor integrations.

Who it’s NOT for

Teams that want to train and serve models without an ONNX export and compatibility step.
Buyers expecting every execution provider to behave identically: current issues report provider-specific numerical, cache, and build defects.
Windows CPU users moving FP16 Gemm workloads straight to v1.29.0: issue 32255 reports a severe regression against v1.28.0.
CUDA plus TensorRT users who require a minimal v1.29.0 source build: issue 32154 reports unresolved linker symbols on that path.
Browser teams depending on WebGL or JSEP long term: v1.29.0 announces their deprecation in favor of the native WebGPU provider.
Anyone who treats our 10-second harness build as full validation: no standard test target ran in our sandbox.

Setup reality

Our sandbox installed 65 Python packages in 138 seconds and used 452 MB. Its build step succeeded in 10 seconds. The harness found no standard test script or target, so tests were skipped. Pip-audit reported 0 known vulnerabilities in the installed environment.

Basic CPU inference can use a published package and an ONNX model without service credentials. CUDA, TensorRT, DirectML, QNN, OpenVINO, WebGPU, and other execution paths need matching hardware, drivers, vendor libraries, package variants, and provider configuration.

The source checkout was 609.6 MB with 20,363 files and about 3,400,093 source lines. Our scan found 48 CI workflow files but no Dockerfile or top-level tests directory. A complete native or accelerator build is a different job from the narrow 10-second step our harness completed.

One model format reaches many execution providers

ONNX Runtime separates a model's portable graph from the code that executes it on a particular machine. A team can export from PyTorch, TensorFlow/Keras, scikit-learn, LightGBM, XGBoost, or another ONNX-capable tool, then create a runtime session around the result. Graph transformations and an execution provider map supported operators to CPU, GPU, browser, mobile, or vendor hardware. That is a useful boundary for products that ship the same model to unlike devices.

Portability is conditional, not automatic. Exporters choose opsets and sometimes emit custom or newly introduced operators. Execution providers support different subsets, precisions, shapes, and optimization paths. Unsupported nodes may fall back to another provider when configured, which can preserve correctness while changing latency or memory behavior. The right acceptance test loads the exact exported file, confirms provider assignment, checks output tolerances, and measures representative inputs on every target machine.

The published package is easier than the 3.4-million-line source tree

Most application teams should begin with a released package. Our checkout held 20,363 files, about 3,400,093 source lines, and occupied 609.6 MB before the measured environment was installed. That scale reflects a C++ core, language bindings, graph optimizers, build tooling, operator tests, and provider integrations. It also means building from source only makes sense when a required provider, compiler flag, reduced operator set, or platform package is unavailable upstream.

GitHub showed 21,652 stars, 1,636 combined open issues and pull requests, and a last push on August 26, 2026. The large open count is not a count of bugs, and it includes pull requests across many platforms. Activity is unmistakable: version 1.29.0 arrived on August 12, and the recent queue covers CUDA, TensorRT, WebGPU, QNN, OpenVINO, Node packaging, model I/O, numerical behavior, and constrained-device memory.

What happened when we ran it

Our sandbox installed commit 4d308da in a Python 3.12 Debian image with 3 CPUs and 8 GB of RAM. Installation took 138 seconds, added 65 packages, and used 452 MB on disk. The harness build step succeeded in 10 seconds. Pip-audit found 0 known vulnerabilities in that installed set. These results do not include a model benchmark, GPU provider, mobile package, browser run, or distributed training job.

The harness found no standard test script or target and skipped tests. Our scan still found 48 CI workflow files, so the absence describes the generic command discovery in this checkout, not a claim that Microsoft has no tests. There was no Dockerfile or top-level tests directory in the measured signals. Without a run of the project's own platform-specific suites, our result says the narrow environment installed and built, nothing more.

v1.29.0 expands providers while changing web and telemetry choices

Release 1.29.0 adds work across CUDA, WebGPU, WebNN, OpenVINO, QNN, DirectML, XNNPACK, TensorRT, and CPU kernels. It also includes input-validation and path-handling security fixes. For browser users, the consequential change is direction: onnxruntime-web is deprecating WebGL and JSEP, with the native WebGPU execution provider named as the replacement. A browser product should test device coverage before assuming WebGPU reaches every current user.

Telemetry also widened in this release. POSIX telemetry can operate on Linux, macOS, Android, and iOS when the runtime is built with telemetry enabled. WebAssembly remains telemetry-free, and setting ORT_DISABLE_TELEMETRY=1 before initialization disables non-Windows telemetry for the process. Organizations with strict collection policies should turn that into a documented build and startup decision instead of leaving it to package defaults.

Current reports show why model-level regression tests matter

Issue 32255 reports that a Windows x64 CPU FP16 Gemm case became roughly 3,556 times slower in 1.29.0 than 1.28.0. The reporter measured 0.121 ms against 430.339 ms on a small warmed-up case and also observed the regression in a Qwen3-ASR encoder. That is one workload and one platform, but it is a concrete reason to benchmark before upgrading rather than trusting a major runtime's general performance reputation.

Correctness needs the same discipline. Issue 32228 reports an optimizer in 1.27.0 folding an identity transpose into Gemm as a real transpose, which produced wrong results for square shapes and errors for others. Issue 32258 reports a TensorRT provider mismatch for infinity input on Resize, although it used an older runtime. Provider age and scope vary across these reports. Golden outputs catch the relevant class of failure without assuming every open report applies to your version.

Specialized builds and distribution channels have their own failure modes

Issue 32154 reports a v1.29.0 Windows build combining CUDA, TensorRT, and the minimal-build option failing at link time with 2 unresolved symbols. Issue 32233 reports onnxruntime-node installation failing when a NuGet feed returns HTTP 302 because the download helper does not follow redirects. Issue 32195 says the web bundles visible through common CDNs lagged the native v1.29 release. Each affects a different consumer, which is exactly the point: package name alone does not identify the delivery path.

Choose the API, package variant, execution provider, vendor libraries, driver versions, and model opset as one tested unit. ONNX Runtime remains the strongest general choice when deployment targets vary and ONNX export is already workable. Teams centered only on NVIDIA or Intel hardware should compare TensorRT or OpenVINO directly. The 10-second step on our box makes trying the Python route cheap, while the 609.6 MB source tree warns against casual custom builds.

Alternatives

ProjectWhat it isPick it when
OpenVINOIntel's model optimization and inference toolkit for CPU, GPU, and NPU targets.pick this instead when Intel hardware is the deployment center and its optimization toolchain is an advantage.
TensorRTNVIDIA's inference optimizer and runtime for CUDA GPUs.pick this instead when NVIDIA-only inference performance matters more than a cross-platform runtime interface.
Apache TVMA compiler stack for optimizing machine-learning workloads across hardware backends.pick this instead when custom compilation and backend tuning are core engineering work rather than runtime configuration.

What people are saying

  1. [github-trending] microsoft/onnxruntime

Sources

  1. ONNX Runtime repository and README
  2. ONNX Runtime v1.29.0 release
  3. Windows CPU FP16 Gemm regression report
  4. Gemm transpose fusion correctness report
  5. CUDA TensorRT minimal build report
  6. onnxruntime-node redirect install report
  7. onnxruntime-web CDN release report

More ai tools reviews

claudian · SkillSpector · robin · mjlab · MoGe · awesome-design-md · the whole board →