手把手带你用香橙派AIpro开发AI推理应用

💡 原文中文,约7400字,阅读约需18分钟。
📝

内容提要

本文介绍了基于华为云的香橙派AIpro开发板开发AI推理应用的流程和技术,包括AscendCL的初始化与去初始化、资源管理、媒体数据处理、模型加载、执行和卸载等。

🔎

延伸解读

AscendCL数据类型接口的设计考量

文章指出,AscendCL对用户开放的数据类型均以接口方式操作,而非直接暴露结构体。这样做是为了避免因结构体成员增减导致的兼容性问题。用户通过Create、Get、Set、Destroy等接口操作数据类型,无需关注内部结构。这种设计在长期维护和版本升级中能减少代码适配成本,尤其适合需要持续迭代的AI推理应用。

运行管理资源的申请与释放顺序

使用AscendCL时,运行管理资源需按Device、Context、Stream的顺序申请,释放时则按Stream、Context、Device逆序进行。Context和Stream支持隐式或显式创建。这种顺序管理有助于确保资源依赖关系正确,避免因释放顺序不当导致资源泄漏或程序异常。开发者应严格遵循该流程,以保障推理任务稳定执行。

模型加载时的内存管理选择

AscendCL支持从文件或内存加载模型,并可由AscendCL或用户自行管理内存。用户自行管理时,需关注工作内存和权值内存的大小。AscendCL提供了查询接口,方便用户提前申请合适内存。这种灵活性允许开发者根据应用场景优化内存使用,但同时也要求开发者更细致地处理内存分配与释放,防止内存泄露。

同步与异步模型执行的适用场景

AscendCL支持同步和异步两种模型执行方式。同步执行需等待推理完成才返回,适合数据量小或对实时性要求不高的场景;异步执行需指定Stream,并通过同步接口或回调机制获取结果,适合大数据量推理,能分批获取结果以提高效率。开发者应根据实际需求选择,并注意异步执行时的Stream管理和回调处理。

❓

Q&A

香橙派AIpro开发板的主要特点是什么?

香橙派AIpro开发板采用昇腾AI技术,具有强大的可扩展性和算力,适用于多种AI应用。

AscendCL的初始化和去初始化有什么重要性?

AscendCL的初始化是为运行做准备,去初始化则是在完成所有调用后释放资源,防止系统异常和内存泄露。

如何处理媒体数据以满足模型输入要求?

AscendCL提供媒体数据处理接口,可以实现抠图、缩放和格式转换等功能,以符合模型的输入要求。

模型推理的执行方式有哪些?

模型推理支持同步和异步执行方式,用户可以根据需求选择合适的执行方式。

如何加载和卸载模型?

模型通过aclmdlLoadFromFileWithMem接口加载,推理结束后通过aclmdlUnload接口卸载,并释放相关内存。

AscendCL支持哪些编程语言?

AscendCL支持C/C++和Python编程语言。

🏷️

标签

➡️

继续阅读