文档
注册

样例介绍

获取样例

单击异步推理获取样例。

功能描述

该样例主要是基于Caffe ResNet-50网络(单输入、单batch)实现图片分类的功能。

将Caffe ResNet-50网络的模型文件转换为适配昇腾AI处理器的离线模型(*.om文件)。该样例中加载该om文件,对2张jpg(*.jpg)图片进行n次异步推理(n作为运行应用的参数,由用户配置,可通过“--execute_times”参数设置,默认为4次),分别得到n次推理结果后,再对推理结果进行处理,输出top5置信度的类别标识。

主要接口

主要接口如表1所示。
表1 主要接口介绍

功能

对应pyACL模块

pyACL 接口函数

功能说明

资源初始化

初始化

acl.init

初始化pyACL配置。

Device管理

acl.rt.set_device

指定用于运算的Device。

Context管理

acl.rt.create_context

创建Context。

数据初始化

acl.create_data_buffer

创建aclDataBuffer类型的数据,该数据类型用于描述内存地址、大小等内存信息。

如需销毁aclDataBuffer类型的数据,请参见函数:destroy_data_buffer

公共接口

acl.get_data_buffer_addr

获取aclDataBuffer类型中的数据的内存地址。

公共接口

acl.get_data_buffer_size_v2

获取aclDataBuffer类型中数据的内存大小,单位Byte。

Stream管理

acl.rt.create_stream

在当前进程或线程中创建一个Stream。

Context管理

acl.rt.set_context

设置线程的Context。

模型初始化

模型加载与执行

acl.mdl.load_from_file

从*.om文件加载模型到device侧。

数据类型及操作接口

acl.mdl.create_desc

创建模型描述数据类型。

数据类型及操作接口

acl.mdl.get_desc

获取模型描述数据类型。

数据类型及操作接口

acl.mdl.get_cur_output_dims

根据模型描述信息获取指定的模型输出Tensor的实际维度信息。

数据类型及操作接口

acl.mdl.get_num_outputs

根据aclmdlDesc类型的数据,获取模型的输出个数。

数据类型及操作接口

acl.mdl.get_num_inputs

根据aclmdlDesc类型的数据,获取模型的输入个数。

数据类型及操作接口

acl.mdl.get_output_size_by_index

根据aclmdlDesc类型的数据,获取指定输出的大小,单位为Byte。

数据类型及操作接口

acl.mdl.add_dataset_buffer

向aclmdlDataset中增加aclDataBuffer。

数据类型及操作接口

acl.mdl.create_dataset

创建aclmdlDataset类型的数据。

该数据类型用于描述模型推理时的输入数据、输出数据,模型可能存在多个输入、多个输出,每个输入/输出的内存地址、内存大小用aclDataBuffer类型的数据来描述。

如需销毁aclmdlDataset类型的数据,请参见函数:destroy_dataset

模型推理

模型加载与执行

acl.mdl.execute_async

执行模型异步推理。

流同步

Stream管理

acl.rt.synchronize_stream

阻塞应用程序运行,直到指定Stream中的所有任务都完成。

runtime

同步等待

acl.rt.subscribe_report

指定处理Stream上回调函数的线程。

同步等待

acl.rt.unsubscribe_report

取消线程注册,Stream上的回调函数不再由指定线程处理。

同步等待

acl.rt.launch_callback

在Stream的任务队列中增加一个需要在Host/Device上执行的回调函数。

同步等待

acl.rt.process_report

等待指定时间后,触发回调处理。

数据交互

内存管理

acl.rt.memcpy

数据传输,Host->Device或Device->Host。

内存管理

acl.rt.malloc

申请Device上的内存。

内存管理

acl.rt.malloc_host

申请Host上的内存。

公共模块

--

acl.util.ptr_to_numpy

将指针地址数据转换为numpy数组,可以使Python代码直接访问。

--

acl.util.numpy_to_ptr

获取numpy.ndarry数组的内存数据指针地址。

--

acl.util.start_thread

启动一个回调函数线程。

--

acl.util.stop_thread

回收一个回调函数线程。

C和Python的数据交互

acl.util.bytes_to_ptr

将bytes对象转换成为void*数据,可以将转换好的数据传递给C函数直接使用。

C和Python的数据交互

acl.util.ptr_to_bytes

将void*数据转换为bytes对象,可以使Python代码直接访问。

数据后处理

数据类型及操作接口

acl.mdl.get_dataset_buffer

获取aclmdlDataset中的第n个aclDataBuffer。

数据类型及操作接口

acl.mdl.get_dataset_num_buffers

获取aclmdlDataset中aclDataBuffer的个数。

资源释放

内存管理

acl.rt.free

释放Device上的内存。

内存管理

acl.rt.free_host

释放Host上的内存。

模型加载与执行

acl.mdl.unload

卸载模型。

Context管理

acl.rt.destroy_context

销毁Context。

Device管理

acl.rt.reset_device

复位当前运算的Device,回收Device上的资源。

去初始化

acl.finalize

实现pyACL去初始化。

数据释放

acl.destroy_data_buffer

销毁aclDataBuffer类型的数据。

此处仅销毁aclDataBuffer类型的数据,调用acl.create_data_buffer接口创建aclDataBuffer类型数据时传入的data的内存需由用户自行释放。

数据释放

acl.mdl.destroy_dataset

销毁通过acl.mdl.create_dataset接口创建的aclmdlDataset类型的数据。

数据释放

acl.mdl.destroy_desc

销毁通过acl.mdl.create_desc接口创建的aclmdlDesc类型的数据。

数据释放

acl.rt.destroy_stream

销毁指定Stream,销毁通过acl.rt.create_streamacl.rt.create_stream_with_config接口创建的Stream,若Stream上有未完成的任务,会等待任务完成后再销毁Stream。

目录结构

目录结构如下所示。

resnet50_async_imagenet_classification
├──scripts
│ ├── host_version.conf //版本号配置文件。
│ └── testcase_300.sh //运行脚本。
├──src
│ ├── acl_net.py //运行文件。
│ └── constant.py //常量定义。
├── data 
│ ├── fusion_result.json //atc转化后生成,记录融合算子信息。
│ ├── dog1_1024_683.jpg //测试图片数据。
│ └── dog2_1024_683.jpg //测试图片数据。
├── caffe_model 
│ ├── resnet50.caffemodel //ResNet-50模型。
│ └── resnet50.prototxt // ResNet-50模型的网络文件。
└── model //atc转换生成后的目录
│ └── resnet50.om //转换后的模型文件。
└── README_CN.md 
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词