The pre- and post- processing library for ONNX Runtime
Перейти к файлу
Kyle Zhang b8a2339714 change win pool 2024-11-04 15:03:39 +08:00
.config Update tsaoptions.json (#309) 2022-10-25 15:23:33 -07:00
.github clean up requirements.txt and developer docs (#655) 2024-02-16 15:47:44 -08:00
.pipelines Fix CUDA CI build failures (#824) 2024-10-11 16:08:44 -07:00
.pyproject Remove OpenCV dependency from C_API mode (#800) 2024-09-04 16:50:05 -07:00
base Fix the Unicode code discrepency on CLIP model (#814) 2024-09-23 16:49:24 -07:00
cmake Change the framework bundle identifier to a valid one (#829) 2024-10-21 10:56:41 -07:00
docs Improve Documentation: Add Hugging Face Compatibility Docs and Refine the existing docs (#818) 2024-09-30 13:04:33 -07:00
include Add the MLlama Imaging Processing Support (#823) 2024-10-22 14:24:09 -07:00
java Fix the windows API missing issue and Linux shared library size issue for Java packaging. (#774) 2024-07-29 16:03:58 -07:00
nuget Update macosx framework packaging to follow apple guidelines (#776) 2024-08-13 10:37:22 +10:00
onnxruntime_extensions Add the MLlama Imaging Processing Support (#823) 2024-10-22 14:24:09 -07:00
operators Add general regex support (#822) 2024-10-21 16:29:17 -07:00
prebuild Enable using system certs on Android. (#543) 2023-08-24 12:17:07 +10:00
pyop Remove OpenCV dependency from C_API mode (#800) 2024-09-04 16:50:05 -07:00
shared Add the MLlama Imaging Processing Support (#823) 2024-10-22 14:24:09 -07:00
test Add the MLlama Imaging Processing Support (#823) 2024-10-22 14:24:09 -07:00
tools change win pool 2024-11-04 15:03:39 +08:00
tutorials add(tutorials): exporting yolo world model (#803) 2024-10-03 14:42:35 +10:00
.clang-format Add a generic image processor and its C API (#745) 2024-06-20 10:53:49 -07:00
.clang-tidy Refactor the header file directory and integrate the eager tensor implementation (#689) 2024-04-17 12:58:19 -07:00
.flake8 initial checkins 2020-10-12 10:52:52 -07:00
.gitignore Enhancing CUDA Support in Python Package Build and Testing (#608) 2023-11-27 15:39:52 -08:00
.sscignore Fix Secure Supply Chain Analysis Warning in PR pipeline (#414) 2023-05-04 16:29:21 -07:00
.swift-format Update OrtExtensionsUsage to also use the ORT Objective-C API. (#483) 2023-09-25 07:35:37 -07:00
CMakeLists.txt Added support for native image decoding (#808) 2024-09-26 09:17:55 +08:00
CODEOWNERS Update CODEOWNERS 2023-08-22 17:02:17 -07:00
CODE_OF_CONDUCT.md Initial CODE_OF_CONDUCT.md commit 2020-10-05 12:36:41 -07:00
LICENSE Updating LICENSE to template content 2020-10-05 12:36:43 -07:00
MANIFEST.in Remove OpenCV dependency from C_API mode (#800) 2024-09-04 16:50:05 -07:00
README.md Improve Documentation: Add Hugging Face Compatibility Docs and Refine the existing docs (#818) 2024-09-30 13:04:33 -07:00
SECURITY.md Initial SECURITY.md commit 2020-10-05 12:36:44 -07:00
ThirdPartyNotices.txt Enable C++ unit tests on iOS (#560) 2023-09-18 18:52:30 -05:00
build.android add the decoder_prompt_id for whisper tokenizer (#775) 2024-07-29 14:21:17 -07:00
build.bat Fix the Unicode code discrepency on CLIP model (#814) 2024-09-23 16:49:24 -07:00
build.ios_xcframework Add iOS packaging pipeline. (#327) 2022-12-23 05:27:41 -08:00
build.sh Remove OpenCV dependency from C_API mode (#800) 2024-09-04 16:50:05 -07:00
build_lib.bat Add build.py to make it easier for developers to build different variants (#318) 2023-01-02 14:55:31 +10:00
build_lib.sh Enable C++ unit tests on iOS (#560) 2023-09-18 18:52:30 -05:00
cgmanifest.json switch cmake cmp0169 flag to new (#762) 2024-07-15 23:28:49 -07:00
pyproject.toml Remove numpy dependency from its Python binary build (#657) 2024-02-21 09:54:17 -08:00
requirements-dev.txt Fix the pipeline breaks dues to the MSVC 19.40 and numpy 2.0 release (#747) 2024-06-17 16:58:11 -07:00
setup.cfg Minor changes to test CI PR trigger (#634) 2024-01-16 10:31:04 -08:00
setup.py make onnx package to be optional. (#653) 2024-02-15 14:09:04 -08:00
version.txt bump version from 0.13.0 to 0.14.0 (#827) 2024-10-17 11:55:58 -07:00

README.md

ONNXRuntime-Extensions

Build Status

What's ONNXRuntime-Extensions

Introduction: ONNXRuntime-Extensions is a C/C++ library that extends the capability of the ONNX models and inference with ONNX Runtime, via ONNX Runtime Custom Operator ABIs. It includes a set of ONNX Runtime Custom Operator to support the common pre- and post-processing operators for vision, text, and nlp models. And it supports multiple languages and platforms, like Python on Windows/Linux/macOS, some mobile platforms like Android and iOS, and Web-Assembly etc. The basic workflow is to enhance a ONNX model firstly and then do the model inference with ONNX Runtime and ONNXRuntime-Extensions package.

Quickstart

The library can be utilized as either a C/C++ library or other advance language packages like Python, Java, C#, etc. To build it as a shared library, you can use the build.bat or build.sh scripts located in the root folder. The CMake build definition is available in the CMakeLists.txt file and can be modified by appending options to build.bat or build.sh, such as build.bat -DOCOS_BUILD_SHARED_LIB=OFF. For more details, please refer to the C API documentation.

Python installation

pip install onnxruntime-extensions

The nightly build is also available for the latest features, please refer to nightly build

Usage

1. Generation of Pre-/Post-Processing ONNX Model

The onnxruntime-extensions Python package provides a convenient way to generate the ONNX processing graph. This can be achieved by converting the Huggingface transformer data processing classes into the desired format. For more detailed information, please refer to the API below:

help(onnxruntime_extensions.gen_processing_models)

NOTE:

The generation of model processing requires the ONNX package to be installed. The data processing models generated in this manner can be merged with other models using the onnx.compose if needed.

2. Using Extensions for ONNX Runtime inference

Python

There are individual packages for the following languages, please install it for the build.

import onnxruntime as _ort
from onnxruntime_extensions import get_library_path as _lib_path

so = _ort.SessionOptions()
so.register_custom_ops_library(_lib_path())

# Run the ONNXRuntime Session, as ONNXRuntime docs suggested.
# sess = _ort.InferenceSession(model, so)
# sess.run (...)

C++

  // The line loads the customop library into ONNXRuntime engine to load the ONNX model with the custom op
  Ort::ThrowOnError(Ort::GetApi().RegisterCustomOpsLibrary((OrtSessionOptions*)session_options, custom_op_library_filename, &handle));

  // The regular ONNXRuntime invoking to run the model.
  Ort::Session session(env, model_uri, session_options);
  RunSession(session, inputs, outputs);

Java

var env = OrtEnvironment.getEnvironment();
var sess_opt = new OrtSession.SessionOptions();

/* Register the custom ops from onnxruntime-extensions */
sess_opt.registerCustomOpLibrary(OrtxPackage.getLibraryPath());

C#

SessionOptions options = new SessionOptions()
options.RegisterOrtExtensions()
session = new InferenceSession(model, options)

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

License

MIT License