Android 8gen3 NPU上推理卡死
按照run_qwen_qnn.sh中的命令执行./demo_qwen_npu,先输出以下内容,随后整个手机直接卡死(已将动态库、模型文件等拷贝到设备对应位置)
[INFO] Wed Jul 23 19:42:06 2025 [/root/mllm/src/backends/qnn/QNNBackend.cpp:118] Backend: libQnnHtp.so
[INFO] Wed Jul 23 19:42:06 2025 [/root/mllm/src/backends/qnn/QNNBackend.cpp:143] Backend build version: v2.35.0.250530123435_121478
[INFO] Wed Jul 23 19:42:06 2025 [/root/mllm/src/backends/qnn/QNNBackend.cpp:166] Initialize Backend Returned Status = 0
[INFO] Wed Jul 23 19:42:07 2025 [/root/mllm/src/backends/qnn/QNNBackend.cpp:636] Registered Op Package: libQnnLLaMAPackage_CPU.so and interface provider: LLaMAPackageInterfaceProvider
[INFO] Wed Jul 23 19:42:07 2025 [/root/mllm/src/backends/qnn/QNNBackend.cpp:636] Registered Op Package: libQnnLLaMAPackage_HTP.so and interface provider: LLaMAPackageInterfaceProvider
观察到demo实现中有这样两行代码:
cmdParser.add<string>("model", 'm', "specify mllm model path", false, "../models/qwen-1.5-1.8b-chat-int8.mllm");
auto decoding_model = QWenForCausalLM(config);
decoding_model.load("../models/qwen-1.5-1.8b-chat-q4k.mllm");
问题一:请问为什么这里要传入两个模型?一个用来做prefill一个用来做decode吗? 问题二:运行该命令为什么会卡死呢?
随后换用./demo_qwen2.5_npu,运行报错提示加载模型文件失败,发现demo中对应的代码为:
cmdParser.add<string>("model", 'm', "specify mllm model path", false, "../models/Qwen2.5-1.5B-Instruct.mllm");
auto decoding_model = QWenForCausalLM(config);
decoding_model.load("../models/qwen-2.5-1.5b-instruct-q4_0_4_4.mllm");
这里的Qwen2.5-1.5B-Instruct.mllm怎么获取呢?huggingface仓库里没找到对应文件。
因此我将这个模型也换成了下面的q4_0模型,这次可以运行下去了,但输出答非所问,且很快就崩溃了:
[INFO] Wed Jul 23 17:20:24 2025 [/root/mllm/src/backends/qnn/QNNBackend.cpp:118] Backend: libQnnHtp.so
[INFO] Wed Jul 23 17:20:24 2025 [/root/mllm/src/backends/qnn/QNNBackend.cpp:143] Backend build version: v2.35.0.250530123435_121478
[INFO] Wed Jul 23 17:20:24 2025 [/root/mllm/src/backends/qnn/QNNBackend.cpp:166] Initialize Backend Returned Status = 0
[INFO] Wed Jul 23 17:20:25 2025 [/root/mllm/src/backends/qnn/QNNBackend.cpp:636] Registered Op Package: libQnnLLaMAPackage_CPU.so and interface provider: LLaMAPackageInterfaceProvider
[INFO] Wed Jul 23 17:20:25 2025 [/root/mllm/src/backends/qnn/QNNBackend.cpp:636] Registered Op Package: libQnnLLaMAPackage_HTP.so and interface provider: LLaMAPackageInterfaceProvider
[Q] Give me a short introduction to large language model.
[A]
Utilizing the formula for the area of a triangle,, , A = 1/2 * 4 * 3, you can easily calculate the area of any triangle. Just substitute the base and the height into the formula and you're done So let's try to to find the area of a triangle with a base of 4 units of length and a height of 3 units of height. So, let's do the math. So the area of a triangle with a base ofAborted (core dumped)
问题三:这里为什么会答非所问且提前终止呢?和我将Qwen2.5-1.5B-Instruct.mllm改成qwen-2.5-1.5b-instruct-q4_0_4_4.mllm有关系吗?有关系的话,如何才能获取到Qwen2.5-1.5B-Instruct.mllm文件?
QNN-SDK version: 2.35.0.250530 Hexagon-SDK version: 5.5.5.0
问题一:传入两个模型其中int8模型进行prefill,其中q4k(int4模型)模型是来进行decode阶段的 问题二:卡死你可以看一下手机的内存占用情况,可能是内存占用满了,我跑7b模型的时候会因为内存不足而导致手机直接重启(加载两个模型以及计算图的原因会导致内存占用很大) 问题三:Qwen2.5-1.5B-Instruct.mllm部分应该传入int8量化模型,而不是q40模型(该模型是int4量化),int8模型你可以按照https://github.com/UbiquitousLearning/mllm/blob/main/tools/convertor/profiling_activation/README.md 如下链接的方法转换得到
传入两个模型其中int8模型进行prefill,其中q4k(int4模型)模型是来进行decode阶段的
请问prefill/decode为什么要分别用一个模型呢,出于哪些方面的考虑?
您好,请问您直接运行run qwen qnn脚本就能跑起来吗?手机需要root然后关闭SELinux enforcing模式吗?
传入两个模型其中int8模型进行prefill,其中q4k(int4模型)模型是来进行decode阶段的
请问prefill/decode为什么要分别用一个模型呢,出于哪些方面的考虑?
QNN是静态计算图,因此框架目前只关注了prefill时的加速,decode仍然使用cpu。后续会增加多个尺寸QNN计算图执行的支持。
您好,请问您直接运行run qwen qnn脚本就能跑起来吗?手机需要root然后关闭SELinux enforcing模式吗?
不需要root,QNN库文件需要使用adb上传而不是系统自带的库文件
我运行demo_qwen_npu也出现了卡死的情况
[INFO] Wed Oct 15 08:54:48 2025 [/home/xu/Documents/2025/OS2026/mllm-main/src/backends/qnn/QNNBackend.cpp:118] Backend: libQnnHtp.so [INFO] Wed Oct 15 08:54:48 2025 [/home/xu/Documents/2025/OS2026/mllm-main/src/backends/qnn/QNNBackend.cpp:143] Backend build version: v2.28.0.241029232508_102474 [INFO] Wed Oct 15 08:54:48 2025 [/home/xu/Documents/2025/OS2026/mllm-main/src/backends/qnn/QNNBackend.cpp:166] Initialize Backend Returned Status = 0 [INFO] Wed Oct 15 08:54:49 2025 [/home/xu/Documents/2025/OS2026/mllm-main/src/backends/qnn/QNNBackend.cpp:636] Registered Op Package: libQnnLLaMAPackage_CPU.so and interface provider: LLaMAPackageInterfaceProvider [INFO] Wed Oct 15 08:54:49 2025 [/home/xu/Documents/2025/OS2026/mllm-main/src/backends/qnn/QNNBackend.cpp:636] Registered Op Package: libQnnLLaMAPackage_HTP.so and interface provider: LLaMAPackageInterfaceProvider
但是内存应该够用,我是小米15
QNN-SDK version: 2.28.0.241029
Hexagon-SDK version: 5.5.5.0
我运行demo_qwen_npu但是也出现了卡死的情况
[INFO] Wed Oct 15 08:54:48 2025 [/home/xu/Documents/2025/OS2026/mllm-main/src/backends/qnn/QNNBackend.cpp:118] Backend: libQnnHtp.so [INFO] Wed Oct 15 08:54:48 2025 [/home/xu/Documents/2025/OS2026/mllm-main/src/backends/qnn/QNNBackend.cpp:143] Backend build version: v2.28.0.241029232508_102474 [INFO] Wed Oct 15 08:54:48 2025 [/home/xu/Documents/2025/OS2026/mllm-main/src/backends/qnn/QNNBackend.cpp:166] Initialize Backend Returned Status = 0 [INFO] Wed Oct 15 08:54:49 2025 [/home/xu/Documents/2025/OS2026/mllm-main/src/backends/qnn/QNNBackend.cpp:636] Registered Op Package: libQnnLLaMAPackage_CPU.so and interface provider: LLaMAPackageInterfaceProvider [INFO] Wed Oct 15 08:54:49 2025 [/home/xu/Documents/2025/OS2026/mllm-main/src/backends/qnn/QNNBackend.cpp:636] Registered Op Package: libQnnLLaMAPackage_HTP.so and interface provider: LLaMAPackageInterfaceProvider内存应该够用,我是小米15 QNN-SDK版本:2.28.0.241029 Hexagon-SDK版本:5.5.5.0
请问你们Hexagon-SDK 是在哪里下载的?通过什么途径联系高通公司获取?
请问是在哪里跑的?termux吗?