コンテンツにスキップ

新しいプロバイダーの追加

ONNX Runtimeに新しい実行プロバイダーを追加する

Section titled “ONNX Runtimeに新しい実行プロバイダーを追加する”
  1. onnxruntime/core/providers の下にフォルダを作成する
  2. include/onnxruntime/core/providers の下にフォルダを作成する。最初のステップと同じ名前にする必要があります。
  3. IExecutionProviderを継承する新しいクラスを作成する。ソースコードは ‘onnxruntime/core/providers/[your_provider_name]’ に配置する必要があります
  4. include/onnxruntime/core/providers/[your_provider_name] の下に新しいヘッダーファイルを作成する。このファイルはOrtProviderFactoryInterfaceを作成するための関数を1つ提供する必要があります。テンプレートとして ‘include/onnxruntime/core/providers/cpu/cpu_provider_factory.h’ を使用できます。MemoryInfoを作成するための関数を提供する必要はありません。
  5. ‘onnxruntime/core/providers/[your_provider_name]’ の下にsymbols.txtを配置する。このファイルには、プロバイダーからエクスポートされるすべての関数名を含める必要があります。通常、プロバイダーファクトリを作成するための単一の関数で十分です。
  6. onnxruntime_providers.cmakeにプロバイダーを追加する。静的ライブラリとしてビルドします。
  7. cmake/onnxruntime.cmakeに1行追加し、‘target_link_libraries’関数呼び出しにプロバイダーを配置する。

例:

  1. ‘symbols.txt’でエクスポートしたc関数を使用して、そのプロバイダーのファクトリを作成する
  2. プロバイダーファクトリをセッションオプションに配置する
  3. そのセッションオプションからセッションを作成する

例:

OrtEnv* env;
OrtInitialize(ORT_LOGGING_LEVEL_WARNING, "test", &env)
OrtSessionOptions* session_option = OrtCreateSessionOptions();
OrtProviderFactoryInterface** factory;
OrtCreateCUDAExecutionProviderFactory(0, &factory);
OrtSessionOptionsAppendExecutionProvider(session_option, factory);
OrtReleaseObject(factory);
OrtCreateSession(env, model_path, session_option, &session);

実行プロバイダーのテストを容易にするために、onnx_test_runnerコマンドに新しいケースを追加できます。 これを行うには、他の既存プロバイダーのパターンに従って、onnxruntime/test/onnx/main.ccファイルに追加します。

これが配置されたら、次のようにonnx_test_runnerを実行できます:

$ cd build/PLATFORM/CONFIGURATION
$ ./onnx_test_runner -e YOUR_BACKEND ./testdata/ort_minimal_e2e_test_data/
$ ./onnx_test_runner -e YOUR_BACKEND ./testdata/gemm_activation_fusion/