ModelZoo模型示例

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

示例介绍

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

  • Whisper-Medium

  • Qwen3-VL

  • cosyvoice3

样例运行

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

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

该示例位于开发样例包中 houmo-examples_<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
    
  2. 下载编译后模型文件:

    python3 get_model.py --type hmm
    

    获得编译后的模型,存放在 houmo-examples_<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 文件。

  3. 进入示例程序编译目录:

    cd houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper/cpp
    
  4. 执行下面指令编译可执行文件:

    ./build_ndk.sh
    

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

  5. houmo-examples_<release>/houmo-examples-xh2/models/asr/whisper 目录下创建 models 文件夹:

    mkdir models
    
  6. 执行下面指令将下载的模型文件拷贝到 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_<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容器创建时关联目录。

  2. 将可执行文件传输到Android设备的 /data/houmo 目录:

    cd android
    adb push whisper-demo /data/houmo/models
    

推理模型

  1. 通过adb进入Android设备开发板命令行,并获取root权限:

    adb shell
    su
    
  2. 在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

  3. 在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