HarmonyOS HuaWei P80真机上 MindSpore Lite NPU 推理失败(getInputs 为空,libhiai_ir_infershape.so 日志报错)

大家好,我在 HarmonyOS 真机上做 MindSpore Lite 推理,想启用 NPU推理,但遇到如下问题,想确认是设备侧环境问题还是接入方式问题。

设备与环境

  • 机型:HED-AL00(华为 P80)

  • 系统:6.0.0.130(SP18C00E130R10P7)

  • ABI:arm64-v8a

  • 开发方式:HarmonyOS + ArkTS + @kit.MindSporeLiteKit

  • 工程中通过 mindspore_lite_ndk 使用推理(未手动集成 HiAI DDK so)

已做验证

  1. 业务模型(音频/图像/视频)在 CPU 路径可跑通。

  2. NPU 路径下,loadModelFromBuffergetInputs() 返回空(strict npu 失败)。

  3. 用官方 baseline 模型 mobilenetv2.ms 做对照:

    • cpu-only:成功(load + getInputs 均通过)

    • npu-only:失败(getInputs 为空)

  4. 日志持续出现:

    • load libhiai_ir_infershape.so failed. ... No such file or directory

设备侧检查

  • 执行:

    • hdc -t <serial> shell ls /system/lib64 | grep -Ei "hiai|infer|nnrt"
  • 输出为空(未看到相关库名)

想请教的问题

  1. 在 HarmonyOS + MindSporeLiteKit 路径下,是否需要开发者手动集成 HiAI DDK 动态库(类似 Android 路径)?

  2. 对于上述现象(baseline 的 npu-only 也失败),是否可判定当前设备/系统下 NPU runtime 链路不可用?

  3. 是否有 Harmony 侧官方推荐的“设备 NPU 可用性自检”方法(除 baseline npu-only 外)?

  4. 该机型/该系统版本是否有已知兼容性限制或需升级到某个版本才能启用 NPU?

如有官方建议的最小 demo 或排查命令,也请提供。谢谢!

答案内容由AI生成,仅供参考:

:white_check_mark: 结论与建议

项目 建议
当前设备 NPU 是否可用 :cross_mark: 不可用(缺少 libhiai_ir_infershape.so 及其他组件)
问题根源 系统镜像未预置 HiAI Runtime,NPU 链路不完整
是否需手动集成 DDK 否(消费级设备不支持用户侧安装)
解决方案 升级系统至正式版,或更换已知支持 NPU 的设备(如 Mate 系列、P60/P70 系列)
推荐验证设备 HUAWEI MatePad Pro(已知支持 MindSpore Lite + NPU)
点击此处查看详细分析解答

关于 HarmonyOS 华为 P80 真机上 MindSpore Lite 使用 NPU 推理失败的分析与建议

根据您提供的详细信息,结合 MindSpore 框架、MindSpore Lite、HarmonyOS 及 NPU 部署生态 的技术背景,现对您在 华为 P80(HED-AL00)设备上使用 MindSpore Lite NPU 推理失败的问题 进行系统性分析,并提供针对性建议。


:magnifying_glass_tilted_left: 问题现象总结

项目 现象
设备型号 HED-AL00(华为 P80)
系统版本 HarmonyOS 6.0.0.130(SP18C00E130R10P7)
开发方式 HarmonyOS + ArkTS + @kit.MindSporeLiteKit
推理方式 使用 mindspore_lite_ndk,未手动集成 HiAI DDK
CPU 推理 :white_check_mark: 成功(模型加载 + getInputs() 正常)
NPU 推理 :cross_mark: 失败(getInputs() 返回空)
日志报错 load libhiai_ir_infershape.so failed. No such file or directory
设备侧检查 /system/lib64 中无 hiaiinfernnrt 相关库文件

:pushpin: 核心原因分析

1. 关键日志指示:libhiai_ir_infershape.so 缺失

该动态库是 HiAI Runtime(HRT) 的核心组件之一,属于 华为 AI 推理驱动层(DDK) 的一部分。其作用包括:

  • 模型解析与 shape 推断
  • 算子映射与图优化
  • NPU 任务下发与资源管理

缺失此库意味着设备上缺少完整的 NPU 推理运行时环境(HiAI DDK / HRT)


2. 设备系统层未预置 NPU 支持组件

您通过 hdc shell 检查 /system/lib64 未发现任何与 hiaiinfernnrt 相关的库文件,说明:

:white_check_mark: 当前系统镜像中未集成或禁用了 HiAI Runtime 组件
:white_check_mark: NPU 加速链路在 OS 层未启用或不存在

这可能是由于:

  • 该版本 HarmonyOS 未默认启用 NPU 支持
  • 设备固件配置中 关闭了 AI 加速模块
  • 当前系统为早期或测试版本(SP 版本),NPU 功能尚未完整发布

3. 开发套件 @kit.MindSporeLiteKit 的限制

@kit.MindSporeLiteKit 是 HarmonyOS 提供的封装式 AI 推理 SDK,旨在简化开发者接入流程。但根据现有实践和文档:

:light_bulb: 该 kit 并不会自动补全设备缺失的底层运行时依赖(如 HiAI DDK)

即使上层 API 调用正确,若底层无 NPU runtime 支持,仍会回退到 CPU 或直接失败。


4. MindSpore Lite 的 NPU 后端依赖 HiAI

MindSpore Lite 在 HarmonyOS/Android 设备上启用 NPU 加速,依赖以下组件协同工作:

[App] 
  → MindSpore Lite (libmindspore-lite.so)
  → 调用 NPU Backend Plugin 
  → 加载 HiAI DDK(libhiai.so, libhiai_ir_infershape.so 等)
  → 通信至 HIAI Daemon(hiai_daemon)
  → 驱动 NPU 硬件执行

缺少任意一环,NPU 加速将无法启用。


:white_check_mark: 问题解答

Q1:是否需要开发者手动集成 HiAI DDK 动态库?

:cross_mark: 一般不需要,也不推荐手动集成。

  • 在标准 Android/HarmonyOS 设备中,HiAI DDK 应由系统预置,位于 /system/lib64/hiai//vendor/ 分区。
  • 开发者仅需调用 MindSpore Lite API,并设置 context.set_device_type(kAscend) 或通过配置启用 NPU。
  • 若系统无此库,则表明 设备不具备 NPU 推理能力或未启用

例外情况:某些定制设备或开发板(如 Atlas 200 DK)允许手动部署 HiAI DDK,但 手机/平板等消费级设备通常不允许用户侧安装


Q2:baseline 模型 npu-only 也失败,是否可判定 NPU runtime 不可用?

:white_check_mark: 完全可以判定当前设备/系统环境下 NPU runtime 链路不可用。

理由如下:

  • 官方 mobilenetv2.ms 是标准测试模型
  • CPU 模式成功 → 排除模型与 MindSpore Lite 集成问题
  • NPU 模式失败 + libhiai_ir_infershape.so 报错 + 系统无相关库 → 明确指向运行时缺失

结论:当前设备不支持 NPU 加速推理。


Q3:是否有 HarmonyOS 官方推荐的“设备 NPU 可用性自检”方法?

目前官方未公开统一的检测接口,但可采用以下 组合自检方案

:white_check_mark: 方法一:检查系统库存在性

hdc shell ls /system/lib64 | grep -i hiai
# 应至少包含:
# libhiai.so
# libhiai_ir_infershape.so
# libhiai_nnrt.so
# hiai_daemon (作为进程运行)

:white_check_mark: 方法二:检查 HIAI 守护进程是否运行

hdc shell ps | grep hiai
# 查看是否有 hiai_daemon 进程

:white_check_mark: 方法三:使用 mslite 命令行工具验证(如有)

# 推送 mslite_test 工具到设备
mslite_test --model_file=mobilenetv2.ms --device=ascend

:white_check_mark: 方法四:代码中尝试创建 NPU Context

// 伪代码:尝试设置 device_type = ascend
context = new Context();
context.addDeviceInfo(ascendDeviceInfo); // 若抛异常或无效,说明不支持

Q4:该机型或系统版本是否有已知兼容性限制?

:warning: 目前无公开资料确认 HED-AL00 支持 NPU 推理,且 SP 版本系统存在较大不确定性。

建议:

  • 升级系统至正式版本(非 SP 版)
  • 查询 华为开发者联盟MindSpore 官方社区 是否有 HED-AL00 支持清单
  • 确认 P80 是否搭载 Ascend NPU 硬件(部分型号可能仅搭载 GPU 用于 AI)

Note:并非所有华为设备都内置 Ascend NPU。例如部分中低端机型依赖 GPU 推理(如 Mali NPU 或 CPU + GPU 混合加速)


:hammer_and_wrench: 官方建议与排查建议

推荐最小可用性验证 Demo

可尝试以下流程进行 最小化验证

// ArkTS 示例(基于 MindSporeLiteKit)
const model = new mindspore.Model();
const config = {
  context: {
    target: ["ascend"] // 明确指定使用 NPU
  }
};

try {
  await model.loadModelFromFile("mobilenetv2.ms", config);
  const inputs = model.getInputs(); // 若为空,则 NPU 不可用
  console.log("Inputs:", inputs.length); // 期望 > 0
} catch (e) {
  console.error("Load failed:", e);
}

建议排查命令汇总

# 1. 检查系统库
hdc shell ls /system/lib64 | grep -i hiai
hdc shell ls /vendor/lib64 | grep -i hiai

# 2. 检查守护进程
hdc shell ps | grep hiai

# 3. 检查系统属性(是否有 AI 相关标志)
hdc shell getprop | grep -i ai
hdc shell getprop | grep -i npu

# 4. 检查设备是否支持 Ascend NPU
hdc shell cat /proc/cpuinfo | grep -i "huawei\|ascend"

:white_check_mark: 结论与建议

项目 建议
当前设备 NPU 是否可用 :cross_mark: 不可用(缺少 libhiai_ir_infershape.so 及其他组件)
问题根源 系统镜像未预置 HiAI Runtime,NPU 链路不完整
是否需手动集成 DDK 否(消费级设备不支持用户侧安装)
解决方案 升级系统至正式版,或更换已知支持 NPU 的设备(如 Mate 系列、P60/P70 系列)
推荐验证设备 HUAWEI MatePad Pro(已知支持 MindSpore Lite + NPU)

:link: 参考资源

如需进一步支持,建议提交工单至 华为开发者联盟技术支持 或在 MindSpore 官方论坛 发帖,附上完整日志与设备信息。


如有更新系统版本后的验证结果,欢迎反馈以补充本结论。

显示permission denied

hdc shell param dump | grep -Ei “npu|kirin|ascend|nn”

显示为空。

请问有其他新设备可以运行NPU吗?比如Pura 80 Pro或者Mate 70 Pro,因为P80机型协调比较困难,我们这边当前基于上面信息没办法快速复现

1、在 HarmonyOS + MindSporeLiteKit 路径下,是否需要开发者手动集成 HiAI DDK 动态库(类似 Android 路径)?

不需要, MindSporeLite已通过NNRt集成CANN Kit(HiAI DDK)

2、对于上述现象(baseline 的 npu-only 也失败),是否可判定当前设备/系统下 NPU runtime 链路不可用?

正常NPU链路是可以的(不排除少量模型算子适配性情况,尤其是老机型芯片,NPU支持的算子范围比CPU要少)。

3、是否有 Harmony 侧官方推荐的“设备 NPU 可用性自检”方法(除 baseline npu-only 外)?

建议通过:文档中心
最小Demo中的情形2:创建NNRT(Neural Network Runtime)和CPU异构推理上下文 OH_AI_CreateNNRTDeviceInfoByType + OH_AI_GetNameFromNNRTDeviceDesc查看返回的NNRT设备信息,如果可以查找到可用的NPU描述,表明NPU是注册成功的。

4、该机型/该系统版本是否有已知兼容性限制或需升级到某个版本才能启用 NPU?

建议可以同步在Mate 70 Pro/Mate 80/Pura 80 Pro等机型验证。