教程

目标后端:QNN HTP

注意
本节假定已通过 QNN 工作流获取 QNN HTP 上下文二进制文件。

示例 backend_ext_config.json 可以在以下位置找到 ${QNN_SDK_ROOT}/examples/Genie/configs/htp_backend_ext_config.json .

有关 QNN HTP 后端扩展配置选项的更多信息,请参阅 ${QNN_SDK_ROOT}/docs/QNN/general/htp/htp_backend.html .

目标平台:Android

选择在本教程中使用 LoRA 适配器:

  • Eaglet Dialog - LoRA & Draft Switching

有关字段和内容的详细信息,请参阅 Genie 对话框 JSON 配置字符串 他们的意思是。示例 model_config 可以在以下位置找到 ${QNN_SDK_ROOT}/examples/Genie/configs/llama3-3b/llama3-3b-eaglet-htp.json 。请注意,分词器路径和上下文二进制字段需要根据您的实际准备步骤进行更新。

要在 QNN HTP 后端使用 eaglet 与 LoRA 切换和草稿引擎切换运行,请在 android 上打开一个命令 shell 并运行以下命令。这假设已经设置了 HTP 架构(例如,ARCH=79)。请对库、二进制文件、分词器和 backend_ext_config 使用上述步骤。

adb shell mkdir -p /data/local/tmp/
adb push <path to llama3-3b-htp.json> /data/local/tmp/
adb push <path to standalone-engine.json> /data/local/tmp/
adb push <path to lora bin files> /data/local/tmp/

# open adb shell
adb shell
export LD_LIBRARY_PATH=/data/local/tmp/
export PATH=$LD_LIBRARY_PATH:$PATH

cd $LD_LIBRARY_PATH
./genie-t2t-run -c <path to llama3-3b-htp.json>
                -p "How to make an apple pie?"
                --engine_role target
                -l elementary,alpha0,0.5,alpha1,0.2
                --allow_engine_switch draft,<path to standalone_engine.json>

  • Eaglet Dialog - LoRA Switching

要仅在 QNN HTP 后端上使用 eaglet 和 LoRA 切换运行,请在 android 上打开一个命令 shell 并运行以下命令。这假设已经设置了 HTP 架构(例如,ARCH=79)。请对库、二进制文件、分词器和 backend_ext_config 使用上述步骤。

adb shell mkdir -p /data/local/tmp/
adb push <path to llama3-3b-htp.json> /data/local/tmp/
adb push <path to lora bin files> /data/local/tmp/

# open adb shell
adb shell
export LD_LIBRARY_PATH=/data/local/tmp/
export PATH=$LD_LIBRARY_PATH:$PATH

cd $LD_LIBRARY_PATH
./genie-t2t-run -c <path to llama3-3b-htp.json>
                -p "How to make an apple pie?"
                --engine_role target
                -l elementary,alpha0,0.5,alpha1,0.2

  • 不选择适配器:

要在 QNN HTP 后端运行,请在 android 上打开命令 shell 并运行以下命令。这假设已经设置了 HTP 架构(例如,ARCH=75)。

adb shell mkdir -p /data/local/tmp/
adb push ${QNN_SDK_ROOT}/bin/aarch64-android/genie-t2t-run /data/local/tmp/
adb push ${QNN_SDK_ROOT}/lib/aarch64-android/libGenie.so /data/local/tmp/
adb push ${QNN_SDK_ROOT}/lib/aarch64-android/libQnnHtp.so /data/local/tmp/
adb push ${QNN_SDK_ROOT}/lib/aarch64-android/libQnnSystem.so /data/local/tmp/
adb push ${QNN_SDK_ROOT}/lib/aarch64-android/libQnnHtpPrepare.so /data/local/tmp/
adb push ${QNN_SDK_ROOT}/lib/aarch64-android/libQnnHtpNetRunExtensions.so /data/local/tmp/
adb push ${QNN_SDK_ROOT}/lib/aarch64-android/libQnnHtpV${ARCH}Stub.so /data/local/tmp/
adb push ${QNN_SDK_ROOT}/lib/hexagon-v${ARCH}/unsigned/libQnnHtpV${ARCH}Skel.so /data/local/tmp/
adb push <path to htp_backend_ext_config.json> /data/local/tmp/
adb push <path to llama3-3b-htp.json> /data/local/tmp/
adb push <path to tokenizer.json> /data/local/tmp/
adb push <path to model bin files> /data/local/tmp/

# open adb shell
adb shell

export LD_LIBRARY_PATH=/data/local/tmp/
export PATH=$LD_LIBRARY_PATH:$PATH

cd $LD_LIBRARY_PATH
./genie-t2t-run -c <path to llama3-3b-eaglet-htp.json>
                -p "How to make an apple pie?"

GenieDialog_signal API

GenieDialog_Signal API 可用于向任何活动对话的正在进行的查询发出不同作的信号。
在这里插入图片描述

如何在 genie-t2t-run 中使用信号动作的教程

注意
有关如何使用 API 的参考实现 GenieDialog_Signal 请在示例中签出 genie-t2t-run 源代码, ${QNN_SDK_ROOT}/examples/Genie/genie-t2t-run 位于 。

在 genie-t2t-run 中,我们可以使用“–action”来指定需要发出信号的动作。此外,为了模仿多线程行为,可以调整睡眠。

例如:

./genie-t2t-run -c llama2-7b-htp.json
                -p "Tell me about Qualcomm."
                --action ABORT --sleep 5000

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐