本节包含帮助用户熟悉 Genie 工作流程的教程。教程分为对话教程(例如 Llama 2 7B 或使用 KV$ 倒带)、嵌入教程(例如 BGE-Large)、配置文件教程以及如何构建源代码示例。

环境设置

Python

如果使用 QNN GenAiTransformer 后端,还请确保遵循此处的 Python 设置: <QNN_SDK_ROOT>/docs/QNN/general/setup.html 。此外, qnn-genai-transformer-composer 工具将需要安装特定版本的软件包,如下表所述。

在这里插入图片描述

Linux

可以通过调用 <QNN_SDK_ROOT>/bin/envsetup.sh 脚本来设置用户环境。
在 Linux 主机上打开命令 shell 并运行:

# Replace <QNN_SDK_ROOT> with path where QNN SDK was installed
source <QNN_SDK_ROOT>/bin/envsetup.sh

这将设置/更新以下环境变量:

  • QNN_SDK_ROOT
  • Python路径
  • PATH
  • LD_LIBRARY_PATH

${QNN_SDK_ROOT} 表示 Qualcomm® AI Engine Direct SDK 根目录的完整路径。

Windows

用户环境可以通过调用 <QNN_SDK_ROOT>/bin/envsetup.ps1 脚本来设置。

首先,以管理员身份打开 Developer PowerShell for VS2022 。

Set-ExecutionPolicy RemoteSigned

然后,执行以下脚本。

# Replace <QNN_SDK_ROOT> with path where QNN SDK was installed
> & "<QNN_SDK_ROOT>\bin\envsetup.ps1"

这将设置/更新以下环境变量:

  • QNN_SDK_ROOT
  • PATH
  • Python路径

${QNN_SDK_ROOT} 表示 Qualcomm® AI Engine Direct SDK 根目录的完整路径。

对话框教程

Llama 2 7B

请选择您的目标后端: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
    请选择您想要的对话类型:

    • Basic 基本
      有关字段和内容的详细信息,请参阅 Genie 对话框 JSON 配置字符串 他们的意思是。示例 model_config 可以在以下位置找到 ${QNN_SDK_ROOT}/examples/Genie/configs/llama2-7b-htp-lora.json 。请注意,分词器路径和上下文二进制字段需要根据您的实际准备步骤进行更新
      要在 QNN HTP 后端使用 LoRA 运行,请在 android 上打开一个命令 shell 并运行以下命令。这假设已经设置了 HTP 架构(例如,ARCH=79)。请对库、二进制文件、分词器和 backend_ext_config 使用上述步骤
adb shell mkdir -p /data/local/tmp/
adb push <path to llama2-7b-htp-lora.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 llama2-7b-htp-lora.json>
                -p "What is the most popular cookie in the world?"
                -l lora1,alpha,0.5
  • SSD Q1
    有关字段和内容的详细信息,请参阅 Genie 对话框 JSON 配置字符串 他们的意思是。示例 model_config 可以在以下位置找到 ${QNN_SDK_ROOT}/examples/Genie/configs/llama2-7b-htp-ssd.json 。请注意,分词器路径和上下文二进制字段需要根据您的实际准备步骤进行更新。

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

adb shell mkdir -p /data/local/tmp/
adb push <path to llama2-7b-htp-ssd.json> /data/local/tmp/
adb push <path to forecast-prefix-dir> /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 llama2-7b-htp-ssd.json>
                -p "What is the most popular cookie in the world?"

  • SPD
adb shell mkdir -p /data/local/tmp/
adb push <path to llama2-7b-draft-htp-target-htp-spd.json> /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 llama2-7b-draft-htp-target-htp-spd.json>
                -p "What is the most popular cookie in the world?"

  • LADE
adb shell mkdir -p /data/local/tmp/
adb push <path to llama2-7b-htp-lade.json> /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 llama2-7b-htp-lade.json>
                -p "What is the most popular cookie in the world?"

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

在 Windows 上的 Snapdragon 主机上打开 Developer PowerShell for VS2022 并运行:

# Make sure environment is setup as per instructions, or can cd into bin folder on Windows host
cd <QNN_SDK_ROOT>\bin\aarch64-windows-msvc
.\genie-t2t-run.exe -c <path to llama2-7b-htp.json>
                    -p "Tell me about Qualcomm"

Logo

纵情码海钱塘涌,杭州开发者创新动! 属于杭州的开发者社区!致力于为杭州地区的开发者提供学习、合作和成长的机会;同时也为企业交流招聘提供舞台!

更多推荐