5.10. sail.Engine
Engine可以实现bmodel的加载与管理,是实现模型推理的主要模块。
5.10.1. __init__
初始化Engine
接口形式1:
创建Engine实例,并不加载bmodel
def __init__(tpu_id: int) def __init__(self, handle: sail.Handle)
参数说明1:
tpu_id: int
指定Engine实例使用的TPU的id
handle: sail.Handle
指定Engine实例使用的设备标识Handle
接口形式2:
创建Engine实例并加载bmodel,需指定bmodel路径或内存中的位置。
def __init__(self, bmodel_path: str, tpu_id: int, mode: sail.IOMode) def __init__(self, bmodel_bytes: bytes, bmodel_size: int, tpu_id: int, mode: sail.IOMode)
参数说明2:
bmodel_path: str
指定bmodel文件的路径
tpu_id: int
指定Engine实例使用的TPU的id
mode: sail.IOMode
指定输入/输出Tensor所在的内存位置:系统内存或设备内存。
bmodel_bytes: bytes
bmodel在系统内存中的bytes。
bmodel_size: int
bmodel在内存中的字节数
5.10.2. get_handle
获取Engine中使用的设备句柄sail.Handle
- 接口形式:
def get_handle(self)->sail.Handle
返回值说明:
handle: sail.Handle
返回Engine中的设备句柄。
5.10.3. load
将bmodel载入Engine中。
接口形式1:
指定bmodel路径,从文件中载入bmodel。
def load(self, bmodel_path: str)->None
参数说明1:
bmodel_path: str
bmodel的文件路径
接口形式2:
从系统内存中载入bmodel。
def load(self, bmodel_bytes: bytes, bmodel_size: int)->None
参数说明2:
bmodel_bytes: bytes
bmodel在系统内存中的bytes。
bmodel_size: int
bmodel在内存中的字节数。
5.10.4. get_graph_names
获取Engine中所有载入的计算图的名称。
- 接口形式:
def get_graph_names(self)->list
返回值说明:
graph_names: list
Engine中所有计算图的name的列表。
5.10.5. set_io_mode
设置Engine的输入/输出Tensor所在的内存位置:系统内存或设备内存。
- 接口形式:
def set_io_mode(self, graph_name: str, mode: sail.IOMode)->None
参数说明:
graph_name: str
需要配置的计算图的name。
mode: sail.IOMode
设置Engine的输入/输出Tensor所在的内存位置:系统内存或设备内存。
5.10.6. get_input_names
获取选定计算图中所有输入Tensor的name
- 接口形式:
def get_input_names(self, graph_name: str)->list
参数说明:
graph_name: str
设定需要查询的计算图的name。
返回值说明:
input_names: list
返回选定计算图中所有输入Tensor的name的列表。
5.10.7. get_output_names
获取选定计算图中所有输出Tensor的name。
- 接口形式:
def get_output_names(self, graph_name: str)->list
参数说明:
graph_name: str
设定需要查询的计算图的name。
返回值说明:
output_names: list
返回选定计算图中所有输出Tensor的name的列表。
5.10.8. get_max_input_shapes
查询选定计算图中所有输入Tensor对应的最大shape。
在静态模型中,输入Tensor的shape是固定的,应等于最大shape。
在动态模型中,输入Tensor的shape应小于等于最大shape。
- 接口形式:
def get_max_input_shapes(self, graph_name: str)->dict {str : list}
参数说明:
graph_name: str
设定需要查询的计算图的name。
返回值说明:
max_shapes: dict{str : list}
返回输入Tensor中的最大shape。
5.10.9. get_input_shape
查询选定计算图中特定输入Tensor的shape。
- 接口形式:
def get_input_shape(self, graph_name: str, tensor_name: str)->list
参数说明:
graph_name: str
设定需要查询的计算图的name。
tensor_name: str
需要查询的Tensor的name。
返回值说明:
tensor_shape: list
该name下的输入Tensor中的最大维度的shape。
5.10.10. get_max_output_shapes
查询选定计算图中所有输出Tensor对应的最大shape。
在静态模型中,输出Tensor的shape是固定的,应等于最大shape。
在动态模型中,输出Tensor的shape应小于等于最大shape。
- 接口形式:
def get_max_output_shapes(self, graph_name: str)->dict {str : list}
参数说明:
graph_name: str
设定需要查询的计算图的name。
返回值说明:
max_shapes: dict{str : list}
返回输出Tensor中的最大shape。
5.10.11. get_output_shape
查询选定计算图中特定输出Tensor的shape。
- 接口形式:
def get_output_shape(self, graph_name: str, tensor_name: str)->list
参数说明:
graph_name: str
设定需要查询的计算图的name。
tensor_name: str
需要查询的Tensor的name。
返回值说明:
tensor_shape: list
该name下的输出Tensor的shape。
5.10.12. get_input_dtype
获取特定计算图的特定输入Tensor的数据类型。
- 接口形式:
def get_input_dtype(self, graph_name: str, tensor_name: str)->sail.Dtype
参数说明:
graph_name: str
设定需要查询的计算图的name。
tensor_name: str
需要查询的Tensor的name。
返回值说明:
datatype: sail.Dtype
返回Tensor中数据的数据类型。
5.10.13. get_output_dtype
获取特定计算图的特定输出Tensor的数据类型。
- 接口形式:
def get_output_dtype(self, graph_name: str, tensor_name: str)->sail.Dtype
参数说明:
graph_name: str
设定需要查询的计算图的name。
tensor_name: str
需要查询的Tensor的name。
返回值说明:
datatype: sail.Dtype
返回Tensor中数据的数据类型。
5.10.14. get_input_scale
获取特定计算图的特定输入Tensor的scale,只在int8模型中有效。
- 接口形式:
def get_input_scale(self, graph_name: str, tensor_name: str)->float32
参数说明:
graph_name: str
设定需要查询的计算图的name。
tensor_name: str
需要查询的Tensor的name。
返回值说明:
scale: float32
返回Tensor数据的scale。
5.10.15. get_output_scale
获取特定计算图的特定输出Tensor的scale,只在int8模型中有效。
- 接口形式:
def get_output_scale(self, graph_name: str, tensor_name: str)->float32
参数说明:
graph_name: str
设定需要查询的计算图的name。
tensor_name: str
需要查询的Tensor的name。
返回值说明:
scale: float32
返回Tensor数据的scale。
5.10.16. process
在特定的计算图上进行前向推理。
- 接口形式1:
def process(self, graph_name: str, input_tensors: dict {str : numpy.array})->dict {str : numpy.array} """ Inference with provided system data of input tensors.
参数说明1:
graph_name: str
特定的计算图name。
input_tensors: dict{str : numpy.array}
所有的输入Tensor的数据,利用系统内存中的numpy.array传入。
返回值说明1:
output_tensors: dict{str : numpy.array}
所有的输出Tensor的数据,返回类型为numpy.array的数据。
- 接口形式2:
def process(self, graph_name: str, input_tensors: dict {str : sail.Tensor}, output_tensors: dict {str : sail.Tensor})->None def process(self, graph_name: str, input_tensors: dict {str : sail.Tensor}, input_shapes: dict {str : list}, output_tensors: dict {str : sail.Tensor})->None
参数说明2:
graph_name: str
输入参数。特定的计算图name。
input_tensors: dict{str : sail.Tensor}
输入参数。所有的输入Tensor的数据,利用sail.Tensor传入。
input_shapes : dict {str : list}
输入参数。所有传入Tensor的shape。
output_tensors: dict{str : sail.Tensor}
输出参数。所有的输出Tensor的数据,利用sail.Tensor返回。
5.10.17. get_device_id
获取Engine中的设备id号
- 接口形式:
def get_device_id(self)->int
返回值说明:
tpu_id : int
返回Engine中的设备id号。
5.10.18. create_input_tensors_map
创建输入Tensor的映射,在python接口中为字典dict{str : Tensor}
- 接口形式:
def create_input_tensors_map(self, graph_name: str, create_mode: int)->dict{str : Tensor}
参数说明:
graph_name: str
特定的计算图name。
create_mode: int
创建Tensor分配内存的模式。为0时只分配系统内存,为1时只分配设备内存,其他时则根据Engine中IOMode的配置分配。
返回值说明:
output: dict{str : Tensor}
返回name:tensor的字典。
5.10.19. create_output_tensors_map
创建输入Tensor的映射,在python接口中为字典dict{str : Tensor}
- 接口形式:
def create_output_tensors_map(self, graph_name: str, create_mode: int)->dict{str : Tensor}
参数说明:
graph_name: str
特定的计算图name。
create_mode: int
创建Tensor分配内存的模式。为0时只分配系统内存,为1时只分配设备内存,其他时则根据Engine中IOMode的配置分配。
返回值说明:
output: dict{str : Tensor}
返回name:tensor的字典。