AIpro(8T)模型推理的效率正常能达到多少?
收藏回复举报
AIpro(8T)模型推理的效率正常能达到多少?
t('forum.solved') 已解决
发表于2024-10-28 20:12:49
0 查看

如题:模型推理放子进程实现,同时运行4个子进程。代码和执行效率如下:平均一帧需要0.13秒左右,是否还能提高推理效率,能在0.1秒以下吗? 是否有批量图片推理的方式? 超频成13T能提高性能吗?  (CANN是8.0版本)
代码:

def model_process(device,model,model_platform,m_p_status,brun,in_mq,out_mq):
        # 初始化模型运行资源
        context = None
        if model_platform == "acl":  # ACL线程中初始化内容
            context = ACLModeManger.pro_init_acl(device)  # 初始化acl资源,并创建context
            # 初始化模型资源 -- 加载模型文件
            ret = model.init_acl_resource()  # 加载和初始化离线模型文件--om文件
            if not ret:
                print("初始化模型资源出错,退出线程!")
                m_p_status.value = 2
                return

        #执行工作
        m_p_status.value = 1
        use_time = 0
        icount = 0
        while brun.value:
            try:
                inData = in_mq.get(timeout=0.1) 
            except:
                #print("in_mq_空")
                continue
            if inData:
                s_time = time.time()
                outputs = model.execute([inData.img,])
                e_time = time.time()
                outdata = ModeloutData(inData.image,inData.scale_ratio,inData.pad_size,outputs,inData.channel_id)
                del inData.img
                #结果输出
                if out_mq.full():
                    tmp = out_mq.get()
                    del tmp
                out_mq.put(outdata)  

            icount += 1
            use_time += (e_time - s_time)
            if icount == 500:
                avg_time = use_time / 500
                print(f"model_process耗时--{avg_time}秒")
                use_time = 0
                icount = 0

        #结束进程,释放资源
        m_p_status.value = 0
        while not in_mq.empty():
            try:
                in_mq.get_nowait()  # Get without blocking
            except Exception as e:
                break  # In case of any unexpected errors

        # 反初始化
        if model_platform == "acl":
            try:
                model.release()  # 释放模型资源资源
                # 删除模型对象
                del model
                # 释放ACL资源
                ACLModeManger.pro_del_acl(device,context)
            except Exception as e:
                print(e)

执行结果: 平均耗时0.13秒左右

cke_18352.png

板卡性能情况: 4个CPU70%,内存6GB,A Icroe 60-70%,  Memory(%)  90 (这个是NPU的内存?)
cke_51981.png

cke_54130.png

我要发帖子