跳转到主要内容

ONNXRuntime 扩展

项目描述

ONNXRuntime-Extensions

Build Status

什么是ONNXRuntime-Extensions

简介:ONNXRuntime-Extensions是一个库,通过ONNX Runtime自定义操作ABI扩展了ONNX模型和推理的能力。它包含了一套ONNX Runtime自定义操作,以支持视觉、文本和NLP模型的常见预处理和后处理操作。它支持多种语言和平台,如Windows/Linux/macOS上的Python,一些移动平台如Android和iOS,以及Web-Assembly等。基本工作流程是首先增强ONNX模型,然后使用ONNX Runtime和ONNXRuntime-Extensions包进行模型推理。

快速入门

Python安装

pip install onnxruntime-extensions

夜间构建

在Windows上

pip install --index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/pypi/simple/ onnxruntime-extensions

请确保您已经满足Python环境中onnxruntime-extensions(例如,onnx和onnxruntime)的先决条件。

在Linux/macOS上

请在执行以下命令之前确保已安装编译工具包,如gcc(g++ 8.0之后的版本)或clang。

python -m pip install git+https://github.com/microsoft/onnxruntime-extensions.git

用法

1. 生成预处理/后处理ONNX模型

《onnxruntime-extensions》Python 包提供了一个方便的方式来生成 ONNX 处理图。这可以通过将 Huggingface 变换器数据处理类转换为所需的格式来实现。有关更详细的信息,请参阅以下 API

help(onnxruntime_extensions.gen_processing_models)

注意

生成模型处理需要安装 ONNX 包。以这种方式生成的数据处理模型可以通过 onnx.compose 与其他模型合并,如果需要的话。

2. 使用 ONNX Runtime 推理扩展

Python

以下语言有单独的包,请安装它以进行构建。

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)

由以下支持