高通 Gen AI 推理扩展 (GENIE)(2):教程和示例
本文介绍了Genie AI工具的环境设置和使用教程。环境设置部分包括Python、Linux和Windows系统的配置步骤,涉及QNN SDK路径设置和依赖库加载。教程部分重点展示了Llama 2 7B模型在Android和Windows平台上的不同对话应用方法,包括基础对话、LoRA、SSD、SPD和LADE等模式,提供了详细的命令行操作示例。文中还强调了配置文件路径和模型参数需要根据实际情况调
本节包含帮助用户熟悉 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 使用上述步骤
- Basic 基本
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"
更多推荐
所有评论(0)