跳到主要内容

ModelZoo模型示例

ModelZoo提供了帮助用户快速将模型移植到后摩设备上的模型合集,其中包括推理、精度和性能评估等一套完整的代码和工具。

示例介绍

ModelZoo的 models 目录下有部分C++示例支持交叉编译后在Android Native环境运行推理,目前包括:

  • Whisper-Medium

  • Qwen3-VL

  • cosyvoice3

样例运行

示例需在Linux主机端Docker环境中完成构建与模型准备;由于Android设备与主机在架构及运行环境上存在差异,无法直接本地编译运行,因此需通过Android NDK进行交叉编译生成设备可执行程序,并依赖驱动SDK与Runtime提供运行支持。

下面以Whisper模型示例为例,介绍如何在Android上完成模型推理。

该示例位于开发样例包中 houmo-examples-<target_hw>_<release>/houmo-examples-xh2/models/asr/whisper/cpp 目录下。

整体流程如下:

  1. 在主机端安装Docker镜像

  2. 配置主机端Docker镜像环境

  3. Docker镜像中编译示例程序并准备模型

  4. 推送模型文件到Android设备

  5. 推理模型

在执行本章节前,请确保已完成Android端Runtime推理环境部署

../_images/infer_workflow.png

图 3 模型应用示例部署流程

编译示例程序与模型准备

配置主机端Docker镜像环境 完成后,在主机端Docker镜像中,继续执行下面步骤,编译示例程序并准备模型:

  1. 进入模型示例目录:
cd houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper
  1. 下载编译后模型文件:
python3 get_model.py --type hmm

获得编译后的模型,存放在 houmo-examples-<target_hw>_<release>/houmo-examples-xh2/models/asr/whisper/output/xh2 目录下,共有 whisper_prefill.hmmwhisper_encode.hmmwhisper_decode.hmm 三个模型,并生成了 houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper/whisper-medium/tokenizer.json 文件。

  1. 进入示例程序编译目录:
cd houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper/cpp
  1. 执行下面指令编译可执行文件:
./build_ndk.sh

编译后生成 houmo-examples-<target_hw>_<release>/houmo-examples-xh2/models/asr/whisper/android/whisper-demo 可执行文件。

  1. houmo-examples-<target_hw>_<release>/houmo-examples-xh2/models/asr/whisper 目录下创建 models 文件夹:
mkdir models
  1. 执行下面指令将下载的模型文件拷贝到 models 文件夹中:
cp output/xh2/whisper_prefill.hmm models
cp output/xh2/whisper_encode.hmm models
cp output/xh2/whisper_decode.hmm models
cp whisper-medium/tokenizer.json models
cp ../../../data/audio/audio.mp3 models

audio.mp3 位于 houmo-examples-<target_hw>_<release>/houmo-examples-xh2/data/audio 目录下。

  1. 退出Docker镜像:
exit

推送模型文件

执行下面步骤,在主机端,推送模型文件到Android设备。

  1. 将下载的模型文件 $PWD/houmo-examples-xh2/models/asr/whisper/models 传输到Android设备的 /data/houmo 目录:
cd $PWD/houmo-examples-xh2/models/asr/whisper
adb push models /data/houmo

$PWD 所指定的目录为Docker容器创建时关联目录。

  1. 将可执行文件传输到Android设备的 /data/houmo 目录:
cd android
adb push whisper-demo /data/houmo/models

推理模型

  1. 通过adb进入Android设备开发板命令行,并获取root权限:
adb shell
su
  1. 在Android设备端,确保下面环境变量已设置:
export HOUMO_TARGET=xh2
export TCIM_BACKEND=Xh2HalBackend
export TCIM_RUNTIME_PATH=$TCIM_RUNTIME
export LD_LIBRARY_PATH=$DRV_HAL:${TCIM_RUNTIME_PATH}/lib

其中 $DRV_HAL 应替换为驱动安装后系统软件动态库 hal 目录,如 /data/houmo/houmo-drv-xh2/hal$TCIM_RUNTIME 为TCIM 运行时开发工具的路径,如 /data/houmo/houmo-tcim-runtime-xh2

  1. 在Android设备端,执行下面指令推理模型:
cd /data/houmo/models
./whisper-demo \
--audio_path audio.mp3 \
--encode_path whisper_encode.hmm \
--decode_path whisper_decode.hmm \
--prefill_path whisper_prefill.hmm \
--tokenizer_path tokenizer.json