集成NPU使用说明

NPU Android Linux 环境准备 算子支持 中级 高级

使用步骤

环境准备

在基本的环境准备之外,使用NPU需要集成HUAWEI HiAI DDK。 DDK包含了使用NPU的对外接口(包括模型构建、加载,计算等),以及封装成动态库的接口实现(名为libhiai*.so)。 下载DDK, 并将压缩包解压后的目录设置为环境变量${HWHIAI_DDK}。构建脚本将使用这个环境变量寻找DDK。

编译构建

在Linux环境下,使用MindSpore源代码根目录下的build.sh脚本可以构建集成NPU的MindSpore Lite包,命令如下, 它将在MindSpore源代码根目录下的output目录下构建出MindSpore Lite的包,其中包含NPU的动态库,libmindspore-lite动态库以及测试工具Benchmark。

bash build.sh -I arm64 -e npu

有关编译详情见Linux环境编译

集成使用

  • 集成说明

    开发者需要集成使用NPU功能时,需要注意:

    • 在代码中配置NPU后端, 有关使用Runtime执行推理详情见使用Runtime执行推理(C++)

    • 编译执行可执行程序。如采用动态加载方式,参考编译输出中编译选项为-I arm64-I arm32时的内容, 配置好环境变量,将会动态加载libhiai.so, libhiai_ir.so, libhiai_ir_build.so。例如:

    export LD_LIBRARY_PATH=mindspore-lite-{version}-inference-android-{arch}/inference/third_party/hiai_ddk/lib/:$LD_LIBRARY_PATH
    
  • Benchmark测试NPU推理

    用户也可以使用MindSpore Lite的Benchmark工具测试NPU推理。 编译出的Benchmark位置见编译输出。 将构建包传到具有NPU芯片(支持的芯片详情见芯片与HUAWEI HiAI Version版本映射关系) 的Android手机的/data/local/tmp/目录下,在手机上使用Benchmark工具测试NPU推理,示例如下:

    • 测性能

    ./benchmark --device=NPU --modelFile=./models/test_benchmark.ms --timeProfiling=true
    
    • 测精度

    ./benchmark --device=NPU --modelFile=./models/test_benchmark.ms --inDataFile=./input/test_benchmark.bin --inputShapes=1,32,32,1 --accuracyThreshold=3 --benchmarkDataFile=./output/test_benchmark.out
    

有关Benchmark使用详情,见Benchmark使用

有关环境变量设置,需要根据编译输出中编译选项为-I arm64-I arm32时的目录结构, 将libmindspore-lite.so(目录为mindspore-lite-{version}-inference-android-{arch}/inference/lib)和 NPU库(目录为mindspore-lite-{version}-inference-android-{arch}/inference/third_party/hiai_ddk/lib/)所在的目录加入${LD_LIBRARY_PATH}

芯片支持

NPU芯片支持见芯片与HUAWEI HiAI Version版本映射关系

算子支持

NPU算子支持见Lite 算子支持