実行プロバイダー
ONNX Runtime実行プロバイダー
Section titled “ONNX Runtime実行プロバイダー”ONNX Runtimeは、さまざまなハードウェアアクセラレータで推論を実行するための実行プロバイダー(EP)をサポートしています。EPは、ONNXモデル内の演算子を特定のハードウェアに最適化されたライブラリにマッピングすることによって機能します。
デフォルトでは、ONNX RuntimeはCPU実行プロバイダーを使用します。これは、すべてのONNX演算子の参照実装を提供します。ただし、GPUやその他のアクセラレータで推論を実行することで、パフォーマンスを大幅に向上させることができます。
実行プロバイダーの選択
Section titled “実行プロバイダーの選択”使用する実行プロバイダーは、使用しているハードウェアとONNXモデルによって異なります。以下は、一般的なシナリオのいくつかの推奨事項です。
| ハードウェア | 実行プロバイダー |
|---|---|
| CPU | デフォルトEP |
| NVIDIA GPU | CUDA EP、TensorRT EP |
| Intel GPU | OpenVINO EP、DirectML EP |
| Android | NNAPI EP |
| iOS | CoreML EP |
| Web | WebGL EP、WebAssembly EP |
実行プロバイダーの有効化
Section titled “実行プロバイダーの有効化”実行プロバイダーは、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);利用可能な実行プロバイダー
Section titled “利用可能な実行プロバイダー”ONNX Runtimeは、次の実行プロバイダーをサポートしています。
独自の実行プロバイダーの作成
Section titled “独自の実行プロバイダーの作成”独自の実行プロバイダーを作成して、カスタムハードウェアアクセラレータをONNX Runtimeと統合することもできます。詳細については、貢献のドキュメントを参照してください。