框架管理器中離線模型生成器完成離線模型生成后,由離線模型執(zhí)行器將模型加載到運(yùn)行管理器中,與昇騰AI處理器進(jìn)行融合后,才可以進(jìn)行推理計(jì)算,這個(gè)過(guò)程中離線模型執(zhí)行器發(fā)揮了主要的模型執(zhí)行作用。
離線模型加載流程如圖所示

首先,流程編排器作為應(yīng)用與軟件棧的交互入口,為推理任務(wù)的執(zhí)行流程提供了管理能力,將整個(gè)離線模型需要完成的流程劃分成各個(gè)執(zhí)行階段的引擎,并且調(diào)用模型管家的加載接口進(jìn)行設(shè)備端的流程初始化和離線模型加載。接著啟動(dòng)離線模型執(zhí)行器進(jìn)行離線模型加載,對(duì)離線模型的文件進(jìn)行反序列化操作,解碼出可執(zhí)行的文件,再調(diào)用執(zhí)行環(huán)境的存儲(chǔ)接口申請(qǐng)內(nèi)存,并將模型中算子的權(quán)重拷貝到內(nèi)存中;同時(shí)還申請(qǐng)運(yùn)行管理器的模型執(zhí)行句柄、執(zhí)行流和事件等資源,并將執(zhí)行流等資源與對(duì)應(yīng)的模型進(jìn)行一一綁定。一個(gè)執(zhí)行句柄完成一個(gè)神經(jīng)網(wǎng)絡(luò)計(jì)算圖的執(zhí)行,一個(gè)執(zhí)行句柄下可以有多個(gè)執(zhí)行流,不同執(zhí)行流中包含AI Core或AI CPU的計(jì)算任務(wù),一個(gè)任務(wù)由AI CPU或AI Core上的一個(gè)核函數(shù)來(lái)完成,而事件指的是不同執(zhí)行流之間的同步操作。
完成一個(gè)模型的計(jì)算需要循環(huán)遍歷離線模型中的所有算子,并刷新任務(wù)信息后,離線模型執(zhí)行器會(huì)調(diào)用運(yùn)行管理器接口下發(fā)任務(wù)給任務(wù)調(diào)度器,最后由離線模型執(zhí)行器返回加載結(jié)束信息給AI模型管家,再由流程編排器設(shè)置輸出結(jié)果的回調(diào)函數(shù)獲取執(zhí)行完成后的結(jié)果。至此為止,離線執(zhí)行器完成了離線模型的加載過(guò)程,下一步便可以直接進(jìn)行推理計(jì)算。這個(gè)加載過(guò)程相當(dāng)于將模型和昇騰AI處理器進(jìn)行了適配,將硬件資源和離線模型中的算子進(jìn)行了統(tǒng)籌規(guī)劃,使得離線模型在后續(xù)執(zhí)行中有條不紊的進(jìn)行,為推理計(jì)算提供了預(yù)加速能力。