Skip to content

Releases: microsoft/onnxruntime

ONNX Runtime v1.8.2

06 Aug 22:53
430e80e
Compare
Choose a tag to compare

This is a minor patch release on 1.8.1 with the following changes:

Inference

  • Fix a crash issue when optimizing Conv->Add->Relu for CUDA EP
  • ORT Mobile updates
    • Change Pre-built iOS package to static framework to fix App Store submission issue
    • Support for metadata in ORT format models
    • Additional operators
    • Bug fixes

Known issues

  • cudnn 8.0.5 causes memory leaks on T4 GPU as indicated by the issue, an upgrade to later version solves the problem.

ONNX Runtime v1.8.1

08 Jul 01:54
96bb4b1
Compare
Choose a tag to compare

This release contains fixes and key updates for 1.8.0.
For all package installation details, please refer to https://www.onnxruntime.ai.

Inference

  • Fixes for GPU package loading issues
  • Fix for memory issue for models with convolution nodes while using the EXHAUSTIVE algo search mode
  • ORT Mobile updates
    • CoreML EP enabled in iOS mobile package
    • Additional operators
    • Bug fixes
    • React Native package now available

Training

Performance updates for ONNX Runtime for PyTorch (training acceleration for PyTorch models)

  • Accelerates most popular Hugging Face models as well as GPT-Neo and Microsoft TNLG and TNLU models
  • Support for PyTorch 1.8.1 and 1.9
  • Support for CUDA 10.2 and 11.1
  • Preview packages for ROCm 4.2

ONNX Runtime v1.8.0

03 Jun 06:14
d4106de
Compare
Choose a tag to compare

Announcements

  • This release
    • Building onnxruntime from source now requires a C++ compiler with full C++14 support.
    • Builds with OpenMP are no longer published. They can still be built from source if needed. The default threadpool option should provide optimal performance for the majority of models.
    • New dependency for Python package: flatbuffers
  • Next release (v1.9)
    • Builds will require C++ 17 compiler
    • GPU build will be updated to CUDA 11.1

General

  • ONNX opset 14 support - new and updated operators from the ONNX 1.9 release
  • Dynamically loadable CUDA execution provider
    • Allows a single build to work for both CPU and GPU (excludes Python packages)
  • Profiler tool now includes information on threadpool usage
    • multi-threading preparation time
    • multi-threading run time
    • multi-threading wait time
  • [Experimental] onnxruntime-extensions package
    • Crowd-sourced library of common/shareable custom operator implementations that can be loaded and run with ONNX Runtime; community contributions are welcome! - microsoft/onnxruntime-extensions
    • Currently includes mostly ops and tokenizers for string operations (full list here)
    • Tutorials to export and load custom ops from onnxruntime-extensions: TensorFlow, PyTorch

Training

Mobile

  • Official package now available
  • Objective-C API for iOS in preview
  • Expanded operators supported by NNAPI (Android) and CoreML (iOS) execution providers
  • All operators in the ai.onnx domain now support type reduction
    • Create ORT format model with --enable_type_reduction flag, and perform minimal build --enable_reduced_operator_type_support flag

ORT Web

  • New ONNX Runtime Javascript API
  • ONNX Runtime Web package
    • Support WebAssembly and WebGL for CPU and GPU
    • Support Web Worker based multi-threaded WebAssembly backend
    • Supports ORT model format
    • Improved WebGL performance

Performance

  • Memory footprint reduction through shared pre-packed weights for shared initializers

    • Pre-packing refers to weights that are pre-processed at model load time
    • Allows pre-packed weights of shared initializers to also be shared between sessions, preserving memory savings from using shared initializers
  • Memory footprint reduction through arena shrinkage

    • By default, the memory arena doesn't shrink and it holds onto any allocated memory forever. This feature exposes a RunOption that scans the arena and potentially returns unused memory back to the system after the end of a Run. This feature is particularly useful while running a dynamic shape model that may occasionally process an outlier inference request that requires a large amount of memory. If the shrinkage option if invoked as part of these Runs, the memory that was required for that Run is not held on forever by the memory arena.
  • Quantization

    • Native support of Quantize-Dequantize (QDQ) format for CPU
    • Support for Concat, Transpose, GlobalAveragePool, AveragePool, Resize, Squeeze
    • Improved performance on high-end ARM devices by leveraging dot-product instructions
    • Improved performance for batched quant GEMM with optimized multi-threading logic
    • Per-column quantization for MatMul
  • Transformers

    • GPT-2 and beam search integration (example)

APIs

  • WinML
    • New native WinML API SetIntraOpThreadSpinning for toggling Intra Op thread spin behavior. When enabled, and when there is no current workload, IntraOp threads will continue to spin for some additional time as it waits for any additional work. This can result in better performance for the current workload but may impact performance of other unrelated workloads. This toggle is enabled by default.
  • ORT Inferencing
    • The following APIs have been added to this release. Please check the API documentation for information.
      • KernelInfoGetAttributeArray_float
      • KernelInfoGetAttributeArray_int64
      • CreateArenaCfgV2
      • AddRunConfigEntry
      • CreatePrepackedWeightsContainer
      • PrepackedWeightsContainer
      • CreateSessionWithPrepackedWeightsContainer
      • CreateSessionFromArrayWithPrepackedWeightsContainer

Execution Providers

  • TensorRT
    • Added support for TensorRT EP configuration using session options instead of environment variables.
    • Added support for DLA on Jetson Xavier (AGX, NX)
    • General bug fixes and quality improvements.
  • OpenVINO
    • Added support for OpenVINO 2021.3
    • Removed support for OpenVINO 2020.4
    • Added support for Loading/Saving of Blobs on MyriadX devices to avoid expensive model blob compilation at runtime.
  • DirectML
    • Supports ARM/ARM64 architectures now in WinML and ONNX RunTime NuGet packages.
    • Support for 8-dimensional tensors to: BatchNormalization, Cast, Join, LpNormalization, MeanVarianceNormalization, Padding, Tile, TopK.
    • Substantial performance improvements for several operators.
    • Resize nearest_mode “floor” and “round_prefer_ceil”.
    • Fusion activations for: Conv, ConvTranspose, BatchNormalization, MeanVarianceNormalization, Gemm, MatMul.
    • Decomposes unsupported QLinearSigmoid operation.
    • Removes strided 64-bit emulation in Cast.
    • Allows empty shapes on constant CPU inputs.

Known issues

  • This release has an issue that may result in segmentation faults when deployed on Intel 12th Gen processors with hybrid architecture capabilities with Performance and Efficient-cores (P-core and E-core). This has been fixed in ORT 1.9.
  • The CUDA build of this release has a regression in that the memory utilization increases significantly compared to the previous releases. A fix for this will be released shortly as part of 1.8.1 patch. Here is an incomplete list of issues where this was reported - 8287, 8171, 8147.
  • GPU part of source code is not compatible with
    • Visual Studio 2019 16.10.0 ( which was just released on May 25, 2021). 16.9.x is fine.
    • clang 12
  • CPU part of source code is not compatible with
    • VS 2017 (#7936). Before we fix it please use VS 2019 instead.
    • GCC 11. See #7918
  • C# OpenVino EP is broken. #7951
  • Python and Windows only: if your CUDNN DLLs are not in CUDA's installation dir, then you need to set manually "CUDNN_HOME" variable. Just putting them in %PATH% is not enough. #7965
  • onnxruntime-win-gpu-x64-1.8.0.zip on this page misses important DLLs, please don't use it.

Contributions

Contributors to ONNX Runtime include members across teams at Microsoft, along with our community members:

snnn, gwang-msft, baijumeswani, fs-eire, edgchen1, zhanghuanrong, yufenglee, thiagocrepaldi, hariharans29, skottmckay, weixingzhang, tianleiwu, SherlockNoMad, ashbhandare, tracysh, satyajandhyala, liqunfu, iK1D, RandySheriffH, suffiank, hanbitmyths, wangyems, askhade, stevenlix, chilo-ms, smk2007, kit1980, codemzs, raviskolli, pranav-prakash, chenfucn, xadupre, gramalingam, harshithapv, oliviajain, xzhu1900, ytaous, MaajidKhan, RyanUnderhill, mrry, orilevari, jingyanwangms, sfatimar, KeDengMS, [jywu-msft](h...

Read more

ONNX Runtime v1.7.2

08 Apr 00:38
5bc92df
Compare
Choose a tag to compare

This is a minor patch release on 1.7.1 with the following changes:

ONNX Runtime v1.7.1

04 Mar 17:08
Compare
Choose a tag to compare

The Microsoft.ML.OnnxRuntime.Gpu and Microsoft.ML.OnnxRuntime.Managed packages are uploaded to Nuget.org. Please note the version numbers for the Microsoft.ML.OnnxRuntime.Managed package.

ONNX Runtime v1.7.0

03 Mar 04:45
40b0929
Compare
Choose a tag to compare

Announcements

Starting from this release, all ONNX Runtime CPU packages are now built without OpenMP. A version with OpenMP is available on Nuget (Microsoft.ML.OnnxRuntime.OpenMP) and PyPi (onnxruntime-openmp). Please report any issues in GH Issues.

Note: The 1.7.0 GPU package is uploaded on this Azure DevOps Feed due to the size limit on Nuget.org. Please use 1.7.1 for the GPU package through Nuget.

Key Feature Updates

General

  • Mobile
    • Custom operators now supported in the ONNX Runtime Mobile build
    • Added ability to reduce types supported by operator kernels to only the types required by the models
      • Expect a 25-33% reduction in binary size contribution from the kernel implementations. Reduction is model dependent, but testing with common models like Mobilenet v2, SSD Mobilenet and Mobilebert achieved reductions in this range.
  • Custom op support for dynamic input
  • MKLML/openblas/jemalloc build configs removed
  • Removed dependency on gemmlowp
  • [Experimental] Audio Operators
    • Fourier Transforms (DFT, IDFT, STFT), Windowing Functions (Hann, Hamming, Blackman), and a MelWeightMatrix operator in "com.microsoft.experimental” domain
    • Buildable using ms_experimental build flag (included in Microsoft.AI.MachineLearning NuGet package)

Performance

  • Quantization
    • Quantization tool now supports quantization of models in QDQ (QuantizeLinear-DequantizeLinear) format
    • Depthwise Conv quantization performance improvement
    • Quantization support added for Pad, Split and MaxPool for channel last
    • QuantizeLinear performance improvement on AVX512
    • Optimization: Fusion for Conv + Mul/Add
  • Transformers
    • Longformer Attention CUDA kernel memory footprint reduction
    • Einsum Float16 CUDA kernel for ALBERT and XLNet
    • Python optimizer tool now supports fusion for BART
    • CPU profiling tool for transformers models

APIs and Packages

  • Python 3.8 and 3.9 support added for all platforms, removed support for 3.5
  • ARM32/64 Windows builds are now included in the CPU Nuget and zip packages
  • WinML
    • .NET5 support - will work with .NET5 Standard 2.0 Projections
    • Image descriptors expose NominalPixelRange properties
      • Native support added for additional pixel ranges [0..1] and [-1..1] in image models.
      • A new property is added to the ImageFeatureDescriptor runtimeclass to expose the ImageNominalPixelRange property in ImageFeatureDescriptor. Other similar properties exposed are the image’s BitmapPixelFormat and BitmapAlphaMode.
    • Bug fixes and performance improvements, including #6249
  • [Experimental] Model Building API available under the Microsoft.AI.MachineLearning.Experimental namespace. (included in Microsoft.AI.MachineLearning NuGet package)
    • Can be used to create dynamic models on the fly to enable engine-optimized and hardware accelerated dynamic tensor featurization code sample

Execution Providers

  • CUDA EP
    • Official GPU build now built with CUDA 11
  • OpenVINO EP
    • Support for OpenVINO 2021.2
    • Deprecated support for OpenVINO 2020.2
    • Support for OpenVINO EP options in onnxruntime_perf_test tool
    • General fixes
  • TensorRT EP
    • Support for TensorRT 7.2
    • General fixes and perf improvements
  • DirectML EP
    • Support for DirectML 1.4.2
    • DirectML PIX markers added to enable profiling graph at operator level.
  • NNAPI EP
    • Performance improvement for quantized models
    • Support of per-channel quantization for QlinearConv
    • Additional operator support – Min/Max/Pow

Contributions

Contributors to ONNX Runtime include members across teams at Microsoft, along with our community members:
edgchen1, snnn, skottmckay, gwang-msft, hariharans29, tianleiwu, xadupre, yufenglee, ryanlai2, wangyems, suffiank, liqunfu, orilevari, baijumeswani, weixingzhang, pranavsharma, RandySheriffH, ashbhandare, oliviajain, smk2007, tracysh, stevenlix, fs-eire, Craigacp, faxu, mrry, codemzs, chilo-ms, jcwchen, zhanghuanrong, SherlockNoMad, iK1D, askhade, zhangxiang1993, yuslepukhin, tlh20, MaajidKhan, wschin, smkarlap, wenbingl, pengwa, duli2012, natke, alberto-magni, Tixxx, HectorSVC, jingyanwangms, jstoecker, kit1980, suryasidd, RandyShuai, sfatimar, jywu-msft, liuziyue, mosdav, thiagocrepaldi, souptc, fdwr

ONNX Runtime v1.6.0

11 Dec 05:06
718ca7f
Compare
Choose a tag to compare

Announcements

  • OpenMP will be disabled in future official builds (build option will still be available). A NoOpenMP version of ONNX Runtime is now available with this release on Nuget and PyPi for C/C++/C#/Python users.
  • In the next release, MKL-ML, openblas, and jemallac build options will be removed, and the Microsoft.ML.OnnxRuntime.MKLML Nuget package will no longer be published. Users of MKL-ML are recommended to use the Intel EPs. If you are using these options and identify issues switching to an alternative build, please file an issue with details.

Key Feature Updates

General

  • ONNX 1.8 support / opset 13
  • New contrib ops: BiasSoftmax, MatMulIntegerToFloat, QLinearSigmoid, Trilu
  • ORT Mobile now compatible with NNAPI for accelerating model execution on Android devices
  • Build support for Mac with Apple Silicon (CPU only)
  • New dependency: flatbuffers
  • Support for loading sparse tensor initializers in pruned models
  • Support for setting the execution priority of a node
  • Support for selection of cuDNN conv algorithms
  • BERT Model profiling tool

Performance

  • New session option to disable denormal floating numbers on sse3 supporting CPUs
    • Eliminates unexpected performance degradation due to denormals without needing to retrain the model
  • Option to share initializers between sessions to improve memory utilization
    • Useful when several models that use the same set of initializers except the last few layers of the model are loaded in the same process
    • Eliminates wasteful memory usage when every model (session) creates a separate instance of the same initializer
    • Exposed by the AddInitializer API
  • Transformer model optimizations
    • Longformer: LongformerAttention CUDA operator added
    • Support for BERT models exported from Tensorflow with 1 or 2 inputs
    • Python optimizer supports additional models: openai-GPT, ALBERT and FlauBERT
  • Quantization
    • Support of per-channel QuantizeLinear and DeQuantizeLinear
    • Support of LSTM quantization
    • Quantization performance improvement on ARM
    • CNN quantization perf optimizations, including u8s8 support and NHWC transformer in QLinearConv
  • ThreadPool
    • Use _mm_pause() for spin loop to improve performance and power consumption

APIs and Packages

  • Python - I/O Binding enhancements
    • Usage Documentation (OrtValue and IOBinding sections)
    • Python binding for the OrtValue data structure
      • An interface is exposed to allocate memory on a CUDA-supported device and define the contents of this memory. No longer need to use allocators provided by other libraries to allocate and manage CUDA memory to be used with ORT.
      • Allows consuming ORT allocated device memory as an OrtValue (check Scenario 4 in the IOBinding section of the documentation for an example)
    • OrtValue instances can be used to bind inputs/outputs. This is in addition to existing interfaces that allows binding a piece of memory directly/using numpy arrays that can be bound and may be particularly useful when binding ORT allocated device memory.
  • C# - float16 and bfloat16 support
  • Windows ML
    • NuGet package now supports UWP applications targeting Windows Store deployment for both CPU and GPU
    • Minor API Improvements:
      • Able to bind IIterable as inputs and outputs
      • Able to create Tensor* via multiple buffers
    • WindowsAI Redist now includes a statically linked C-Runtime package for additional deployment options

Execution Providers

  • DNNL EP Updates
    • DNNL updated from 1.1.1 to 1.7
  • NNAPI EP Updates
    • Support for CNN models
    • Additional operator support - Resize/Flatten/Clip
  • TensorRT EP Updates
    • Int8 quantization support (experimental)
    • Engine cache refactoring and improvements
    • General fixes and performance improvements
  • OpenVINO EP Updates
    • OpenVINO 2021.1 support
    • OpenVINO EP builds as shared library
    • Multi-threaded inferencing support
    • fp16 input type support
    • Multi-device plugin support
    • Hetero plugin support
    • Enable build on ARM64
  • DirectML EP Updates (1.3.0 -> 1.4.0)
    • Utilizing the first public standalone release of the DirectML API through the DirectML NuGet package release
    • General fixes and improvements
  • nGraph EP is removed. Recommend to use OpenVINO instead

Additional notes

  • VCRuntime2019 with OpenMP: pinning a process to NUMA node 1 forces the execution to be single threaded. Fix is in progress in VC++.
    • Workaround: place the VS2017 vcomp DLL side-by-side so that ORT uses the VS2017 version
  • Pip version >=20.3 is required for use on macOS Big Sur (11.x)
  • The destructor of OrtEnv is now non-trivial and may do DLL unloading Do not call ReleaseEnv from DLLMain or put OrtEnv in global variables. It is not safe to call FreeLibrary from DllMain. - reference
  • Some unit tests fail on Pascal GPUs. See: #5914
  • If using the default CPU package (built with OpenMP), consider tuning the OpenMP settings to improve performance. By default the number of threads to use for openmp parallel regions is set to the number of logical CPUs. This may not be optimal for machines with hyper-threading; when CPUs are oversubscribed the 99-percentile latency could be 10x greater. Setting the OMP_NUM_THREADS environment variable to the number of physical cores is a good starting point. As noted in Announcements, future official builds of ORT will be published without OpenMP

Contributions

Contributors to ONNX Runtime include members across teams at Microsoft, along with our community members:
gwang-msft, snnn, skottmckay, edgchen1, hariharans29, wangyems, yufenglee, yuslepukhin, tianleiwu, SherlockNoMad, tracysh, ryanlai2, askhade, xadupre, liqunfu, RandySheriffH, jywu-msft, KeDengMS, pranavsharma, mrry, ashbhandare, iK1D, RyanUnderhill, MaajidKhan, wenbingl, kit1980, weixingzhang, tlh20, suffiank, Craigacp, smkarlap, stevenlix, zhanghuanrong, sfatimar, ytaous, tiagoshibata, fdwr, oliviajain, alberto-magni, jcwchen, mosdav, xzhu1900, wschin, codemzs, duli2012, smk2007, natke, zhijxu-MS, manashgoswami, zhangxiang1993, faxu, HectorSVC, take-cheeze, jingyanwangms, chilo-ms, YUNQIUGUO, jgbradley1, jessebenson, martinb35, Andrews548, souptc, pengwa, liuziyue, orilevari, BowenBao, thiagocrepaldi, jeffbloo

ONNX Runtime v1.5.3

29 Oct 19:21
Compare
Choose a tag to compare

This is a minor patch release on 1.5.2 with the following changes:

  • Fix shared provider unload crash #5553
  • Minor minimal build header fix

ONNX Runtime v1.5.2

15 Oct 07:04
Compare
Choose a tag to compare

This is a minor patch release on 1.5.1 with the following changes:

  • Remove dependency on cudnn64_7.dll for GPU C# nuget: #5386
  • Add config keys header file in the packages for Linux and Mac: #5388
  • Add flatbuffers verifier for ORT format buffer: #5378
  • Use official flatbuffers v1.12: #5392
  • Mitigate pybind11 build break using Xcode 12 on macOS: #5381
  • Support trilinear sampling in the Resize operator: #5300
  • Update TensorRT parser to fix accuracy issue in some opset11 models: #5442

ONNX Runtime Training RC3.1

08 Oct 22:12
38e1bbc
Compare
Choose a tag to compare
Pre-release

Fixes issue discovered during validation.

Changes: