msame开源压测工具学习笔记

本文详细介绍了使用ACLSDK进行模型推理的步骤,包括模型ID获取、模型描述、输入输出数据准备、参数设置(特别是动态特性)、推理执行(同步和异步)、结果获取以及内存管理和工具源码。
摘要由CSDN通过智能技术生成

基本模型推理流程

在这里插入图片描述

1. 调用 aclmdlCreateDesc 接口时,模型ID通过对模型文件的加载获得

暂时无法在飞书文档外展示此内容

2. 调用 aclmdlGetDesc 接口根据模型加载中返回的模型ID获取模型基本信息。

3. 对模型推理输入/输出数据的准备在这里插入图片描述

  • 如模型存在多个输入、输出时,可调用 aclmdlGetNumInputs、aclmdlGetNuOutputs 接口获取输入、输出个数
  • 模型每个输入、输出所需的内存大小,用户可调用 aclmdlGetInputSizeByIndex、aclmdlGetOutputSizeByIndex 接口获取。如果模型的输入涉及动态Batch、动态分辨率、动态维度(ND格式)等特性,输入tensor数据的Shape支持多种档位,在模型执行前才能确定,因此该输入所需的内存大小建议用户调用 aclmdlGetInputSizeByIndex 接口获取,该接口获取的是最大档位的内存,确保内存够用。
  • 模型存在多个输入、输出时,用户在向 aclmdlDataset 中添加 aclDataBuffer 时,为避免顺序出错,可以先调用 aclmdlGetInputNameByIndex、aclmdlGetOutputNameByIndex 接口获取输入、输出的名称,根据输入、输出名称所对应的index的顺序添加。
  • 使用 aclmdlDesc 类型的数据描述模型基本信息(例如输入/输出的个数、名称、数据类型、Format、维度信息等),使用 aclmdlDataset 类型的数据描述模型的输入/输出数据,模型可能存在多个输入、多个输出,每个输入/输出的内存地址、内存大小用 aclDataBuffer 类型的数据来描述。
    在这里插入图片描述

4. 参数设置:动态batch、动态分辨率、动态维度(ND格式)

在对同一模型进行参数设置时,不能同时调用aclmdlSetDynamicBatchSize接口设置动态Batch、调用aclmdlSetDynamicHWSize接口设置动态分辨率、调用aclmdlSetInputDynamicDims接口设置动态维度的维度值。
在这里插入图片描述

5. 模型推理执行

对于固定的多Batch场景,需要满足Batch数后,才能将输入数据发送给模型进行推理。不满足Batch数时,用户需根据自己的实际场景处理。

  • 同步推理:调用 aclmdlExecute 接口
  • 异步推理:调用 aclmdlExecuteAsync 接口,并调用 acltrSynchronizeStream 接口阻塞Host运行,直到指定Stream中的所有任务全部完成

6. 获取模型推理结果

  • 同步推理,直接获取模型推理的输出数据;
  • 异步推理,需在实现Callback功能时,在回调函数中获取模型推理结果
./msame --model "$HOME/msame/resnet_50.om" --input "$HOME/msame/data" --output "$HOME/msame/out/" --outfmt TXT
[INFO] acl init success
[INFO] open device 0 success
[INFO] create context success
[INFO] create stream success
[INFO] get run mode success
[INFO] load model "$HOME/msame/resnet_50.om" success
[INFO] create model description success
[INFO] get input dynamic gear count success
[INFO] create model output success
./output/202234_12_58_29_218043
[INFO] model execute success
Inference time: 1.963ms
[INFO] get max dynamic batch size success
[INFO] output data success
Inference average time: 1.963000 ms
[INFO] destroy model input success
[INFO] unload model success, model Id is 1
[INFO] Execute sample success
[INFO] end to destroy stream
[INFO] end to destroy context
[INFO] end to reset device is 0
[INFO] end to finalize acl

7. 释放内存

调用 aclrtFree 接口来释放设备上的内存

8. 释放相关数据类型的数据

在模型推理结束后,需尽快调用 aclDestroyDataBuffer 接口和 aclmdlDestroyDataset 接口释放描述模型输入的数据,且必须按如下顺序:先调用 aclDestroyDataBuffer 接口,再调用 aclmdlDestroyDataset 接口。如果存在多个输入、输出,则调用多次 aclDestroyDataBuffer 接口。

msame工具源码及修改

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值