类 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://runtime.onnx.org.cn/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 - 如果本地代码出错。