nullname
nullname
> 现在这个Log里有显示用到npu吗?qnn的npu/gpu/cpu以及非qnn的CPU调用优先级是什么样的呢,有点困惑。 你的log里面显示初始化了npu/gpu/cpu,然后llama.cpp framework会按照注册顺序去询问backends是否支持op,所以这里framework发现npu支持op,就会使用npu执行
> 这里的hexagon-npu和qnn-npu有什么区别?是否可以理解为hexagon-npu是底层接口可直接操作寄存器,而qnn-npu是上层抽象,因此前者会更快? 这个是一个好问题,qnn框架有他自己的限制,1.仅支持有限的tensor data type,2.qnn的graph没办法修改也没办法销毁 这两个限制导致如果要在qnn的npu里面跑某些op会需要先convert,而直接用hexagon的intrinsic写的op,灵活性会大很多,可以规避以上两个缺点
> qnn的三个后端之间是怎么区分和管理的?在qnn sdk内部吗? qnn这个backend,我们能做的只是指定初始化的设备,其他tensor和graph的接口,不同设备是一样的,所以代码一样 > 如果我想调整offload优先级,比如 qnn_gpu 和 qnn_npu 同时支持的情况下,优先放到 qnn_npu去运行,应该怎么做呢,直接调整backends注册顺序吗 这种情况可以直接只注册npu backend,不过因为qnn本身tensor datatype的限制,估计支持的op不多
另外还是建议尝试用`hexagon-npu`跑,这个虽然编译环境设置麻烦点,但是性能确实好些
> 我在尝试使用hexagon-npu,但仍无法下载该sdk,发现可能是因为我是自己的docker开发环境,缺少systemd,导致qpm安装不完整。权限问题暂时不好解决这个问题。 > > 请问您在How-to-Build中提供的docker build脚本是否能够自动下载相关组件?我尝试了一下,提示无法拉取chraac/llama-cpp-qnn-hexagon-builder,进您docker hub的主页看也确实没有。这个docker是否还能获取到? 1. Qualcomm的license说hexagon-sdk只能每个账号的所有者自己用,所以鉴于法律风险,可能需要自己创建镜像 2. 其实也不复杂,可以弄个linux的host,先装完qpm和hexagon-sdk,然后mount到docker里面,问了gpt,这样只要把本地镜像发布出去,是在license的许可范围内的
> > 这种情况可以直接只注册npu backend,不过因为qnn本身tensor datatype的限制,估计支持的op不多 > > hexagon-sdk我再尝试一下,感谢指路。 > > 想再请教一个QNN的问题把这一块搞懂。只注册qnn_npu后发现所有算子都被offload到了CPU了,qnn_npu上没有一个算子,观察到是因为npu op support在图示位置被返回了false npu的ctx->supported_types为0,那和tensor->type按位与岂不是必定为0、不支持任何算子?相比较而言qnn_gpu的supported_types为3,还是有一些type返回true的. 这样看来npu是不支持任何算子吗…… 不好意思,看了下这里确实有问题,这个应该是之前加config的时候弄坏了,弄了个patch,本地跑了下能正常跑到npu能支持的op,有空的话可以参考下 ```patch Subject: [PATCH] qnn fix: update device capabilities for quantized types in qnn-lib to...
> MUL_MAT无法offload过去是因为我使用的量化模型吗,gpu/npu不支持量化计算? QNN的tensor确实现在还没有好的办法去支持ggml的量化,可以看看`hexagon-npu`这个backend > 只注册npu时显示mul_mat offload到了npu上,但推理时会崩溃 可以创建issue,另外附上stacktrace,这样才有更多的信息分析
Hi @akshatshah17 , look through your error log, found that: 1. the initialization of npu was failed, please make sure to put the `libQnnHtp*.so` to the same directory along side...
> thanks @chraac it's working, but from the logs below I can see that first it's offloads the layers to GPU and after that this log is comming qnn device...
> > [@chraac](https://github.com/chraac) Hello, Do we have an easy way to build llama.cpp with qnn-npu banckend. Thansk a lot. > > the qnn-gpu is working after I using Qwen model,...