Deepseek 在Snapdragon 8 Elite平台推理部署教程

本文档旨在指导用户如何在 Android 设备上手动部署和执行基于 QNN SDK 和 Genie 推理引擎的 DeepSeek 模型

第一步:环境确认与准备

在开始之前,请确保您的开发环境和目标设备已准备就绪。

确认 ADB 环境

首先,确认您的电脑已正确安装 Android 调试桥 (ADB) 工具,并且能够成功连接到您的目标设备。在终端或命令提示符中运行以下命令:

adb devices

您应该能看到您的设备序列号出现在列表中,状态为 `device`。如果未出现或状态为 `unauthorized`,请检查您的 USB 连接、驱动程序以及设备上的 USB 调试授权。

第二步: 推送文件

2.1 Linux / macOS 用户推送指令

请在您的工作目录(包含模型 .bin 文件、prompts_qwen2.5.txt 等的目录)下执行以下命令。请将 <您的设备序列号> 替换为 adb devices 命令显示的序列号,ARCH 设置为您的目标架构 (如 79),SDK目录下有bin文件依赖(注意路径)。

#  清理环境
adb -s <您的设备序列号> shell "rm -rf /data/local/tmp/qwen2_deepseek_test && mkdir -p /data/local/tmp/qwen2_deepseek_test"
# 设置目标架构
export QNN_SDK_ROOT="/path/to/your/qnn/sdk"
ARCH="79"
DEVICE="<您的设备序列号>"
REMOTE_DIR="/data/local/tmp/qwen2_deepseek_test"

# 推送模型文件
adb -s $DEVICE push *.serialized.bin $REMOTE_DIR

# 推送可执行文件
adb -s $DEVICE push $QNN_SDK_ROOT/bin/aarch64-android/genie-t2t-run $REMOTE_DIR

# 推送安卓库文件
adb -s $DEVICE push $QNN_SDK_ROOT/lib/aarch64-android/libc++_shared.so $REMOTE_DIR
adb -s $DEVICE push $QNN_SDK_ROOT/lib/aarch64-android/libGenie.so $REMOTE_DIR
adb -s $DEVICE push $QNN_SDK_ROOT/lib/aarch64-android/libQnnHtp.so $REMOTE_DIR
adb -s $DEVICE push $QNN_SDK_ROOT/lib/aarch64-android/libQnnSystem.so $REMOTE_DIR
adb -s $DEVICE push $QNN_SDK_ROOT/lib/aarch64-android/libQnnHtpPrepare.so $REMOTE_DIR
adb -s $DEVICE push $QNN_SDK_ROOT/lib/aarch64-android/libQnnHtpNetRunExtensions.so $REMOTE_DIR
adb -s $DEVICE push $QNN_SDK_ROOT/lib/aarch64-android/libQnnHtpV${ARCH}Stub.so $REMOTE_DIR

# 推送DSP库文件
adb -s $DEVICE push $QNN_SDK_ROOT/lib/hexagon-v${ARCH}/unsigned/libQnnHtpV${ARCH}Skel.so $REMOTE_DIR

# 推送配置文件和提示词
adb -s $DEVICE push qbq_qcdsqwen1p5B_w4_0516.json $REMOTE_DIR
adb -s $DEVICE push prompts_qwen2.5.txt $REMOTE_DIR
adb -s $DEVICE push tokenizer.json $REMOTE_DIR
adb -s $DEVICE push htp_backend_ext_config.json $REMOTE_DIR

2.2 Windows 用户推送指令
请在您的工作目录(包含模型 .bin 文件、prompts_qwen2.5.txt 等的目录)下,打开命令提示符 (P) 执行以下命令。请将 <您的设备序列号> 替换为实际序列号,并将 ARCH 设置为目标架构 (如 79),SDK目录下有bin文件依赖(注意路径)。
#  清理环境
adb -s <您的设备序列号> shell "rm -rf /data/local/tmp/qwen2_deepseek_test && mkdir -p /data/local/tmp/qwen2_deepseek_test"
# 设置目标架构和设备
set QNN_SDK_ROOT="C:\path\to\your\qnn\sdk"
set ARCH=79
set DEVICE=<您的设备序列号>
set REMOTE_DIR=/data/local/tmp/qwen2_deepseek_test

# 推送模型文件 (Windows CMD 不支持通配符,需要使用 for 循环)
for %f in (*.serialized.bin) do adb -s %DEVICE% push %f %REMOTE_DIR%

# 推送可执行文件
adb -s %DEVICE% push %QNN_SDK_ROOT%\bin\aarch64-android\genie-t2t-run %REMOTE_DIR%

# 推送安卓库文件
adb -s %DEVICE% push %QNN_SDK_ROOT%\lib\aarch64-android\libc++_shared.so %REMOTE_DIR%
adb -s %DEVICE% push %QNN_SDK_ROOT%\lib\aarch64-android\libGenie.so %REMOTE_DIR%
adb -s %DEVICE% push %QNN_SDK_ROOT%\lib\aarch64-android\libQnnHtp.so %REMOTE_DIR%
adb -s %DEVICE% push %QNN_SDK_ROOT%\lib\aarch64-android\libQnnSystem.so %REMOTE_DIR%
adb -s %DEVICE% push %QNN_SDK_ROOT%\lib\aarch64-android\libQnnHtpPrepare.so %REMOTE_DIR%
adb -s %DEVICE% push %QNN_SDK_ROOT%\lib\aarch64-android\libQnnHtpNetRunExtensions.so %REMOTE_DIR%
adb -s %DEVICE% push %QNN_SDK_ROOT%\lib\aarch64-android\libQnnHtpV%ARCH%Stub.so %REMOTE_DIR%

# 推送DSP库文件
adb -s %DEVICE% push %QNN_SDK_ROOT%\lib\hexagon-v%ARCH%\unsigned\libQnnHtpV%ARCH%Skel.so %REMOTE_DIR%

# 推送配置文件和提示词
adb -s %DEVICE% push qbq_qcdsqwen1p5B_w4_0516.json %REMOTE_DIR%
adb -s %DEVICE% push prompts_qwen2.5.txt %REMOTE_DIR%
adb -s %DEVICE% push tokenizer.json %REMOTE_DIR%
adb -s %DEVICE% push htp_backend_ext_config.json %REMOTE_DIR%

第三步:在设备上执行模型

文件推送完毕后,我们需要进入设备的 shell 环境来运行模型。
1. 进入 ADB Shell
adb -s <您的设备序列号> shell
2. 导航到工作目录
进入 shell 后,首先切换到我们刚才推送文件的目录。
cd /data/local/tmp/qwen2_deepseek_test/

3. 解决执行问题并运行
直接运行 genie-t2t-run 可能会遇到几个问题,以下是解决方案。
  • 问题一: Permission denied
默认情况下,推送到 /data/local/tmp 的文件可能没有执行权限。
    • 授予权限:
chmod +x genie-t2t-run

可执行文件 genie-t2t-run 找不到它所依赖的共享库 (.so 文件),因为它们不在系统的标准库路径中。我们需要通过设置环境变量 LD_LIBRARY_PATH 来告诉系统去哪里查找这些库。
    • 设置环境变量:
# 将当前目录添加到库搜索路径
export LD_LIBRARY_PATH=/data/local/tmp/qwen2_deepseek_test

# 添加 DSP 相关的库路径
export ADSP_LIBRARY_PATH="/data/local/tmp/qwen2_deepseek_test;/system/lib/rfsa/adsp;/system/vendor/lib/rfsa/adsp;/dsp"
设置好权限和环境变量后,使用以下命令启动模型推理:
# 为了方便,也可以把配置文件名设为变量
export LLM_CFG=qbq_qcdsqwen1p5B_w4_0516.json
export PROMPT_FILE=prompts_qwen2.5.txt

# 运行推理程序
./genie-t2t-run -c ${LLM_CFG} --prompt_file ${PROMPT_FILE}
或者直接使用文件名:
./genie-t2t-run -c qbq_qcdsqwen1p5B_w4_0516.json --prompt_file prompts_qwen2.5.txt
执行后,您应该能看到模型开始加载,并根据 prompts_qwen2.5.txt 文件中的内容生成回复。您可以使用 Ctrl+C 来中断执行。


之后可以运行自己的提示词

./genie-t2t-run -c qbq_qcdsqwen1p5B_w4_0516.json -p "<|begin▁of▁sentence|>You are a helpful assistant<|User|>提示词<|Assistant|><think>\n"


立即下载