当前位置: 首页 > news >正文

鸿蒙 HarmonyOS 6 | AI Kit 集成 CANN Kit 异构计算服务

文章目录

    • 一、 CANN Kit 的定位与体系架构说明
    • 二、 关键概念 异构计算与 AIPP 硬件加速
    • 三、 开发环境与 OMG 工具链准备
    • 四、 模型转换的实操要点
    • 五、 Native 层的集成逻辑与代码实现
    • 六、 进阶优化 内存零拷贝技术
    • 七、 总结

前言

本篇技术博客会带你初步认识 HarmonyOS Next 底层的计算加速引擎CANN Kit

通过本文的学习,你可以了解到如何利用麒麟芯片的异构计算能力来加速 AI 模型推理,并掌握从模型转换到端侧部署的基本流程。

一、 CANN Kit 的定位与体系架构说明

在 HarmonyOS Next 的 AI 体系中,CANN Kit处于底层加速的核心位置。为了帮大家理清逻辑,我们需要看它的上位与下位关系。

向上,它支撑着MindSpore Lite Kit(推理引擎)和Neural Network Runtime Kit(跨芯片运行时)。向下,它直接驱动NPU(神经网络处理器)和CPU等异构硬件。

简单来说,如果你需要进行极度偏向重载、需要深度榨干硬件性能的 AI 计算,或者要写自定义的AscendC算子,那么CANN Kit就是你的终极选择。它不像上层框架那样做通用适配,而是专为麒麟芯片调优,能提供最直接的硬件访问权。

二、 关键概念 异构计算与 AIPP 硬件加速

在 CANN 的世界里,有两个概念决定了你的应用跑得快不快。

首先是异构计算。系统会自动识别模型里的子图,把适合并行计算的卷积等操作交给NPU,把逻辑复杂的处理交给CPU。这种协同工作方式能让计算效率最大化,同时降低功耗。

其次是AIPP(AI Pre-Process)。这是硬件层面的图像预处理模块。在真实的开发场景中,摄像头采集的原始图片往往需要经过裁剪、色域转换(比如 YUV 转 RGB)、减均值等操作才能送入模型。以往这些活儿由 CPU 干,不仅慢还费电。开启 AIPP 后,这些逻辑会直接封装在.om 离线模型里,由硬件电路直接完成,推理性能会有质的提升。

三、 开发环境与 OMG 工具链准备

CANN Kit 遵循云端转换、端侧运行的逻辑。开发者不能直接把训练好的原生模型塞进手机。

你需要在 Ubuntu 环境下使用OMG(Offline Model Generator)工具。它的核心任务是将 Caffe、TensorFlow 或 ONNX 等框架的模型,转换成专有的.om 离线模型

转换过程中,OMG 会进行图融合优化。比如它会把卷积层BN 层合并为一个计算过程。这种预先的编译动作,让模型在手机上加载后不需要再进行繁重的解析工作,实现了真正的开箱即用。

四、 模型转换的实操要点

ONNX 模型转换为例。在执行转换前,你需要明确输入张量的维度。

# 执行 OMG 转换命令 ./omg --model resnet18.onnx --framework 5 --output ./resnet18_npu --input_shape "input:1,3,224,224"

这里的参数framework 5对应 ONNX。如果你的模型在特定芯片(如麒麟 9020)上运行,转换时还可以配合平台插件包进行针对性优化。

为了进一步提升性能,建议关注Model Zoo提供的推荐参数。

例如,当卷积算子的输入和输出通道数(Cin/Cout)是16 或 32 的倍数时,硬件的算力利用率最高,这在模型训练阶段就应该提前规划。

五、 Native 层的集成逻辑与代码实现

在 HarmonyOS 项目里,CANN Kit 的调用必须通过Native C++实现。你需要在CMakeLists.txt中链接libneural_network_core.so

核心流程分为四步:

  1. 获取设备:在多核心环境下锁定 NPU 标识。
  2. 构建编译实例:将 .om 文件的 buffer 传入系统。
  3. 设置优先级:根据业务需求设定计算优先级。
  4. 创建执行器:生成最终用于推理的对象。
// 寻找硬件设备,HIAI_F 代表高性能 NPU size_t deviceID = 0; const size_t *allDevicesID = nullptr; uint32_t deviceCount = 0; OH_NNDevice_GetAllDevicesID(&allDevicesID, &deviceCount); for (uint32_t i = 0; i < deviceCount; i++) { const char *name = nullptr; OH_NNDevice_GetName(allDevicesID[i], &name); if (std::string(name) == "HIAI_F") { deviceID = allDevicesID[i]; break; } } // 编译离线模型,注意 modelData 是从 rawfile 读取的二进制流 OH_NNCompilation *compilation = OH_NNCompilation_ConstructWithOfflineModelBuffer(modelData, modelSize); OH_NNCompilation_SetDevice(compilation, deviceID); // 设为高性能优先级,确保计算资源倾斜 OH_NNCompilation_SetPriority(compilation, OH_NN_PRIORITY_HIGH); OH_NNCompilation_Build(compilation); // 构造最终的执行器 OH_NNExecutor *executor = OH_NNExecutor_Construct(compilation);

六、 进阶优化 内存零拷贝技术

性能优化的终点往往是内存管理。CANN Kit 支持内存零拷贝(Zero Copy)

传统的做法是将数据从应用内存拷贝到 Tensor 内存。而零拷贝允许你直接申请底层的ION 内存,并将其封装为输入和输出张量。

// 申请输入 Tensor,直接获取底层 buffer 地址 NN_TensorDesc *tensorDesc = OH_NNExecutor_CreateInputTensorDesc(executor, 0); NN_Tensor *tensor = OH_NNTensor_Create(deviceID, tensorDesc); void *dataBuffer = OH_NNTensor_GetDataBuffer(tensor); // 此时直接将图片像素数据写入 dataBuffer,无需后续拷贝动作 // 推理完成后,输出 Tensor 的数据也可以通过同样方式直接读取

通过这种方式,数据直接在硬件单元之间流转,极大降低了大规模数据推理(如实时视频实时滤镜)时的 CPU 负载。

七、 总结

CANN Kit是鸿蒙系统内 AI 加速的基石。它通过 OMG 工具实现了模型的高效转换,通过 AIPP 解决了图像预处理的性能损耗,并通过零拷贝技术消除了内存搬运的开销。

对于初学者,建议先从Model Zoo下载成熟的 .om 模型跑通流程。当你对性能有更高追求时,再去深入研究AscendC算子开发。

在实际应用中,别忘了在aboutToDisappear或 C++ 析构函数里及时调用Destroy接口释放 Tensor 和执行器,避免长时间运行导致的内存泄漏。

http://www.jsqmd.com/news/312201/

相关文章:

  • 2026年质量好的上海粉末包装机/真空包装机厂家采购参考指南(必看)
  • HRM人事管理系统企业源码(Java+Vue)
  • 2026年知名的沟槽管件法兰/山西沟槽管件钢卡厂家实力与用户口碑参考
  • 2026年评价高的玛钢管件管帽堵头/内外丝玛钢管件高口碑厂家推荐(评价高)
  • 2026年比较好的涂装生产线/生产线厂家选购完整指南
  • 2025年国内热门的中型货架生产厂家如何选,穿梭式货架/平台货架/自动化立体库/轻型货架,中型货架实力厂家联系电话
  • 2026年比较好的航空留学学校/澳新航空留学行业权威榜
  • .page{display: flex; flex-direction: column; min-height: 100vh;}能解决大量传统布局痛点,是前端开发的推荐标准做法 - jerry
  • 2026年知名的钣金/钣金定制高评分厂家榜
  • 盘点呼和浩特万通汽车技工学校校企合作企业,哪家合作性价比高
  • 吐血推荐专科生用AI论文软件TOP9:开题报告文献综述全搞定
  • 常见设计模式-复习
  • 食品加工废水第三方运营品牌企业哪家靠谱,费用大概多少钱?
  • 水玻璃靠谱品牌有哪些,费用怎么收
  • linux——make/Makefile自动化工程构建 - 指南
  • 司拉德帕Seladelpar常见副作用处理:头痛瘙痒与血脂变化监测管理
  • 总结评价好的高精度硅酸盐分析仪厂家,看哪家值得推荐?
  • 2026年山东地区好用的数字展厅设计公司,的品牌有哪些
  • 2026年企业和文化团建活动服务靠谱公司推荐与价格分析
  • Flink 进程内存配置详解:三种配置方式、JVM 参数映射与常见踩坑
  • 玛伐凯泰mavacamten剂量滴定方案详解:基于心脏超声参数的个体化调整策略
  • C#每日面试题-Thread.Sleep和Task.Delay的区别
  • C#每日面试题-Task和Thread的区别
  • 包头地区智能网联汽车技术应用专业升学辅导课程价格怎么样
  • 文献内容:基于非对称纳什谈判的多微网电能共享运行优化策略。 #在 MATLAB 平台上进行算例仿真
  • 2026年行业内知名的防火涂料定制厂家推荐榜,隧道防火涂料/水性防火涂料/油性防火涂料,防火涂料制造厂如何选
  • 一种自组装捷径,助力打造更高效的有机太阳能电池?
  • 选购高精度硅酸盐分析仪,陶瓷多元素分析仪供应商哪家比较靠谱
  • 聊聊2026年好用的玻璃硅酸盐分析仪公司,哪家值得选购
  • 2026年口碑好的奶皮子酸奶厂家,圣祥倒立不撒产品优势在哪