框架管理器中离线模型生成器完成离线模型生成后,由离线模型执行器将模型加载到运行管理器中,与昇腾AI处理器进行融合后,才可以进行推理计算,这个过程中离线模型执行器发挥了主要的模型执行作用。
离线模型加载流程如图所示
首先,流程编排器作为应用与软件栈的交互入口,为推理任务的执行流程提供了管理能力,将整个离线模型需要完成的流程划分成各个执行阶段的引擎,并且调用模型管家的加载接口进行设备端的流程初始化和离线模型加载。接着启动离线模型执行器进行离线模型加载,对离线模型的文件进行反序列化操作,解码出可执行的文件,再调用执行环境的存储接口申请内存,并将模型中算子的权重拷贝到内存中;同时还申请运行管理器的模型执行句柄、执行流和事件等资源,并将执行流等资源与对应的模型进行一一绑定。一个执行句柄完成一个神经网络计算图的执行,一个执行句柄下可以有多个执行流,不同执行流中包含AI Core或AI CPU的计算任务,一个任务由AI CPU或AI Core上的一个核函数来完成,而事件指的是不同执行流之间的同步操作。
完成一个模型的计算需要循环遍历离线模型中的所有算子,并刷新任务信息后,离线模型执行器会调用运行管理器接口下发任务给任务调度器,最后由离线模型执行器返回加载结束信息给AI模型管家,再由流程编排器设置输出结果的回调函数获取执行完成后的结果。至此为止,离线执行器完成了离线模型的加载过程,下一步便可以直接进行推理计算。这个加载过程相当于将模型和昇腾AI处理器进行了适配,将硬件资源和离线模型中的算子进行了统筹规划,使得离线模型在后续执行中有条不紊的进行,为推理计算提供了预加速能力。