類 OrtSession.SessionOptions

  • 所有已實現的介面
    java.lang.AutoCloseable
    封閉類
    OrtSession

    public static class OrtSession.SessionOptions
    extends java.lang.Object
    implements java.lang.AutoCloseable
    表示用於構造此會話的選項。

    用於設定執行緒數、最佳化級別、計算後端和其他選項。

    在會話構造後修改此物件無效。

    在所有使用此 SessionOptions 物件的會話關閉之前,不得關閉此物件,否則可能會釋放正在使用的資源。

    • 建構函式摘要

      建構函式 
      建構函式 描述
      SessionOptions()
      建立空的會話選項。
    • 方法摘要

      所有方法 例項方法 具體方法 
      修飾符和型別 方法 描述
      void addACL​(boolean enableFastMath)
      新增 ARM Compute Library 作為執行後端。
      void addArmNN​(boolean useArena)
      新增 ARM Neural Net Library 作為執行後端。
      void addConfigEntry​(java.lang.String configKey, java.lang.String configValue)
      新增一個會話配置項,以字串對的形式。
      void addCoreML()
      新增 Apple 的 CoreML 作為執行後端。
      void addCoreML​(java.util.EnumSet<CoreMLFlags> flags)
      新增 Apple 的 CoreML 作為執行後端。
      void addCoreML​(java.util.Map<java.lang.String,​java.lang.String> providerOptions)
      新增 CoreML 作為執行後端。
      void addCPU​(boolean useArena)
      新增 CPU 作為執行後端,如果需要,使用 Arena 分配器。
      void addCUDA()
      新增 CUDA 作為執行後端,使用裝置 0。
      void addCUDA​(int deviceNum)
      新增 CUDA 作為執行後端,使用指定的 CUDA 裝置 ID。
      void addCUDA​(OrtCUDAProviderOptions cudaOpts)
      新增 CUDA 作為執行後端,使用指定的 CUDA 選項。
      void addDirectML​(int deviceId)
      新增 DirectML 作為執行後端。
      void addDnnl​(boolean useArena)
      新增 Intel 的 Deep Neural Network Library 作為執行後端。
      void addExternalInitializers​(java.util.Map<java.lang.String,​OnnxTensorLike> initializers)
      新增提供的外部載入的初始化器。
      void addInitializer​(java.lang.String name, OnnxTensorLike initializer)
      新增一個初始化器以覆蓋 ONNX 模型中的初始化器。
      void addNnapi()
      新增 Android 的 NNAPI 作為執行後端。
      void addNnapi​(java.util.EnumSet<NNAPIFlags> flags)
      新增 Android 的 NNAPI 作為執行後端。
      void addOpenVINO​(java.lang.String deviceId)
      新增 OpenVINO 作為執行後端。
      void addQnn​(java.util.Map<java.lang.String,​java.lang.String> providerOptions)
      新增 QNN 作為執行後端。
      void addROCM()
      新增 ROCM 作為執行後端,使用裝置 0。
      void addROCM​(int deviceNum)
      新增 ROCM 作為執行後端,使用指定的 ROCM 裝置 ID。
      void addTensorrt​(int deviceNum)
      新增 Nvidia 的 TensorRT 作為執行後端。
      void addTensorrt​(OrtTensorRTProviderOptions tensorRTOpts)
      新增 Nvidia 的 TensorRT 作為執行後端。
      void addTvm​(java.lang.String settings)
      新增 TVM 作為執行後端。
      void addWebGPU​(java.util.Map<java.lang.String,​java.lang.String> providerOptions)
      新增 WebGPU 作為執行後端。
      void addXnnpack​(java.util.Map<java.lang.String,​java.lang.String> providerOptions)
      新增 XNNPACK 作為執行後端。
      void close()
      關閉會話選項,釋放佔用的記憶體。
      void disablePerSessionThreads()
      停用按會話劃分的執行緒池。
      void disableProfiling()
      在使用此 SessionOptions 的會話中停用效能分析。
      void enableProfiling​(java.lang.String filePath)
      在使用此 SessionOptions 的會話中啟用效能分析。
      java.util.Map<java.lang.String,​java.lang.String> getConfigEntries()
      返回包含所有會話配置項的 Map 的不可修改檢視。
      void registerCustomOpLibrary​(java.lang.String path)
      註冊一個自定義操作庫,供使用此 SessionOptions 的 OrtSession 使用。
      void registerCustomOpsUsingFunction​(java.lang.String registrationFuncName)
      透過呼叫指定的本地函式名,註冊自定義操作,供使用此 SessionOptions 的 OrtSession 使用。
      void setCPUArenaAllocator​(boolean useArena)
      設定 CPU 使用 Arena 記憶體分配器。
      void setDeterministicCompute​(boolean value)
      設定是否使用確定性計算。
      void setExecutionMode​(OrtSession.SessionOptions.ExecutionMode mode)
      設定此選項物件的執行模式,覆蓋舊設定。
      void setInterOpNumThreads​(int numThreads)
      如果在 CPU 上執行,設定用於併發執行多個請求的 CPU 執行緒池大小。
      void setIntraOpNumThreads​(int numThreads)
      如果在 CPU 上執行,設定用於執行單個圖的 CPU 執行緒池大小。
      void setLoggerId​(java.lang.String loggerId)
      設定要使用的日誌記錄器 ID。
      void setMemoryPatternOptimization​(boolean memoryPatternOptimization)
      開啟記憶體模式最佳化,如果所有形狀已知,則預先分配記憶體。
      void setOptimizationLevel​(OrtSession.SessionOptions.OptLevel level)
      設定此選項物件的最佳化級別,覆蓋舊設定。
      void setOptimizedModelFilePath​(java.lang.String outputPath)
      設定最佳化模型的輸出路徑。
      void setSessionLogLevel​(OrtLoggingLevel logLevel)
      設定會話的日誌記錄級別。
      void setSessionLogVerbosityLevel​(int logLevel)
      設定會話的日誌記錄詳細級別。
      void setSymbolicDimensionValue​(java.lang.String dimensionName, long dimensionValue)
      設定符號維度的值。
      • 從類 java.lang.Object 繼承的方法

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 建構函式詳細資訊

      • SessionOptions

        public SessionOptions()
        建立空的會話選項。
    • 方法詳細資訊

      • close

        public void close()
        關閉會話選項,釋放佔用的記憶體。
        由...指定
        close 在介面 java.lang.AutoCloseable
      • setInterOpNumThreads

        public void setInterOpNumThreads​(int numThreads)
                                  throws OrtException
        如果在 CPU 上執行,設定用於併發執行多個請求的 CPU 執行緒池大小。
        引數
        numThreads - 要使用的執行緒數。
        丟擲
        OrtException - 如果原生代碼出錯。
      • setIntraOpNumThreads

        public void setIntraOpNumThreads​(int numThreads)
                                  throws OrtException
        如果在 CPU 上執行,設定用於執行單個圖的 CPU 執行緒池大小。
        引數
        numThreads - 要使用的執行緒數。
        丟擲
        OrtException - 如果原生代碼出錯。
      • setOptimizedModelFilePath

        public void setOptimizedModelFilePath​(java.lang.String outputPath)
                                       throws OrtException
        設定最佳化模型的輸出路徑。
        引數
        outputPath - 將模型寫入的輸出路徑。
        丟擲
        OrtException - 如果原生代碼出錯。
      • setLoggerId

        public void setLoggerId​(java.lang.String loggerId)
                         throws OrtException
        設定要使用的日誌記錄器 ID。
        引數
        loggerId - 日誌記錄器 ID 字串。
        丟擲
        OrtException - 如果原生代碼出錯。
      • enableProfiling

        public void enableProfiling​(java.lang.String filePath)
                             throws OrtException
        在使用此 SessionOptions 的會話中啟用效能分析。
        引數
        filePath - 寫入效能分析資訊的檔案。
        丟擲
        OrtException - 如果原生代碼出錯。
      • disableProfiling

        public void disableProfiling()
                              throws OrtException
        在使用此 SessionOptions 的會話中停用效能分析。
        丟擲
        OrtException - 如果原生代碼出錯。
      • setMemoryPatternOptimization

        public void setMemoryPatternOptimization​(boolean memoryPatternOptimization)
                                          throws OrtException
        開啟記憶體模式最佳化,如果所有形狀已知,則預先分配記憶體。
        引數
        memoryPatternOptimization - 如果為 true,啟用記憶體模式最佳化。
        丟擲
        OrtException - 如果原生代碼出錯。
      • setCPUArenaAllocator

        public void setCPUArenaAllocator​(boolean useArena)
                                  throws OrtException
        設定 CPU 使用 Arena 記憶體分配器。
        引數
        useArena - 如果為 true,為 CPU 執行提供程式使用 Arena 記憶體分配器。
        丟擲
        OrtException - 如果原生代碼出錯。
      • setSessionLogLevel

        public void setSessionLogLevel​(OrtLoggingLevel logLevel)
                                throws OrtException
        設定會話的日誌記錄級別。
        引數
        logLevel - 要使用的日誌記錄級別。
        丟擲
        OrtException - 如果原生代碼出錯。
      • setSessionLogVerbosityLevel

        public void setSessionLogVerbosityLevel​(int logLevel)
                                         throws OrtException
        設定會話的日誌記錄詳細級別。
        引數
        logLevel - 要使用的日誌記錄詳細級別。
        丟擲
        OrtException - 如果原生代碼出錯。
      • registerCustomOpLibrary

        public void registerCustomOpLibrary​(java.lang.String path)
                                     throws OrtException
        註冊一個自定義操作庫,供使用此 SessionOptions 的 OrtSession 使用。
        引數
        path - 磁碟上庫的路徑。
        丟擲
        OrtException - 如果載入庫出錯。
      • registerCustomOpsUsingFunction

        public void registerCustomOpsUsingFunction​(java.lang.String registrationFuncName)
                                            throws OrtException
        透過呼叫指定的本地函式名,註冊自定義操作,供使用此 SessionOptions 的 OrtSession 使用。自定義操作庫必須已連結或由使用者事先載入。

        註冊函式必須具有以下簽名:

         OrtStatus* (*fn)(OrtSessionOptions* options, const OrtApiBase* api);

        有關自定義操作的更多資訊,請參閱 https://onnxruntime.llms.tw/docs/reference/operators/add-custom-op.html。自定義操作庫註冊函式的示例請參閱 https://github.com/microsoft/onnxruntime/blob/342a5bf2b756d1a1fc6fdc582cfeac15182632fe/onnxruntime/test/testdata/custom_op_library/custom_op_library.cc#L115。

        引數
        registrationFuncName - 要呼叫的註冊函式的名稱。
        丟擲
        OrtException - 如果查詢或呼叫註冊函數出錯。
      • setSymbolicDimensionValue

        public void setSymbolicDimensionValue​(java.lang.String dimensionName,
                                              long dimensionValue)
                                       throws OrtException
        設定符號維度的值。固定維度計算可以應用更多的最佳化。
        引數
        dimensionName - 符號維度的名稱。
        dimensionValue - 要將該維度設定的值。
        丟擲
        OrtException - 如果原生代碼出錯。
      • setDeterministicCompute

        public void setDeterministicCompute​(boolean value)
                                     throws OrtException
        設定是否使用確定性計算。

        預設為 false。如果設定為 true,這將盡可能為 GPU 核心啟用確定性計算。請注意,這很可能會帶來效能損失。

        引數
        value - 計算是否應該是確定性的?
        丟擲
        OrtException - 如果原生代碼出錯。
      • disablePerSessionThreads

        public void disablePerSessionThreads()
                                      throws OrtException
        停用按會話劃分的執行緒池。必須與包含全域性執行緒池的環境結合使用。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addConfigEntry

        public void addConfigEntry​(java.lang.String configKey,
                                   java.lang.String configValue)
                            throws OrtException
        新增一個會話配置項,以字串對的形式。
        引數
        configKey - 配置鍵字串。
        configValue - 配置值字串。
        丟擲
        OrtException - 如果原生代碼出錯。
      • getConfigEntries

        public java.util.Map<java.lang.String,​java.lang.String> getConfigEntries()
        返回包含所有會話配置項的 Map 的不可修改檢視。
        返回
        所有會話配置項
      • addExternalInitializers

        public void addExternalInitializers​(java.util.Map<java.lang.String,​OnnxTensorLike> initializers)
                                     throws OrtException
        新增提供的外部載入的初始化器。

        請注意,一旦會話建立,初始化器就會被複制到會話中,並且原生引用會從此 SessionOptions 中移除。會話建立後,這些初始化器可以關閉。這與透過 addInitializer(String, OnnxTensorLike) 新增的初始化器的生命週期不同。初始化器必須從 Buffer 物件建立。

        引數
        initializers - 名稱到初始化器的 Map。
        丟擲
        OrtException - 如果初始化器無法載入。
      • addInitializer

        public void addInitializer​(java.lang.String name,
                                   OnnxTensorLike initializer)
                            throws OrtException
        新增一個初始化器以覆蓋 ONNX 模型中的初始化器。

        請注意,初始化器的生命週期必須長於會話和會話選項。這與透過 addExternalInitializers(Map) 新增的初始化器的生命週期不同。初始化器必須從 Buffer 物件建立。

        引數
        name - 初始化器名稱。
        initializer - 初始化器值。
        丟擲
        OrtException - 如果初始化器無法載入到會話選項中。
      • addCUDA

        public void addCUDA()
                     throws OrtException
        新增 CUDA 作為執行後端,使用裝置 0。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addCUDA

        public void addCUDA​(int deviceNum)
                     throws OrtException
        新增 CUDA 作為執行後端,使用指定的 CUDA 裝置 ID。
        引數
        deviceNum - CUDA 裝置 ID。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addCUDA

        public void addCUDA​(OrtCUDAProviderOptions cudaOpts)
                     throws OrtException
        新增 CUDA 作為執行後端,使用指定的 CUDA 選項。
        引數
        cudaOpts - CUDA 執行提供程式選項。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addROCM

        public void addROCM()
                     throws OrtException
        新增 ROCM 作為執行後端,使用裝置 0。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addROCM

        public void addROCM​(int deviceNum)
                     throws OrtException
        新增 ROCM 作為執行後端,使用指定的 ROCM 裝置 ID。
        引數
        deviceNum - ROCM 裝置 ID。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addCPU

        public void addCPU​(boolean useArena)
                    throws OrtException
        新增 CPU 作為執行後端,如果需要,使用 Arena 分配器。

        預設情況下使用此後端,但如果請求了其他後端,則應最後請求它。

        引數
        useArena - 如果為 true,使用 Arena 記憶體分配器。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addDnnl

        public void addDnnl​(boolean useArena)
                     throws OrtException
        新增 Intel 的 Deep Neural Network Library 作為執行後端。
        引數
        useArena - 如果為 true,使用 Arena 記憶體分配器。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addOpenVINO

        public void addOpenVINO​(java.lang.String deviceId)
                         throws OrtException
        新增 OpenVINO 作為執行後端。
        引數
        deviceId - OpenVINO 執行裝置的 ID。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addTensorrt

        public void addTensorrt​(int deviceNum)
                         throws OrtException
        新增 Nvidia 的 TensorRT 作為執行後端。
        引數
        deviceNum - CUDA 裝置的 ID。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addTensorrt

        public void addTensorrt​(OrtTensorRTProviderOptions tensorRTOpts)
                         throws OrtException
        新增 Nvidia 的 TensorRT 作為執行後端。
        引數
        tensorRTOpts - TensorRT 的配置引數。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addNnapi

        public void addNnapi()
                      throws OrtException
        新增 Android 的 NNAPI 作為執行後端。使用預設的空標誌。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addNnapi

        public void addNnapi​(java.util.EnumSet<NNAPIFlags> flags)
                      throws OrtException
        新增 Android 的 NNAPI 作為執行後端。
        引數
        flags - 控制 NNAPI 配置的標誌。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addTvm

        public void addTvm​(java.lang.String settings)
                    throws OrtException
        新增 TVM 作為執行後端。
        引數
        settings - 有效設定字串請參閱文件。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addDirectML

        public void addDirectML​(int deviceId)
                         throws OrtException
        新增 DirectML 作為執行後端。
        引數
        deviceId - DirectML 裝置的 ID。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addACL

        public void addACL​(boolean enableFastMath)
                    throws OrtException
        新增 ARM Compute Library 作為執行後端。
        引數
        enableFastMath - 在 ACL 中啟用快速數學模式。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addArmNN

        public void addArmNN​(boolean useArena)
                      throws OrtException
        新增 ARM Neural Net Library 作為執行後端。
        引數
        useArena - 如果為 true,使用 Arena 記憶體分配器。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addCoreML

        public void addCoreML()
                       throws OrtException
        新增 Apple 的 CoreML 作為執行後端。使用預設的空標誌。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addCoreML

        public void addCoreML​(java.util.EnumSet<CoreMLFlags> flags)
                       throws OrtException
        新增 Apple 的 CoreML 作為執行後端。
        引數
        flags - 控制 CoreML 配置的標誌。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addXnnpack

        public void addXnnpack​(java.util.Map<java.lang.String,​java.lang.String> providerOptions)
                        throws OrtException
        新增 XNNPACK 作為執行後端。
        引數
        providerOptions - XNNPACK 後端的配置選項。請參閱 XNNPACK 執行提供程式的文件。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addQnn

        public void addQnn​(java.util.Map<java.lang.String,​java.lang.String> providerOptions)
                    throws OrtException
        新增 QNN 作為執行後端。
        引數
        providerOptions - QNN 後端的配置選項。請參閱 QNN 執行提供程式的文件。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addCoreML

        public void addCoreML​(java.util.Map<java.lang.String,​java.lang.String> providerOptions)
                       throws OrtException
        新增 CoreML 作為執行後端。
        引數
        providerOptions - CoreML 後端的配置選項。請參閱 CoreML 執行提供程式的文件。
        丟擲
        OrtException - 如果原生代碼出錯。
      • addWebGPU

        public void addWebGPU​(java.util.Map<java.lang.String,​java.lang.String> providerOptions)
                       throws OrtException
        新增 WebGPU 作為執行後端。
        引數
        providerOptions - WebGPU 後端的配置選項。請參閱 WebGPU 執行提供程式的文件。
        丟擲
        OrtException - 如果原生代碼出錯。