运行器
模块:polygraphy.backend.onnxrt
- class OnnxrtRunner(sess, name=None)[source]
基类:
BaseRunner
使用 ONNX-Runtime 推理会话运行推理。
- 参数:
sess (Union[onnxruntime.InferenceSession, Callable() -> onnxruntime.InferenceSession]) – ONNX-Runtime 推理会话或返回一个会话的可调用对象。
- infer_impl(feed_dict)[source]
使用 ONNX-Runtime 运行推理的实现。请勿直接调用此方法 - 请改用
infer()
,它会将无法识别的参数转发到此方法。- 参数:
feed_dict (OrderedDict[str, Union[numpy.ndarray, torch.Tensor]]) – 输入张量名称到相应输入 NumPy 数组或 PyTorch 张量的映射。如果在 feed_dict 中提供了 PyTorch 张量,则此函数还将输出作为 PyTorch 张量返回。
- 返回:
输出张量名称到相应输出 NumPy 数组或 PyTorch 张量的映射。
- 返回类型:
OrderedDict[str, Union[numpy.ndarray, torch.Tensor]]
- __enter__()
激活运行器以进行推理。例如,这可能涉及分配 CPU 或 GPU 内存。
- __exit__(exc_type, exc_value, traceback)
停用运行器。例如,这可能涉及释放 CPU 或 GPU 内存。
- activate()
激活运行器以进行推理。例如,这可能涉及分配 CPU 或 GPU 内存。
通常,您应该使用上下文管理器而不是手动激活和停用。例如
with RunnerType(...) as runner: runner.infer(...)
- deactivate()
停用运行器。例如,这可能涉及释放 CPU 或 GPU 内存。
通常,您应该使用上下文管理器而不是手动激活和停用。例如
with RunnerType(...) as runner: runner.infer(...)
- get_input_metadata(use_numpy_dtypes=None)
返回有关模型输入的信息。此处的形状可能包括动态维度,用
None
表示。必须仅在activate()
之后和deactivate()
之前调用。- 参数:
use_numpy_dtypes (bool) – [已弃用] 是否返回 NumPy 数据类型而不是 Polygraphy
DataType
。提供此功能是为了保持向后兼容性。将来,将删除此参数,并且将始终返回 PolygraphyDataType
。这些可以通过调用 numpy() 方法转换为 NumPy 数据类型。默认为 True。- 返回:
输入名称、形状和数据类型。
- 返回类型:
- infer(feed_dict, check_inputs=True, *args, **kwargs)
使用提供的 feed_dict 运行推理。
必须仅在
activate()
之后和deactivate()
之前调用。注意:某些运行器可能会在 infer() 中接受其他参数。有关这些参数的详细信息,请参阅其 infer_impl() 方法的文档。
- 参数:
feed_dict (OrderedDict[str, numpy.ndarray]) – 输入张量名称到相应输入 NumPy 数组的映射。
check_inputs (bool) – 是否检查提供的
feed_dict
是否包含具有预期数据类型和形状的预期输入。禁用此功能可能会提高性能。默认为 True。
- inference_time
运行推理所需的时间(以秒为单位)。
- 类型:
float
- 返回:
输出张量名称到其相应 NumPy 数组的映射。
重要提示:运行器可能会重用这些输出缓冲区。因此,如果您需要保存来自多次推理的输出,则应使用
copy.deepcopy(outputs)
复制一份。- 返回类型:
OrderedDict[str, numpy.ndarray]
- last_inference_time()
返回上次调用
infer()
期间所需的总推理时间(以秒为单位)。必须仅在
activate()
之后和deactivate()
之前调用。- 返回:
以秒为单位的时间,如果运行器未测量运行时,则为 None。
- 返回类型:
float
- is_active
此运行器是否已激活,无论是通过上下文管理器还是通过调用
activate()
。- 类型:
bool