
鸿蒙开源组件—— AI业务子系统
AI业务子系统
AI业务子系统是OpenHarmony提供原生的分布式AI能力的子系统
简介
AI业务子系统是OpenHarmony提供原生的分布式AI能力的子系统。本次开源范围是提供了统一的AI引擎框架,实现算法能力快速插件化集成。框架中主要包含插件管理、模块管理和通信管理等模块,对AI算法能力进行生命周期管理和按需部署。后续,会逐步定义统一的AI能力接口,便于AI能力的分布式调用。同时,提供适配不同推理框架层级的统一推理接口。
图 1 AI引擎框架
目录
/foundation/ai/engine # AI子系统主目录
├── interfaces
│ └── kits # AI子系统对外接口
└── services
│ ├── client # AI子系统Client模块
│ │ ├── client_executor # Client模块执行主体
│ │ └── communication_adapter # Client模块通信适配层,支持拓展
│ ├── common # AI子系统公共工具、协议模块
│ │ ├── platform
│ │ ├── protocol
│ │ └── utils
│ └── server # AI子系统服务端模块
│ │ ├── communication_adapter # Server模块通信适配层,支持拓展
│ │ ├── plugin
│ │ ├── asr
│ │ └── keyword_spotting # ASR算法插件参考:唤醒词识别
│ │ └── cv
│ │ └── image_classification # CV算法插件参考:图片分类
│ │ ├── plugin_manager
│ │ └── server_executor # Server模块执行主体
约束
语言限制:C/C++语言
操作系统限制:OpenHarmony操作系统
AI服务启动的约束与限制:SAMGR(System Ability Manager)启动且运行正常
使用
-
AI业务子系统编译
轻量级AI引擎框架模块,代码所在路径://foundation/ai/engine/services
编译指令如下:
设置编译路径
设置编译产品(执行后用方向键和回车进行选择):
执行编译:
-
注意:hb相关配置请参考编译构建子系统build_lite
-
插件开发(以唤醒词识别为例)
位置://foundation/ai/engine/services/server/plugin/asr/keyword_spotting
注意:插件需要实现server提供的IPlugin接口和IPluginCallback接口
注意:SyncProcess和AsyncProcess接口只需要根据算法实际情况实现一个接口即可,另一个用空方法占位(这里KWS插件为同步算法,故异步接口为空实现)。
插件SDK开发(以唤醒词识别kws_sdk为例)
位置://foundation/ai/engine/services/client/algorithm_sdk/asr/keyword_spotting
唤醒词识别SDK
注意:SDK调用AI引擎客户端接口顺序应遵循AieClientInit->AieClientPrepare->AieClientSyncProcess/AieClientAsyncProcess->AieClientRelease->AieClientDestroy,否则调用接口会返回错误码;同时应保证各个接口都有调用到,要不然会引起内存泄漏。
sample开发(参考唤醒词识别demo)
位置://applications/sample/camera/ai/asr/keyword_spotting
调用Create
调用SyncExecute
调用Destroy
涉及仓
AI子系统
ai_engine
依赖仓:
build_lite
distributedschedule_samgr_lite
startup_init_lite
AI引擎开发导航
- OpenHarmony ——唤醒词识别SDK的开发示例
- OpenHarmony ——唤醒词识别插件的开发示例
- OpenHarmony ——唤醒词识别配置文件的开发示例
