コンテンツにスキップ

さまざまなEPでビルド

実行プロバイダーを使用してONNX Runtimeをビルドする

Section titled “実行プロバイダーを使用してONNX Runtimeをビルドする”
  • TOCプレースホルダー

実行プロバイダー共有ライブラリ

Section titled “実行プロバイダー共有ライブラリ”

oneDNN、TensorRT、OpenVINO™、CANN、およびQNNプロバイダーは、メインのonnxruntimeに静的にリンクされるのではなく、共有ライブラリとしてビルドされます。これにより、必要な場合にのみロードでき、プロバイダーの依存ライブラリがインストールされていなくてもonnxruntimeは正常に実行されますが、そのプロバイダーは使用できません。共有ライブラリではないプロバイダーの場合、onnxruntimeをロードするには、プロバイダーのすべての依存関係が存在する必要があります。

Windowsでは、共有プロバイダーライブラリは「onnxruntime_providers_.dll」(例:onnxruntime_providers_openvino.dll)という名前になります。 Unixでは、「libonnxruntime_providers_.so」になります。 Macでは、「libonnxruntime_providers_*.dylib」になります。

また、共有プロバイダーが依存する共有ライブラリとしてonnxruntime_providers_shared(上記と同じ命名規則が適用されます)もあります。

注意:これらのライブラリをシステムの場所に置いたり、ライブラリ検索パス(UnixのLD_LIBRARY_PATHなど)に追加したりすることはお勧めしません。システムに複数のバージョンのonnxruntimeがインストールされている場合、間違ったライブラリが見つかり、未定義の動作につながる可能性があります。

共有プロバイダーライブラリはonnxruntimeコードによってロードされます(クライアントコードでロードしたり、依存したりしないでください)。共有プロバイダーと非共有プロバイダーを登録するためのAPIは同じですが、共有プロバイダーは、プロバイダーがセッションオプションに追加されたときにランタイムでロードされる点が異なります(C APIのOrtSessionOptionsAppendExecutionProvider_OpenVINOやSessionOptionsAppendExecutionProvider_OpenVINOなどの呼び出しを介して)。 共有プロバイダーライブラリがロードできない場合(ファイルが存在しない、またはその依存関係が存在しないかパスにない場合)、エラーが返されます。

onnxruntimeコードは、onnxruntime共有ライブラリ(または静的ライブラリバージョンに静的にリンクされた実行可能ファイル)と同じ場所でプロバイダー共有ライブラリを探します。


  • CUDAcuDNNをインストールします。
    • ONNX Runtime用のCUDA実行プロバイダーは、CUDA 12.xおよびcuDNN 9でビルドおよびテストされています。バージョンの詳細については、こちらを確認してください。
    • CUDAのインストールパスは、CUDA_HOME環境変数または--cuda_homeパラメータで指定する必要があります。インストールディレクトリには、binincludelibのサブディレクトリが含まれている必要があります。
    • nvccが見つかるように、CUDAのbinディレクトリのパスをPATH環境変数に追加する必要があります。
    • cuDNNのインストールパスは、CUDNN_HOME環境変数または--cudnn_homeパラメータで指定する必要があります。Windowsでは、インストールディレクトリにbinincludelibのサブディレクトリが含まれている必要があります。
    • cuDNN 8.*にはZLibが必要です。cuDNN 8.9インストールガイドに従って、LinuxまたはWindowsにzlibをインストールしてください。
    • Windowsでは、cudnn64_8.dllが見つかるように、cuDNN binディレクトリのパスをPATH環境変数に追加する必要があります。
.\build.bat --use_cuda --cudnn_home <cudnnホームパス> --cuda_home <cudaホームパス>
./build.sh --use_cuda --cudnn_home <cudnnホームパス> --cuda_home <cudaホームパス>

Dockerfileはこちらで入手できます。

GPUアーキテクチャを指定するには(コンピュートケイパビリティを参照)、--cmake_extra_defines CMAKE_CUDA_ARCHITECTURES=80;86;89のようなパラメータを追加できます。

--cmake_extra_defines onnxruntime_USE_CUDA_NHWC_OPS=ONを使用すると、CUDA EPを追加のNHWC opでコンパイルできます。サポートされているNHWC演算子が少ないため、このオプションはデフォルトでは有効になっていません。

もう1つの非常に役立つCMakeビルドオプションは、NVTXサポート(--cmake_extra_defines onnxruntime_ENABLE_NVTX_PROFILE=ON)でビルドすることです。これにより、Nsight Systemsを使用したプロファイリングがはるかに簡単になり、CUDAカーネルを実際のONNX演算子と関連付けることができます。

--enable_cuda_line_infoまたは--cmake_extra_defines onnxruntime_ENABLE_CUDA_LINE_NUMBER_INFO=ONは、デバイスコードの行番号情報のNVCC生成を有効にします。CUDAカーネルでCompute Sanitizerツールを実行するときに役立つ場合があります。

Windowsマシンに複数のバージョンのCUDAがインストールされており、古いバージョンのCUDAを使用したい場合は、--cuda_version <cudaバージョン>のようなパラメータを追加する必要があります。

ビルドマシンに多くのCPUコアがあり、メモリが64 GB未満の場合、nvcc error : 'cicc' died due to signal 9のようなメモリ不足エラーが発生する可能性があります。解決策は、--parallel 4 --nvcc_threads 1のようなパラメータで並列NVCCスレッドの数を制限することです。

ONNX Runtime、CUDA、Visual Studioの古いバージョンに関する注意

Section titled “ONNX Runtime、CUDA、Visual Studioの古いバージョンに関する注意”
  • 使用しているCUDA、cuDNN、Visual Studioのバージョンの互換性によっては、以前のバージョンのMSVCツールセットを明示的にインストールする必要がある場合があります。

  • ONNX RuntimeとCUDA、およびVisual Studioの古いバージョンの場合:

    • CUDA 10.0は、14.11から14.16(Visual Studio 2017 15.9)までのツールセットで動作することが知られており、今後のVisual Studioバージョンでも引き続き動作するはずです。
    • CUDA 9.2は、14.11 MSVCツールセット(Visual Studio 15.3および15.4)で動作することが知られています。
      • 14.11 MSVCツールセットをインストールするには、このページを参照してください。
      • Visual Studio 2017の新しいバージョンで14.11ツールセットを使用するには、2つのオプションがあります。
        1. ビルドスクリプトを実行する前に、vcvarsall.batを実行してVisual Studioの環境変数を14.11ツールセットを指すように設定します。例:VS2017 Enterpriseをお持ちの場合、x64ビルドでは次のコマンドを使用します。"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11便宜上、.\build.amd64.1411.batはこれを実行し、.\build.batと同じように使用できます。例:.\build.amd64.1411.bat --use_cuda

        2. または、CMake 3.13以降をお持ちの場合は、--msvc_toolsetビルドスクリプトパラメータでツールセットのバージョンを指定できます。例:.\build.bat --msvc_toolset 14.11

  • Windowsマシンに複数のバージョンのCUDAがインストールされており、Visual Studioでビルドしている場合、CMakeはBuildCustomizationフォルダーで見つかった最も高いバージョンのCUDAのビルドファイルを使用します。 例:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\BuildCustomizations\。 以前のバージョンでビルドしたい場合は、このディレクトリから新しいバージョンの「CUDA x.y.*」ファイルを一時的に削除する必要があります。


TensorRT実行プロバイダーの詳細については、こちらを参照してください。

  • CUDA実行プロバイダーの手順に従って、CUDAとcuDNNをインストールし、環境変数を設定します。
  • TensorRTのインストール手順に従います。
    • ONNX Runtime用のTensorRT実行プロバイダーは、TensorRT 10.9でビルドおよびテストされています。
    • TensorRTのインストールパスは、--tensorrt_homeパラメータで指定する必要があります。
    • ONNX Runtimeは、デフォルトでtensorrt_homeTensorRT組み込みパーサーを使用します。
    • 代わりにオープンソースのonnx-tensorrtパーサーを使用するには、以下のビルドコマンドに--use_tensorrt_oss_parserパラメータを追加します。
      • オープンソースのonnx-tensorrtパーサーのデフォルトバージョンは、cmake/deps.txtで指定されています。
      • 異なるバージョンのonnx-tensorrtパーサーを指定するには:
        • 好みのonnx-tensorrtのコミットを選択します。
        • ダウンロードしたonnx-tensorrt zipファイルでsha1sumコマンドを実行して、SHA1ハッシュを取得します。
        • 更新されたonnx-tensorrtのコミットとハッシュ情報でcmake/deps.txtを更新します。
      • --use_tensorrt_oss_parserを有効にする場合は、cmake/deps.txtで指定されたTensorRT組み込みパーサー/オープンソースonnx-tensorrtがバージョン一致していることを確認してください。
        • つまり、tensorrt_homeにTensorRT-10.9組み込みバイナリへのパスを割り当て、cmake/deps.txtで指定されたonnx-tensorrt 10.9-GAブランチであれば、バージョン一致です。

[ORT 1.21/1.22オープンソースパーサーユーザーへの注意]

Section titled “[ORT 1.21/1.22オープンソースパーサーユーザーへの注意]”
  • ORT 1.21/1.22はonnx-tensorrt 10.8-GA/10.9-GAにリンクしており、これには新しくリリースされたonnx 1.18が必要です。
    • ORT 1.21/1.22のビルド時にonnx-tensorrt 10.8-GA/10.9-GAをプレビューするための暫定的な修正は次のとおりです。
      • cmake/deps.txtのonnx行onnx;https://github.com/onnx/onnx/archive/e709452ef2bbc1d113faf678c24e6d3467696e83.zip;c0b9f6c29029e13dea46b7419f3813f4c2ca7db8に置き換えます。
      • これをrawファイルとしてダウンロードし、cmake/patches/onnx/onnx.patchに保存します(ブラウザからコピー/貼り付けしないでください。改行の種類が変わる可能性があります)。
      • 上記のtrt関連フラグ(--use_tensorrt_oss_parserを含む)を使用してORTをビルドします。
    • onnx 1.18は、最新のORT mainブランチでサポートされています。mainブランチをチェックアウトし、--use_tensorrt_oss_parserを使用してORT-TRTをビルドして、完全なonnx 1.18サポートでOSSパーサーを有効にしてください。
Terminal window
# tensorrt組み込みパーサーでビルド
.\build.bat --config Release --parallel --cmake_extra_defines 'CMAKE_CUDA_ARCHITECTURES=native' --cudnn_home <cuDNNホームへのパス> --cuda_home <CUDAホームへのパス> --use_tensorrt --tensorrt_home <TensorRTホームへのパス> --cmake_generator "Visual Studio 17 2022"
# cmake/deps.txtで構成された特定のバージョンのオープンソースonnx-tensorrtパーサーでビルド
.\build.bat --config Release --parallel --cmake_extra_defines 'CMAKE_CUDA_ARCHITECTURES=native' --cudnn_home <cuDNNホームへのパス> --cuda_home <CUDAホームへのパス> --use_tensorrt --tensorrt_home <TensorRTホームへのパス> --use_tensorrt_oss_parser --cmake_generator "Visual Studio 17 2022"
Terminal window
# tensorrt組み込みパーサーでビルド
./build.sh --config Release --parallel --cmake_extra_defines 'CMAKE_CUDA_ARCHITECTURES=native' --cudnn_home <cuDNNへのパス、例:/usr/lib/x86_64-linux-gnu/> --cuda_home <CUDAフォルダーへのパス、例:/usr/local/cuda> --use_tensorrt --tensorrt_home <TensorRTホームへのパス>
# cmake/deps.txtで構成された特定のバージョンのオープンソースonnx-tensorrtパーサーでビルド
./build.sh --config Release --parallel --cmake_extra_defines 'CMAKE_CUDA_ARCHITECTURES=native' --cudnn_home <cuDNNへのパス、例:/usr/lib/x86_64-linux-gnu/> --cuda_home <CUDAフォルダーへのパス、例:/usr/local/cuda> --use_tensorrt --use_tensorrt_oss_parser --tensorrt_home <TensorRTホームへのパス> --skip_submodule_sync

Dockerfileの手順はこちらで入手できます。

TensorRT 8.Xで--use_tensorrt_oss_parserを使用してビルドするには、追加のフラグ--cmake_extra_defines onnxruntime_USE_FULL_PROTOBUF=ONが必要です。


TensorRT RTX実行プロバイダーの詳細については、こちらを参照してください。

ONNX RuntimeTensorRT-RTXCUDA Toolkit
mainブランチ1.112.9
1.231.112.9
1.221.012.8

TensorRT RTX EPは、Ampere(GeForce RTX 30xx)以降のアーキテクチャに基づくRTX GPUをサポートし、最小推奨NVIDIAドライバーバージョンは555.85です。

  • git、cmake、Python 3.12をインストールします。
  • 最新のNVIDIAドライバーをインストールします。
  • CUDAツールキット12.9をインストールします。
  • TensorRT RTXをインストールします。
  • Windowsのみ、Visual Studioをインストールします。
  • TensorRT-RTX dllをPATHに設定するか、アプリケーションexeと同じフォルダーに配置します。
Terminal window
git clone https://github.com/microsoft/onnxruntime.git
cd onnxruntime
Terminal window
.\build.bat --config Release --build_dir build --parallel --use_nv_tensorrt_rtx --tensorrt_rtx_home "path\to\tensorrt-rtx" --cuda_home "path\to\cuda\home" --cmake_generator "Visual Studio 17 2022" --build_shared_lib --skip_tests --build --update --use_vcpkg
Terminal window
./build.sh --config Release --build_dir build --parallel --use_nv_tensorrt_rtx --tensorrt_rtx_home "path/to/tensorrt-rtx" --cuda_home "path/to/cuda/home" --build_shared_lib --skip_tests --build --update
Terminal window
.\build\Release\Release\onnxruntime_test_all.exe --gtest_filter=*NvExecutionProviderTest.*
Terminal window
# pythonホイールのビルド
.\build.bat --config Release --build_dir build --parallel --use_nv_tensorrt_rtx --tensorrt_rtx_home "path\to\tensorrt-rtx" --cuda_home "path\to\cuda\home" --cmake_generator "Visual Studio 17 2022" --build_shared_lib --skip_tests --build_wheel
# インストール
pip install "build\Release\Release\dist\onnxruntime-1.23.0-cp312-cp312-win_amd64.whl"

注:TensorRT-RTX .dllまたは.soはPATHにあるか、アプリケーションと同じフォルダーにあります。


これらの手順は、最新のJetPack SDK用です。

  1. JetsonホストでONNX Runtimeリポジトリをクローンします。

    Terminal window
    git clone --recursive https://github.com/microsoft/onnxruntime
  2. CUDAコンパイラを指定するか、その場所をPATHに追加します。

    1. JetPack 5.xユーザーは、JetPackバージョンやJetson Linux BSP(Board Support Package)を更新せずに、最新のCUDAリリースにアップグレードできます。

      1. JetPack 5.xユーザーの場合、ONNX Runtime 1.17以降ではCUDA>=11.8およびGCC>9.4のインストールが必要です。

      2. CUDAのアップグレード手順については、この公式ブログを確認してください(Jetson Xavier NXのJetPack 5.1.2でCUDA 12.2が検証済みです)。

        1. /usr/local/cuda-12.2/compatの下にlibnvcudla.soがない場合:sudo apt-get install -y cuda-compat-12-2を実行し、export LD_LIBRARY_PATH="/usr/local/cuda-12.2/lib64:/usr/local/cuda-12.2/compat:$LD_LIBRARY_PATH"~/.bashrcに追加します。
      3. コンピュートケイパビリティのデータシートについては、こちらを確認してください。

    2. nvccPATHにない場合、CMakeは正しいnvccを自動的に見つけることができません。nvccは次のようにしてPATHに追加できます。

      Terminal window
      export PATH="/usr/local/cuda/bin:${PATH}"

      または:

      Terminal window
      export CUDACXX="/usr/local/cuda/bin/nvcc"
    3. TensorRTライブラリを更新します。

      1. Jetpack 5.xはTensorRT 8.5までサポートしています。Jetpack 6.xにはTensorRT 8.6-10.3が搭載されています。

      2. Jetpack 6.xユーザーは、TensorRT SDKウェブサイトからjetpack用の最新のTensorRT 10 TARパッケージをダウンロードできます。

      3. すべてのONNX Runtimeバージョン間のTensorRT/CUDAサポートマトリックスについては、こちらを確認してください。

  3. JetpackホストにONNX Runtimeビルドの依存関係をインストールします。

    Terminal window
    sudo apt install -y --no-install-recommends \
    build-essential software-properties-common libopenblas-dev \
    libpython3.10-dev python3-pip python3-dev python3-setuptools python3-wheel
  4. ONNX RuntimeをビルドするにはCmakeが必要です。最低限必要なCMakeのバージョンはこちらで確認してください。https://cmake.org/download/ からダウンロードし、cmakeの実行ファイルをPATHに追加して使用してください。

  5. ONNX Runtime Pythonホイールをビルドします。

    1. CUDAおよびTensorRTをサポートするonnxruntime-gpuホイールをビルドします(必要に応じてCUDA/CUDNN/TensorRTライブラリへのパスを更新してください)。

      Terminal window
      ./build.sh --config Release --update --build --parallel --build_wheel \
      --use_tensorrt --cuda_home /usr/local/cuda --cudnn_home /usr/lib/aarch64-linux-gnu \
      --tensorrt_home /usr/lib/aarch64-linux-gnu

​ 注:

  • デフォルトでは、onnxruntime-gpuホイールファイルはpath_to/onnxruntime/build/Linux/Release/dist/にキャプチャされます(ビルドパスは、上記のビルドコマンドに--build_dirとそれに続くカスタムパスを追加することでカスタマイズできます)。

  • オプション機能をオプトアウトしてビルド時間を短縮するには、ビルドコマンドに--skip_tests --cmake_extra_defines 'CMAKE_CUDA_ARCHITECTURES=native' 'onnxruntime_BUILD_UNIT_TESTS=OFF' 'onnxruntime_USE_FLASH_ATTENTION=OFF' 'onnxruntime_USE_MEMORY_EFFICIENT_ATTENTION=OFF'を追加します。

  • Xavierシリーズのような一部のJetsonデバイスでは、より高い電力モードではより多くのコア(最大6つ)を使用して計算しますが、ONNX Runtimeをビルドする際にはより多くのリソースを消費します。OOMが発生してシステムがハングする場合は、ビルドコマンドで--parallel 1を設定してください。


oneDNN(旧DNNL)の詳細については、こちらを参照してください。

DNNL実行プロバイダーは、Intel CPUまたはGPU用にビルドできます。Intel GPU用にビルドするには、Intel SDK for OpenCL Applicationsをインストールするか、Khronos OpenCL SDKからOpenCLをビルドします。OpenCL SDKパスをdnnl_opencl_rootとしてビルドコマンドに渡します。最新のGPUドライバーをインストールします - WindowsグラフィックスドライバーLinuxグラフィックスコンピュートランタイムおよびOpenCLドライバー

CPUの場合

.\build.bat --use_dnnl

./build.sh --use_dnnl

GPUの場合

.\build.bat --use_dnnl --dnnl_gpu_runtime ocl --dnnl_opencl_root "c:\program files (x86)\intelswtools\sw_dev_tools\opencl\sdk"

./build.sh --use_dnnl --dnnl_gpu_runtime ocl --dnnl_opencl_root "/opt/intel/sw_dev_tools/opencl-sdk"

OneDNN EPビルドは、フラグ—build_wheelを使用してWindowsとLinuxの両方でPythonホイールのビルドをサポートしています。

.\build.bat --config RelWithDebInfo --parallel --build_shared_lib --cmake_generator "Visual Studio 16 2019" --build_wheel --use_dnnl --dnnl_gpu_runtime ocl --dnnl_opencl_root "C:\Program Files (x86)\IntelSWTools\system_studio_2020\OpenCL\sdk"


OpenVINO™実行プロバイダーの詳細については、こちらを参照してください。

  1. 適切なOSとターゲットハードウェア用のIntel® Distribution of OpenVINO™TM Toolkit Release 2024.3からOpenVINO™オフライン/オンラインインストーラーをインストールします。

    詳細な手順については、ドキュメントに従ってください。

2024.5は現在推奨されているOpenVINO™バージョンです。OpenVINO™ 2024.5は、最小のOpenVINO™バージョン要件です。

  1. 特定のフォローオン手順でターゲットハードウェアを構成します。

    • Intel® Processor Graphics(GPU)を構成するには、次の手順に従ってください:WindowsLinux
  2. 以下に示すようにsetupvarsスクリプトを実行して、OpenVINO™環境を初期化します。これは必須の手順です。

    • Windowsの場合:
    C:\<openvino_install_directory>\setupvars.bat
    • Linuxの場合:
    $ source <openvino_install_directory>/setupvars.sh

    注: dockerfileを使用してOpenVINO™実行プロバイダーを使用している場合、dockerfile内でOpenVINO™をソーシングすることはできません。LD_LIBRARY_PATHを明示的にOpenVINO™ライブラリの場所を指すように設定する必要があります。当社のdockerfileを参照してください。

.\build.bat --config RelWithDebInfo --use_openvino <hardware_option> --build_shared_lib --build_wheel

注:デフォルトのWindows CMakeジェネレーターはVisual Studio 2019ですが、.\build.bat--cmake_generator "Visual Studio 17 2022"を渡すことで、新しいVisual Studio 2022を使用することもできます。

Terminal window
./build.sh --config RelWithDebInfo --use_openvino <hardware_option> --build_shared_lib --build_wheel
  • --build_wheel dist/フォルダーにpythonホイールファイルを作成します。ソースからビルドするときに有効にします。
  • --use_openvino ONNX RuntimeでOpenVINO™実行プロバイダーをビルドします。
  • <hardware_option>:OpenVINO™実行プロバイダーをビルドするためのデフォルトのハードウェアターゲットを指定します。これは、別のオプションでランタイムに動的にオーバーライドできます(動的デバイス選択の詳細については、OpenVINO™-ExecutionProviderを参照してください)。以下は、さまざまなIntelターゲットデバイスのオプションです。

統合GPUとディスクリートGPUが共存する場合に正しいハードウェアターゲットを指定するには、Intel GPUデバイス命名規則を参照してください。

ハードウェアオプションターゲットデバイス
CPUIntel® CPU
GPUIntel® 統合グラフィックス
GPU.0Intel® 統合グラフィックス
GPU.1Intel® ディスクリートグラフィックス
NPUIntel® ニューラルプロセッサーユニット
HETERO:DEVICE_TYPE_1,DEVICE_TYPE_2,DEVICE_TYPE_3...上記のすべてのIntel®シリコン
MULTI:DEVICE_TYPE_1,DEVICE_TYPE_2,DEVICE_TYPE_3...上記のすべてのIntel®シリコン
AUTO:DEVICE_TYPE_1,DEVICE_TYPE_2,DEVICE_TYPE_3...上記のすべてのIntel®シリコン

HETEROまたはMultiまたはAUTOデバイスビルドのハードウェアターゲットの指定:

HETERO:DEVICE_TYPE_1,DEVICE_TYPE_2,DEVICE_TYPE_3… DEVICE_TYPEは、このリスト[‘CPU’,‘GPU’, ‘NPU’]のいずれかのデバイスにすることができます。

有効なHETEROまたはMULTIまたはAUTOデバイスビルドには、最低2つのデバイスを指定する必要があります。

例:HETERO:GPU,CPUまたはAUTO:GPU,CPUまたはMULTI:GPU,CPU

サブグラフパーティション機能を無効にする

Section titled “サブグラフパーティション機能を無効にする”
  • サブグラフパーティショニングを無効にして、ONNX RuntimeでOpenVINO™実行プロバイダーをビルドします。

  • このオプションを有効にすると、完全にサポートされているモデルはOpenVINO実行プロバイダーで実行され、そうでない場合は完全にデフォルトのCPU EPにフォールバックします。

  • ビルド時にこの機能を有効にするには、--use_openvino <hardware_option>_NO_PARTITIONを使用します。

使用法:--use_openvino CPU_FP32_NO_PARTITIONまたは--use_openvino GPU_FP32_NO_PARTITIONまたは
--use_openvino GPU_FP16_NO_PARTITION

OpenVINO™実行プロバイダーのONNXレイヤーサポート、トポロジサポート、および有効なIntelハードウェアの詳細については、ドキュメントOpenVINO™-ExecutionProviderを参照してください。


QNN実行プロバイダーの詳細については、こちらを参照してください。

  • Qualcomm AI Engine Direct SDK(Qualcomm Neural Network SDK)をインストールしますLinux/Android/Windows

  • cmake-3.28以上をインストールします。

  • Python 3.10以上をインストールします。

    • Python 3.12 for Windows Arm64
    • Python 3.12 for Windows x86-64
    • 注:Windows on Armは、エミュレーションを介してx86-64 Python環境をサポートします。ネイティブArm64 ONNX Runtimeビルドには、Arm64 Python環境がアクティブになっていることを確認してください。
  • ソースツリーをチェックアウトします。

    Terminal window
    git clone --recursive https://github.com/Microsoft/onnxruntime.git
    cd onnxruntime
  • ONNX Runtime Pythonの依存関係をインストールします。

    Terminal window
    pip install -r requirements.txt
  • --use_qnn [QNN_LIBRARY_KIND]: QNN実行プロバイダーをビルドします。QNN_LIBRARY_KINDはオプションで、QNN実行プロバイダーを共有ライブラリ(デフォルト)または静的ライブラリとしてビルドするかどうかを指定します。
    • --use_qnnまたは--use_qnn shared_lib: QNN実行プロバイダーを共有ライブラリとしてビルドします。
    • --use_qnn static_lib: QNN実行プロバイダーをONNX Runtimeにリンクされた静的ライブラリとしてビルドします。これはAndroidビルドに必要です。
  • --qnn_home QNN_SDK_PATH: Qualcomm AI Engine Direct SDKへのパス。
    • Windowsでの例:--qnn_home 'C:\Qualcomm\AIStack\QAIRT\2.31.0.250130'
    • Linuxでの例:--qnn_home /opt/qcom/aistack/qairt/2.31.0.250130
  • --build_wheel: Pythonバインディングを有効にし、Pythonホイールをビルドします。
  • --arm64: Arm64用にクロスコンパイルします。
  • --arm64ec: Arm64EC用にクロスコンパイルします。Arm64ECコードはネイティブパフォーマンスで実行され、Windows on Armデバイス上の同じプロセス内でエミュレーション下で実行されているx64コードと相互運用可能です。Arm64ECの概要を参照してください。

利用可能なすべてのビルドオプションの説明については、python tools/ci_build/build.py --helpを実行してください。

Windows(ネイティブx86-64またはネイティブArm64)

Section titled “Windows(ネイティブx86-64またはネイティブArm64)”
.\build.bat --use_qnn --qnn_home [QNN_SDK_PATH] --build_shared_lib --build_wheel --cmake_generator "Visual Studio 17 2022" --config Release --parallel --skip_tests --build_dir build\Windows

注:

  • すべてのQualcommバックエンド(HTPなど)が、ネイティブx86-64ビルドでのモデル実行でサポートされているわけではありません。詳細については、Qualcomm SDKバックエンドドキュメントを参照してください。
  • Qualcommバックエンドがx86-64での実行をサポートしていない場合でも、QNN実行プロバイダーはQualcommバックエンド用のコンパイル済みモデルを生成できる場合があります。

Windows(Arm64クロスコンパイルターゲット)

Section titled “Windows(Arm64クロスコンパイルターゲット)”
.\build.bat --arm64 --use_qnn --qnn_home [QNN_SDK_PATH] --build_shared_lib --build_wheel --cmake_generator "Visual Studio 17 2022" --config Release --parallel --build_dir build\Windows

Windows(Arm64ECクロスコンパイルターゲット)

Section titled “Windows(Arm64ECクロスコンパイルターゲット)”
.\build.bat --arm64ec --use_qnn --qnn_home [QNN_SDK_PATH] --build_shared_lib --build_wheel --cmake_generator "Visual Studio 17 2022" --config Release --parallel --build_dir build\Windows

Windows(Arm64Xクロスコンパイルターゲット)

Section titled “Windows(Arm64Xクロスコンパイルターゲット)”

build_arm64x.batスクリプトを使用して、Arm64Xバイナリをビルドします。Arm64XバイナリはArm64とArm64ECの両方のコードをバンドルしているため、Arm64XはWindows on Armデバイス上のArm64とArm64ECの両方のプロセスと互換性があります。Arm64X PEファイルの概要を参照してください。

.\build_arm64x.bat --use_qnn --qnn_home [QNN_SDK_PATH] --build_shared_lib --cmake_generator "Visual Studio 17 2022" --config Release --parallel

注:

  • build_arm64x.batは特定のビルドディレクトリを設定するため、--build_dirオプションは指定しないでください。
  • 上記のコマンドは、Arm64Xバイナリを.\build\arm64ec-x\Release\Release\ディレクトリに配置します。
./build.sh --use_qnn --qnn_home [QNN_SDK_PATH] --build_shared_lib --build_wheel --config Release --parallel --skip_tests --build_dir build/Linux

Android用OnnxRuntimeのビルドを参照してください。

# Windowsの場合
.\build.bat --build_shared_lib --android --config Release --parallel --use_qnn static_lib --qnn_home [QNN_SDK_PATH] --android_sdk_path [android_SDK path] --android_ndk_path [android_NDK path] --android_abi arm64-v8a --android_api [api-version] --cmake_generator Ninja --build_dir build\Android
# Linuxの場合
./build.sh --build_shared_lib --android --config Release --parallel --use_qnn static_lib --qnn_home [QNN_SDK_PATH] --android_sdk_path [android_SDK path] --android_ndk_path [android_NDK path] --android_abi arm64-v8a --android_api [api-version] --cmake_generator Ninja --build_dir build/Android

DirectML実行プロバイダーの詳細については、こちらを参照してください。

.\build.bat --use_dml

DirectML実行プロバイダーは、x64とx86の両方のアーキテクチャのビルドをサポートしています。DirectMLはWindowsでのみサポートされています。


ACL実行プロバイダーの詳細については、こちらを参照してください。

まず、ドキュメントに記載されているように、プラットフォーム用にArm Compute Library 24.07をビルドする必要があります。 Arm®ベースのデバイス用のビルドについては、こちらを参照してください。

ACL実行プロバイダーを有効にするには、build.shに次のオプションを追加します。

--use_acl --acl_home=/path/to/ComputeLibrary --acl_libs=/path/to/ComputeLibrary/build

Arm NN実行プロバイダーの詳細については、こちらを参照してください。

  • サポートされているバックエンド:i.MX8QM Armv8 CPU
  • サポートされているBSP:i.MX8QM BSP
    • i.MX8QM BSPのインストール:source fsl-imx-xwayland-glibc-x86_64-fsl-image-qt5-aarch64-toolchain-4*.sh
  • ビルド環境の設定
Terminal window
source /opt/fsl-imx-xwayland/4.*/environment-setup-aarch64-poky-linux
alias cmake="/usr/bin/cmake -DCMAKE_TOOLCHAIN_FILE=$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmake"
  • Armベースのデバイス用のビルドについては、こちらを参照してください。
Terminal window
./build.sh --use_armnn

Relu演算子は、パフォーマンスを向上させるために、デフォルトでCPU実行プロバイダーを使用するように設定されています。Arm NNの実装を使用するには、—armnn_reluフラグを付けてビルドします。

Terminal window
./build.sh --use_armnn --armnn_relu

Batch Normalization演算子は、デフォルトでCPU実行プロバイダーを使用するように設定されています。Arm NNの実装を使用するには、—armnn_bnフラグを付けてビルドします。

Terminal window
./build.sh --use_armnn --armnn_bn

通常の環境外のライブラリを使用するには、—armnn_homeおよび—armnn_libsパラメータを指定してカスタムパスを設定し、それぞれArm NNホームディレクトリとビルドディレクトリへのパスを定義できます。 Arm Compute Libraryのホームディレクトリとビルドディレクトリも利用可能である必要があり、必要に応じてそれぞれ—acl_homeと—acl_libsを使用して指定できます。

Terminal window
./build.sh --use_armnn --armnn_home /path/to/armnn --armnn_libs /path/to/armnn/build --acl_home /path/to/ComputeLibrary --acl_libs /path/to/acl/build

RKNPU実行プロバイダーの詳細については、こちらを参照してください。

  • サポートされているプラットフォーム:RK1808 Linux
  • Armベースのデバイス用のビルドについては、こちらを参照してください。
  • gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihfの代わりにgcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnuを使用し、tool.cmakeでCMAKE_CXX_COMPILERとCMAKE_C_COMPILERを変更します。
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
  1. rknpu_ddkを任意のディレクトリにダウンロードします。

  2. ONNX Runtimeライブラリとテストをビルドします。

    Terminal window
    ./build.sh --arm --use_rknpu --parallel --build_shared_lib --build_dir build_arm --config MinSizeRel --cmake_extra_defines RKNPU_DDK_PATH=<Path To rknpu_ddk> CMAKE_TOOLCHAIN_FILE=<Path To tool.cmake> ONNX_CUSTOM_PROTOC_EXECUTABLE=<Path To protoc>
  3. ONNXランタイムとlibrknpu_ddk.soをRK1808ボードにデプロイします。

    Terminal window
    libonnxruntime.so.1.2.0
    onnxruntime_test_all
    rknpu_ddk/lib64/librknpu_ddk.so

Vitis AI実行プロバイダーの詳細については、こちらを参照してください。

Visual Studio Developer Command PromptまたはDeveloper PowerShellから、次のコマンドを実行します。

.\build.bat --use_vitisai --build_shared_lib --parallel --config Release

Python APIを活用したい場合は、--build_wheelフラグを含めてください。

.\build.bat --use_vitisai --build_shared_lib --parallel --config Release --build_wheel

cmake_extra_definesパラメータを介してCMAKE_INSTALL_PREFIXを指定することで、インストール場所をオーバーライドすることもできます。 例:

.\build.bat --use_vitisai --build_shared_lib --parallel --config Release --cmake_extra_defines CMAKE_INSTALL_PREFIX=D:\onnxruntime

現在、LinuxのサポートはAMD Adapable SoCでのみ有効になっています。SoCターゲットについては、こちらのガイダンスを参照してください。


MIGraphX実行プロバイダーの詳細については、こちらを参照してください。

  • ROCmをインストールします。
    • ONNX Runtime用のMIGraphX実行プロバイダーは、ROCm6.3.1でビルドおよびテストされています。
  • MIGraphXをインストールします。
    • MIGraphXのインストールパスは、--migraphx_homeパラメータで指定する必要があります。
Terminal window
./build.sh --config <Release|Debug|RelWithDebInfo> --parallel --use_migraphx --migraphx_home <MIGraphXホームへのパス>

Dockerfileの手順はこちらで入手できます。

./build.sh --config Release --build_wheel --parallel --use_migraphx --migraphx_home /opt/rocm

その後、pythonホイール(*.whl)は./build/Linux/Release/distにあります。


ROCm実行プロバイダーの詳細については、こちらを参照してください。

  • ROCmをインストールします。
    • ONNX Runtime用のROCm実行プロバイダーは、ROCm6.3.1でビルドおよびテストされています。
Terminal window
./build.sh --config <Release|Debug|RelWithDebInfo> --parallel --use_rocm --rocm_home <ROCmホームへのパス>

Dockerfileの手順はこちらで入手できます。

./build.sh --config Release --build_wheel --parallel --use_rocm --rocm_home /opt/rocm

その後、pythonホイール(*.whl)は./build/Linux/Release/distにあります。


AndroidプラットフォームでのNNAPIの使用は、NNAPI実行プロバイダー(EP)を介して行われます。

詳細については、NNAPI実行プロバイダーのドキュメントを参照してください。

Android用のビルド済みONNX Runtime Mobileパッケージには、NNAPI EPが含まれています。

ONNX Runtimeのカスタムビルドを実行する場合、NNAPI EPまたはCoreML EPのサポートをビルド時に有効にする必要があります。

NNAPI EPをサポートする最小ビルドの作成

Section titled “NNAPI EPをサポートする最小ビルドの作成”

ビルドに必要なAndroid環境の設定については、こちらの手順を参照してください。Androidビルドは、WindowsまたはLinuxでクロスコンパイルできます。

必要なすべてのコンポーネントをセットアップしたら、カスタムビルドの作成の手順に従いますが、次の変更を加えます。

  • NNAPI EPで必要な、ランタイムで動的にカーネルを作成する実行プロバイダーのサポートを有効にするには、--minimal_build--minimal_build extendedに置き換えます。
  • ビルドにNNAPI EPを含めるには、--use_nnapiを追加します。

NNAPI EPを有効にしたビルドコマンドの例

Section titled “NNAPI EPを有効にしたビルドコマンドの例”

Windowsの例:

<ONNX Runtimeリポジトリルート>.\build.bat --config MinSizeRel --android --android_sdk_path D:\Android --android_ndk_path D:\Android\ndk\21.1.6352462\ --android_abi arm64-v8a --android_api 29 --cmake_generator Ninja --minimal_build extended --use_nnapi --disable_ml_ops --disable_exceptions --build_shared_lib --skip_tests --include_ops_by_config <モデル変換からの構成ファイル>

Linuxの例:

Terminal window
<ONNX Runtimeリポジトリルート>./build.sh --config MinSizeRel --android --android_sdk_path /Android --android_ndk_path /Android/ndk/21.1.6352462/ --android_abi arm64-v8a --android_api 29 --minimal_build extended --use_nnapi --disable_ml_ops --disable_exceptions --build_shared_lib --skip_tests --include_ops_by_config <モデル変換からの構成ファイル>`

iOSおよびmacOSプラットフォームでのCoreMLの使用は、CoreML EPを介して行われます。

詳細については、CoreML実行プロバイダーのドキュメントを参照してください。

iOS用のビルド済みONNX Runtime Mobileパッケージには、CoreML EPが含まれています。

CoreML EPをサポートする最小ビルドの作成

Section titled “CoreML EPをサポートする最小ビルドの作成”

ビルドに必要なiOS環境の設定については、こちらの手順を参照してください。iOS/macOSのビルドは、Macマシンで実行する必要があります。

必要なすべてのコンポーネントをセットアップしたら、カスタムビルドの作成の手順に従いますが、次の変更を加えます。

  • CoreML EPで必要な、ランタイムで動的にカーネルを作成する実行プロバイダーのサポートを有効にするには、--minimal_build--minimal_build extendedに置き換えます。
  • ビルドにCoreML EPを含めるには、--use_coremlを追加します。

Android/iOS/Windows/LinuxプラットフォームでのXNNPACKの使用は、XNNPACK EPを介して行われます。

詳細については、XNNPACK実行プロバイダーのドキュメントを参照してください。

Android用のビルド済みONNX Runtimeパッケージ(onnxruntime-android)には、XNNPACK EPが含まれています。

iOS用のビルド済みONNX Runtime Mobileパッケージ、CocoaPodsonnxruntime-cおよびonnxruntime-objcには、XNNPACK EPが含まれています。(XNNPACKを含むパッケージonnxruntime-objcは1.14以降で利用可能になります。)

ONNX Runtimeのカスタムビルドを実行する場合、XNNPACK EPのサポートをビルド時に有効にする必要があります。

XNNPACK EPをサポートする最小ビルドの作成

Section titled “XNNPACK EPをサポートする最小ビルドの作成”

ビルドに必要なAndroid環境の設定については、こちらの手順を参照してください。Androidビルドは、WindowsまたはLinuxでクロスコンパイルできます。

必要なすべてのコンポーネントをセットアップしたら、カスタムビルドの作成の手順に従いますが、次の変更を加えます。

  • XNNPACK EPで必要な、ランタイムで動的にカーネルを作成する実行プロバイダーのサポートを有効にするには、--minimal_build--minimal_build extendedに置き換えます。
  • ビルドにXNNPACK EPを含めるには、--use_xnnpackを追加します。
XNNPACK EPを有効にしたビルドコマンドの例
Section titled “XNNPACK EPを有効にしたビルドコマンドの例”

Windowsの例:

Terminal window
<ONNX Runtimeリポジトリルート>.\build.bat --config MinSizeRel --android --android_sdk_path D:\Android --android_ndk_path D:\Android\ndk\21.1.6352462\ --android_abi arm64-v8a --android_api 29 --cmake_generator Ninja --minimal_build extended --use_xnnpack --disable_ml_ops --disable_exceptions --build_shared_lib --skip_tests --include_ops_by_config <モデル変換からの構成ファイル>

Linuxの例:

Terminal window
<ONNX Runtimeリポジトリルート>./build.sh --config MinSizeRel --android --android_sdk_path /Android --android_ndk_path /Android/ndk/21.1.6352462/ --android_abi arm64-v8a --android_api 29 --minimal_build extended --use_xnnpack --disable_ml_ops --disable_exceptions --build_shared_lib --skip_tests --include_ops_by_config <モデル変換からの構成ファイル>`

MINIMALビルドを気にしない場合は、次のコマンドを使用してAndroid用のXNNPACK EPをビルドできます。 Linuxの例:

Terminal window
./build.sh --cmake_generator "Ninja" --android --android_sdk_path /Android --android_ndk_path /Android/ndk/21.1.6352462/ --android_abi arm64-v8a --android_api 29 --use_xnnpack

iOS用ビルド(1.14以降で利用可能)

Section titled “iOS用ビルド(1.14以降で利用可能)”

iOS用のパッケージをビルドするには、Macマシンが必要です。まず、このガイドに従って環境を設定してください。

XNNPACK EPをサポートする最小ビルドの作成

Section titled “XNNPACK EPをサポートする最小ビルドの作成”

必要なすべてのコンポーネントをセットアップしたら、カスタムビルドの作成の手順に従いますが、次の変更を加えます。

  • XNNPACK EPで必要な、ランタイムで動的にカーネルを作成する実行プロバイダーのサポートを有効にするには、--minimal_build--minimal_build extendedに置き換えます。
  • ビルドにXNNPACK EPを含めるには、--use_xnnpackを追加します。
<ONNX Runtimeリポジトリルート>./build.sh --config <Release|Debug|RelWithDebInfo|MinSizeRel> --use_xcode \
--ios --ios_sysroot iphoneos --osx_arch arm64 --apple_deploy_target <最小iOSバージョン> --use_xnnpack --minimal_build extended --disable_ml_ops --disable_exceptions --build_shared_lib --skip_tests --include_ops_by_config <モデル変換からの構成ファイル>
<ONNX Runtimeリポジトリルート>.\build.bat --config <Release|Debug|RelWithDebInfo> --use_xnnpack
Terminal window
<ONNX Runtimeリポジトリルート>./build.sh --config <Release|Debug|RelWithDebInfo> --use_xnnpack

CANN実行プロバイダーの詳細については、こちらを参照してください。

  1. 詳細な手順については、ドキュメントに従って、適切なOSとターゲットハードウェア用のCANNツールキットをインストールしてください。

  2. 以下に示すようにスクリプトを実行して、CANN環境を初期化します。

    Terminal window
    # デフォルトパス、必要に応じて変更してください。
    source /usr/local/Ascend/ascend-toolkit/set_env.sh
Terminal window
./build.sh --config <Release|Debug|RelWithDebInfo> --build_shared_lib --parallel --use_cann
  • CANN実行プロバイダーは、x64とaarch64の両方のアーキテクチャのビルドをサポートしています。
  • CANN実行プロバイダーは現在、Linuxでのみサポートされています。

詳細については、Azure実行プロバイダーのドキュメントを参照してください。

Linuxの場合、ビルドする前に:

  • openssl devパッケージをシステムにインストールしてください。redhatの場合はopenssl-dev、ubuntuの場合はlibssl-devです。
  • システムに複数のopenssl devバージョンがインストールされている場合は、環境変数「OPENSSL_ROOT_DIR」を目的のバージョンに設定してください。例:
set OPENSSL_ROOT_DIR=/usr/local/ssl3.x/
build.bat --config <Release|Debug|RelWithDebInfo> --build_shared_lib --build_wheel --use_azure
Terminal window
./build.sh --config <Release|Debug|RelWithDebInfo> --build_shared_lib --build_wheel --use_azure