类 OrtSession.SessionOptions
- java.lang.Object
-
- ai.onnxruntime.OrtSession.SessionOptions
-
- 所有已实现的接口
java.lang.AutoCloseable
- 封闭类
- OrtSession
public static class OrtSession.SessionOptions extends java.lang.Object implements java.lang.AutoCloseable
表示用于构造此会话的选项。用于设置线程数、优化级别、计算后端和其他选项。
在会话构造后修改此对象无效。
在所有使用此 SessionOptions 对象的会话关闭之前,不得关闭此对象,否则可能会释放正在使用的资源。
-
-
嵌套类摘要
嵌套类 修饰符和类型 类 描述 static class
OrtSession.SessionOptions.ExecutionMode
要使用的执行模式。static class
OrtSession.SessionOptions.OptLevel
要使用的优化级别。
-
构造函数摘要
构造函数 构造函数 描述 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)
设置符号维度的值。
-
-
-
方法详细信息
-
close
public void close()
关闭会话选项,释放占用的内存。- 由...指定
close
在接口java.lang.AutoCloseable
中
-
setExecutionMode
public void setExecutionMode(OrtSession.SessionOptions.ExecutionMode mode) throws OrtException
设置此选项对象的执行模式,覆盖旧设置。- 参数
mode
- 要使用的执行模式。- 抛出
OrtException
- 如果本地代码出错。
-
setOptimizationLevel
public void setOptimizationLevel(OrtSession.SessionOptions.OptLevel level) throws OrtException
设置此选项对象的优化级别,覆盖旧设置。- 参数
level
- 要使用的优化级别。- 抛出
OrtException
- 如果本地代码出错。
-
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
- 如果本地代码出错。
-
-