ort-customops/README.md

99 строки
4.2 KiB
Markdown
Исходник Обычный вид История

# ONNXRuntime-Extensions
2022-07-07 02:18:35 +03:00
[![Build Status](https://dev.azure.com/onnxruntime/onnxruntime/_apis/build/status%2Fonnxruntime-extensions.CI?branchName=main)](https://dev.azure.com/onnxruntime/onnxruntime/_build/latest?definitionId=213&branchName=main)
2021-04-25 02:39:03 +03:00
## What's ONNXRuntime-Extensions
2022-07-07 02:18:35 +03:00
Introduction: ONNXRuntime-Extensions is a 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](https://onnxruntime.ai/docs/reference/operators/add-custom-op.html) 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.
2022-07-07 02:18:35 +03:00
2023-04-21 01:57:06 +03:00
## Quickstart
2022-07-07 02:18:35 +03:00
2023-04-21 01:57:06 +03:00
### **Python installation**
2022-07-07 02:18:35 +03:00
```bash
2023-04-21 01:57:06 +03:00
pip install onnxruntime-extensions
````
### **Nightly Build**
2023-04-21 01:57:06 +03:00
#### <strong>on Windows</strong>
```cmd
pip install --index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/pypi/simple/ onnxruntime-extensions
```
2023-04-21 01:57:06 +03:00
Please ensure that you have met the prerequisites of onnxruntime-extensions (e.g., onnx and onnxruntime) in your Python environment.
#### <strong>on Linux/macOS</strong>
Please make sure the compiler toolkit like gcc(later than g++ 8.0) or clang are installed before the following command
```bash
python -m pip install git+https://github.com/microsoft/onnxruntime-extensions.git
```
## Usage
2022-07-07 02:18:35 +03:00
## 1. Generate the pre-/post- processing ONNX model
With onnxruntime-extensions Python package, you can easily get the ONNX processing graph by converting them from Huggingface transformer data processing classes, check the following API for details.
```python
help(onnxruntime_extensions.gen_processing_models)
```
### NOTE: These data processing model can be merged into other model [onnx.compose](https://onnx.ai/onnx/api/compose.html) if needed.
## 2. Using Extensions for ONNX Runtime inference
2022-07-07 02:18:35 +03:00
### Python
There are individual packages for the following languages, please install it for the build.
2022-07-07 02:18:35 +03:00
```python
import onnxruntime as _ort
from onnxruntime_extensions import get_library_path as _lib_path
2022-07-07 02:18:35 +03:00
so = _ort.SessionOptions()
so.register_custom_ops_library(_lib_path())
2022-07-07 02:18:35 +03:00
# Run the ONNXRuntime Session, as ONNXRuntime docs suggested.
# sess = _ort.InferenceSession(model, so)
# sess.run (...)
2022-07-07 02:18:35 +03:00
```
### C++
```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
```java
var env = OrtEnvironment.getEnvironment();
var sess_opt = new OrtSession.SessionOptions();
2022-07-07 02:18:35 +03:00
/* Register the custom ops from onnxruntime-extensions */
sess_opt.registerCustomOpLibrary(OrtxPackage.getLibraryPath());
```
### C#
```C#
SessionOptions options = new SessionOptions()
options.RegisterOrtExtensions()
session = new InferenceSession(model, options)
```
2022-07-07 02:18:35 +03:00
## Contributing
2020-10-05 22:36:46 +03:00
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
2020-10-12 20:52:26 +03:00
the rights to use your contribution. For details, visit https://cla.microsoft.com.
2020-10-05 22:36:46 +03:00
2020-10-12 20:52:26 +03:00
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
2020-10-05 22:36:46 +03:00
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](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
2020-11-25 07:45:58 +03:00
2022-07-07 02:18:35 +03:00
## License
2020-11-25 07:45:58 +03:00
[MIT License](LICENSE)