コンテンツにスキップ

実行プロバイダー

ONNX Runtimeは、さまざまなハードウェアアクセラレータで推論を実行するための実行プロバイダー(EP)をサポートしています。EPは、ONNXモデル内の演算子を特定のハードウェアに最適化されたライブラリにマッピングすることによって機能します。

デフォルトでは、ONNX RuntimeはCPU実行プロバイダーを使用します。これは、すべてのONNX演算子の参照実装を提供します。ただし、GPUやその他のアクセラレータで推論を実行することで、パフォーマンスを大幅に向上させることができます。

使用する実行プロバイダーは、使用しているハードウェアとONNXモデルによって異なります。以下は、一般的なシナリオのいくつかの推奨事項です。

ハードウェア実行プロバイダー
CPUデフォルトEP
NVIDIA GPUCUDA EP、TensorRT EP
Intel GPUOpenVINO EP、DirectML EP
AndroidNNAPI EP
iOSCoreML EP
WebWebGL EP、WebAssembly EP

実行プロバイダーは、OrtSessionOptionsオブジェクトを使用して有効にできます。

// CUDA実行プロバイダーを有効にする
OrtCUDAProviderOptions cuda_options;
session_options.AppendExecutionProvider_CUDA(cuda_options);

一度に複数の実行プロバイダーを有効にすることができます。ONNX Runtimeは、リストの最初のプロバイダーから始めて、各演算子をサポートする最初の実行プロバイダーを使用します。

// TensorRT EPを試し、次にCUDA EPを試し、最後にCPU EPにフォールバックする
session_options.AppendExecutionProvider_TensorRT(tensorrt_options);
session_options.AppendExecutionProvider_CUDA(cuda_options);

ONNX Runtimeは、次の実行プロバイダーをサポートしています。

独自の実行プロバイダーの作成

Section titled “独自の実行プロバイダーの作成”

独自の実行プロバイダーを作成して、カスタムハードウェアアクセラレータをONNX Runtimeと統合することもできます。詳細については、貢献のドキュメントを参照してください。