按照模型构建中的说明构建出模型后,再加载该模型,为模型执行做准备。
开发应用时,如果涉及整网模型推理,则应用程序中必须包含模型加载的代码逻辑,关于模型加载的接口调用流程,请先参见pyACL接口调用流程了解整体流程,再查看本节中的流程说明。
本节描述的是整网模型加载的接口调用流程,对于算子模型加载与执行的详细说明请参见单算子调用。
pyACL提供两套模型加载的接口:
关键接口的说明如下:
如果模型输入数据的Shape不确定,则不能调用acl.mdl.query_size接口查询内存大小,在加载模型时,就无法由用户管理内存,因此需选择由系统管理内存的模型加载接口(例如,acl.mdl.load_from_file、acl.mdl.load_from_mem)。
模型加载成功,会返回标识模型的ID,在模型执行时需要使用该ID。
您可以从样例介绍中获取完整样例代码。
调用接口后,需增加异常处理的分支,并记录报错日志、提示日志,此处不一一列举。以下是关键步骤的代码示例,不可以直接拷贝运行,仅供参考。
# 初始化变量。
model_path = "./model/resnet50.om"
# ......
# 加载离线模型文件(适配昇腾AI处理器的离线模型),由系统管理模型运行的内存(包括权值内存、工作内存)。
# 模型加载成功,返回标识模型的ID。
model_id, ret = acl.mdl.load_from_file(model_path)
# ......