程序包 ai.onnxruntime
类 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表示用于构建此会话的选项。用于设置线程数、优化级别、计算后端和其他选项。
执行提供程序添加到选项实例的顺序,即为它们在算子节点分配时被考虑的顺序,最先添加的 EP 具有优先权。CPU EP 是后备选项,默认会自动添加。
在会话构建完成后修改此选项将不会产生任何影响。
SessionOptions 对象在所有使用它的会话关闭之前不得关闭,否则它可能会释放正在使用的资源。
-
-
嵌套类概要
嵌套类 限定符和类型 类 描述 static classOrtSession.SessionOptions.ExecutionMode要使用的执行模式。static classOrtSession.SessionOptions.OptLevel要使用的优化级别。
-
构造函数概要
构造函数 构造函数 描述 SessionOptions()创建一个空的会话选项。
-
方法概要
所有方法 实例方法 具体方法 限定符和类型 方法 描述 voidaddACL(boolean enableFastMath)将 ARM 计算库 (ARM Compute Library) 添加为执行后端。voidaddConfigEntry(java.lang.String configKey, java.lang.String configValue)以字符串对的形式添加单个会话配置条目。voidaddCoreML()将 Apple 的 CoreML 添加为执行后端。voidaddCoreML(java.util.EnumSet<CoreMLFlags> flags)将 Apple 的 CoreML 添加为执行后端。voidaddCoreML(java.util.Map<java.lang.String,java.lang.String> providerOptions)将 CoreML 添加为执行后端。voidaddCPU(boolean useArena)将 CPU 添加为执行后端,并在需要时使用内存池分配器 (arena allocator)。voidaddCUDA()添加 CUDA 作为执行后端,使用设备 0。voidaddCUDA(int deviceNum)添加 CUDA 作为执行后端,使用指定的 CUDA 设备 ID。voidaddCUDA(OrtCUDAProviderOptions cudaOpts)添加 CUDA 作为执行后端,使用指定的 CUDA 选项。voidaddDirectML(int deviceId)将 DirectML 添加为执行后端。voidaddDnnl(boolean useArena)将 Intel 的深度神经网络库 (Dnnl) 添加为执行后端。voidaddExecutionProvider(java.util.List<OrtEpDevice> devices, java.util.Map<java.lang.String,java.lang.String> providerOptions)将指定的执行提供程序和设备元组添加为执行后端。voidaddExternalInitializers(java.util.Map<java.lang.String,OnnxTensorLike> initializers)添加提供的外部加载的初始化器。voidaddInitializer(java.lang.String name, OnnxTensorLike initializer)添加一个初始化器以覆盖 ONNX 模型中的同名初始化器。voidaddNnapi()将 Android 的 NNAPI 添加为执行后端。voidaddNnapi(java.util.EnumSet<NNAPIFlags> flags)将 Android 的 NNAPI 添加为执行后端。voidaddOpenVINO(java.lang.String deviceId)将 OpenVINO 添加为执行后端。voidaddQnn(java.util.Map<java.lang.String,java.lang.String> providerOptions)将 QNN 添加为执行后端。voidaddROCM()添加 ROCM 作为执行后端,使用设备 0。voidaddROCM(int deviceNum)添加 ROCM 作为执行后端,使用指定的 ROCM 设备 ID。voidaddTensorrt(int deviceNum)将 Nvidia 的 TensorRT 添加为执行后端。voidaddTensorrt(OrtTensorRTProviderOptions tensorRTOpts)将 Nvidia 的 TensorRT 添加为执行后端。voidaddTvm(java.lang.String settings)将 TVM 添加为执行后端。voidaddWebGPU(java.util.Map<java.lang.String,java.lang.String> providerOptions)将 WebGPU 添加为执行后端。voidaddXnnpack(java.util.Map<java.lang.String,java.lang.String> providerOptions)将 XNNPACK 添加为执行后端。voidclose()关闭会话选项,释放已获取的任何内存。voiddisablePerSessionThreads()禁用每个会话的线程池。voiddisableProfiling()禁用使用此 SessionOptions 的会话中的性能分析 (profiling)。voidenableProfiling(java.lang.String filePath)启用使用此 SessionOptions 的会话中的性能分析。java.util.Map<java.lang.String,java.lang.String>getConfigEntries()返回一个包含所有会话配置条目的不可修改的映射视图。voidregisterCustomOpLibrary(java.lang.String path)注册一个自定义算子库,供使用此 SessionOptions 的OrtSession使用。voidregisterCustomOpsUsingFunction(java.lang.String registrationFuncName)通过调用指定的原生函数名,注册供使用此 SessionOptions 的OrtSession使用的自定义算子。voidsetCPUArenaAllocator(boolean useArena)设置 CPU 使用内存池分配器。voidsetDeterministicCompute(boolean value)设置是否使用确定性计算。voidsetExecutionMode(OrtSession.SessionOptions.ExecutionMode mode)设置此选项对象的执行模式,覆盖旧设置。voidsetInterOpNumThreads(int numThreads)如果是在 CPU 上执行,设置用于并发执行多个请求的 CPU 线程池大小。voidsetIntraOpNumThreads(int numThreads)如果是在 CPU 上执行,设置用于执行单个计算图的 CPU 线程池大小。voidsetLoggerId(java.lang.String loggerId)设置要使用的记录器 ID。voidsetMemoryPatternOptimization(boolean memoryPatternOptimization)开启内存模式优化,如果所有形状已知,则预先分配内存。voidsetOptimizationLevel(OrtSession.SessionOptions.OptLevel level)设置此选项对象的优化级别,覆盖旧设置。voidsetOptimizedModelFilePath(java.lang.String outputPath)设置优化后模型的输出路径。voidsetSessionLogLevel(OrtLoggingLevel logLevel)设置会话的日志记录级别。voidsetSessionLogVerbosityLevel(int logLevel)设置会话的日志详细级别。voidsetSymbolicDimensionValue(java.lang.String dimensionName, long dimensionValue)设置符号维度的值。
-
-
-
方法详细信息
-
close
public void close()
关闭会话选项,释放已获取的任何内存。- 指定者
- 接口
java.lang.AutoCloseable中的close
-
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 的会话中的性能分析 (profiling)。- 抛出
OrtException- 如果本机代码中出现错误。
-
setMemoryPatternOptimization
public void setMemoryPatternOptimization(boolean memoryPatternOptimization) throws OrtException开启内存模式优化,如果所有形状已知,则预先分配内存。- 参数
memoryPatternOptimization- 如果为 true,则启用内存模式优化。- 抛出
OrtException- 如果本机代码中出现错误。
-
setCPUArenaAllocator
public void setCPUArenaAllocator(boolean useArena) throws OrtException设置 CPU 使用内存池分配器。- 参数
useArena- 如果为 true,则为 CPU 执行提供程序使用内存池分配器。- 抛出
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);
- 参数
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()
返回一个包含所有会话配置条目的不可修改的映射视图。- 返回值
- 所有会话配置条目
-
addExternalInitializers
public void addExternalInitializers(java.util.Map<java.lang.String,OnnxTensorLike> initializers) throws OrtException
添加提供的外部加载的初始化器。请注意,初始化器在会话创建后会被复制到会话中,并且原生引用会从该
SessionOptions中移除。会话创建完成后,这些初始化器就可以关闭。这与通过addInitializer(String, OnnxTensorLike)添加的初始化器生命周期不同。初始化器必须由Buffer对象创建。- 参数
initializers- 名称到初始化器的映射。- 抛出
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 allocator)。默认情况下会使用此后端,但如果请求了其他后端,则应最后请求它。
- 参数
useArena- 如果为 true,则使用内存池分配器。- 抛出
OrtException- 如果本机代码中出现错误。
-
addDnnl
public void addDnnl(boolean useArena) throws OrtException将 Intel 的深度神经网络库 (Dnnl) 添加为执行后端。- 参数
useArena- 如果为 true,则使用内存池分配器。- 抛出
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 计算库 (ARM Compute Library) 添加为执行后端。- 参数
enableFastMath- 在 ACL 中启用快速数学模式。- 抛出
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- 如果本机代码中出现错误。
-
addExecutionProvider
public void addExecutionProvider(java.util.List<OrtEpDevice> devices, java.util.Map<java.lang.String,java.lang.String> providerOptions) throws OrtException
将指定的执行提供程序和设备元组添加为执行后端。执行提供程序的优先级按添加顺序排列,即首先添加到会话选项的提供程序将首先用于算子节点分配。
- 参数
devices- EP 和设备元组。每个元素必须使用相同的 EP,尽管它们可以使用不同的设备。providerOptions- 执行提供程序的配置选项。请参考特定执行提供程序的文档。- 抛出
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- 如果本机代码中出现错误。
-
-