Deepseek 在Snapdragon 8 Elite平台推理部署教程
发布时间:2025-07-31 15:21:03
·
55 阅读
·
0 评论
本文档旨在指导用户如何在 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"