尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

高通跃龙IQ-9100工业平台的开发经验分享(1): 部署 LLM 的差异与常见问题

高通跃龙IQ-9100工业平台的开发经验分享(1): 部署 LLM 的差异与常见问题 设备: 高通跃龙IQ-9100 (Thundercomm Ride, SA8775P, Hexagon v73)系统: Ubuntu 24.04 LTS with Qualcomm PPASDK: QAIRT 2.42 (手动部署) / PPA 提供 QAIRT 2.40模型: Qwen2.5-7B-Instruct Qwen3-4B一、概述高通跃龙IQ-9100 (SA8775P) 是高通的工业级平台与消费级手机平台如 Snapdragon 8 Gen 3共享相同的 Hexagon v73 DSP 架构但在软件栈、库路径、SDK 版本管理等方面存在显著差异。这些差异导致了一系列在手机端不会遇到的部署问题。本文记录在 IQ-9100 上部署 LLM 时遇到的 7 个具体问题及解决方案。二、平台差异对照维度消费级平台 (Snapdragon)工业平台 (IQ-9100 PPA)QNN 库来源QAIRT SDK 手动部署libqnn1PPA 包库路径用户自定义/usr/lib/(ARM) /usr/lib/rfsa/adsp/(DSP)genie 路径用户自定义/usr/local/bin/DSP skel 管理手动拷贝udev 规则 symlinkSDK 版本用户决定PPA 版本固定如 2.40soc_id 支持广泛udev 规则可能未覆盖三、问题分享3.1 问题genie-t2t-run: No such file or directory现象执行genie-t2t-run提示找不到文件。原因PPA 将 Genie 二进制安装到/usr/local/bin/而非/usr/bin/。默认 PATH 可能未包含该路径。解决方案# 确认实际路径whichgenie-t2t-run||find/usr-namegenie-t2t-run2/dev/null# 如果在 /usr/local/bin/确保 PATH 包含它exportPATH/usr/local/bin:$PATH3.2 问题Failed to create device: 14001现象genie-t2t-run加载模型时报Failed to create device错误码 14001。原因CDSP 守护进程cdsprpcd未运行或libcdsprpc.so符号链接缺失。解决方案# 重启 CDSP 守护进程sudosystemctl restart cdsprpcd# 检查状态systemctl status cdsprpcd --no-pager# 如果 libcdsprpc.so 符号链接缺失sudoln-sf/usr/lib/aarch64-linux-gnu/libcdsprpc.so.1.0.0\/usr/lib/aarch64-linux-gnu/libcdsprpc.so3.3 问题Unable to load system library ... libatomic.so.1现象运行genie-t2t-run时报动态库加载失败。原因libatomic1在 Ubuntu 24.04 上默认未安装。Genie 二进制依赖它来支持原子操作。解决方案sudoaptinstall-ylibatomic13.4 问题DSP skel 库找不到udev 规则未覆盖 soc_id 667现象推理时报 DSP 相关错误HTP 后端无法初始化。原因PPA 提供的 udev 规则文件/usr/lib/udev/rules.d/60-libqnn1.rules通过soc_id来决定创建哪些 DSP 库的符号链接。IQ-9100 的soc_id为667但该值未被包含在 udev 规则中。结果是安装libqnn1包后/usr/lib/rfsa/adsp/目录下没有创建 Hexagon v73 skel 库的符号链接DSP 端找不到需要的.so文件。解决方案手动创建符号链接。sudoln-sf/usr/lib/rfsa/adsp/hexagon-v73/* /usr/lib/rfsa/adsp/这会将hexagon-v73/子目录下的所有库包括libQnnHtpV73Skel.so、libQnnHtpV73.so等链接到 DSP 库搜索路径。3.5 问题Stub lib id mismatch现象Stub lib id mismatch: stubv2.42.0 skelv2.40.0原因QNN HTP 的 ARM 侧 stub 库和 DSP 侧 skel 库在 FastRPC 初始化时会校验版本号。两端的 QAIRT 版本必须精确匹配major.minor.patch。PPA 提供的 skel 库是 QAIRT 2.40而如果你从 QAIRT 2.42 SDK 部署了 ARM 侧库就会出现版本不匹配。解决方案确保 ARM 侧和 DSP 侧使用相同版本的库。# 从 QAIRT 2.42 SDK 拷贝 ARM 侧库sudocplibGenie.so libQnnHtp.so libQnnHtpPrepare.so libQnnSystem.so\libQnnHtpV73Stub.so libQnnHtpNetRunExtensions.so /usr/lib/# 从 QAIRT 2.42 SDK 拷贝 DSP 侧库sudocplibQnnHtpV73Skel.so libQnnHtpV73.so libqnnhtpv73.cat /usr/lib/rfsa/adsp/# 更新链接器缓存sudoldconfig需要拷贝的文件分两类ARM 侧/usr/lib/libGenie.so、libQnnHtp.so、libQnnHtpPrepare.so、libQnnSystem.so、libQnnHtpV73Stub.so、libQnnHtpNetRunExtensions.soDSP 侧/usr/lib/rfsa/adsp/libQnnHtpV73Skel.so、libQnnHtpV73.so、libqnnhtpv73.cat3.6 问题模型编译版本与设备 firmware 不匹配现象context binary 加载失败或加载成功但推理输出异常。原因context binary 在编译时绑定了特定的 QAIRT 版本。如果设备端 DSP firmware 对应的 QAIRT 版本与编译版本不同可能出现不兼容。解决方案确认设备 firmware 版本strings /usr/lib/rfsa/adsp/libQnnHtpV73Skel.so|grep-E^v[0-9]\.[0-9]\.[0-9]使用匹配版本的 SDK 编译设备 skel 版本需要的 QAIRT SDKv2.35.0.xxxQAIRT 2.35v2.40.0.xxxQAIRT 2.40v2.42.0.xxxQAIRT 2.42或者升级设备端库将编译使用的 QAIRT 版本的 ARM 侧和 DSP 侧库全部部署到设备见问题 5 的解决方案。3.7 问题Error 6001 / DSP busy现象运行genie-t2t-run报错 6001或 HTP 后端初始化失败。原因上一次推理进程没有正常退出仍持有 DSP 资源。FastRPC 的 DSP 会话是独占的。解决方案pkill-fgenie-t2t-runsleep2# 重试推理如果仍然失败重启 CDSP 守护进程sudosystemctl restart cdsprpcd四、版本确认速查在 IQ-9100 设备上执行以下命令可以快速确认环境状态# 操作系统cat/etc/os-release|head-2# 内核uname-r# QNN PPA 版本dpkg-l|greplibqnn# ARM 侧 QNN 库版本strings /usr/lib/libQnnHtp.so|grep-E^v[0-9]\.[0-9]\.[0-9]# DSP 侧 skel 版本strings /usr/lib/rfsa/adsp/libQnnHtpV73Skel.so|grep-E^v[0-9]\.[0-9]\.[0-9]# Genie 版本genie-t2t-run--help21|head-1# DSP 守护进程状态systemctl status cdsprpcd --no-pager|head-3# DSP 库符号链接ls-la/usr/lib/rfsa/adsp/libQnnHtpV73Skel.so五、总结#问题根因解决方案1genie-t2t-run找不到安装在/usr/local/bin/更新 PATH2Failed to create device: 14001CDSP 守护进程未运行重启cdsprpcd3libatomic.so.1缺失Ubuntu 24.04 未默认安装apt install libatomic14DSP skel 找不到udev 规则未覆盖 soc_id 667手动 symlink hexagon-v735Stub/skel 版本不匹配PPA 版本 ≠ 编译 SDK 版本部署匹配版本的库文件6编译版本 vs 设备 firmwarecontext binary 绑定 SDK 版本用匹配版本编译或升级设备库7Error 6001 / DSP busy前一进程未释放 DSP 资源pkill后重试IQ-9100 作为工业级平台使用 PPA 包管理 QNN 运行时与标准 QAIRT SDK 的手动部署方式在路径规范、版本管理和 udev 配置上均有差异。部署前需要逐一确认这些环境要素避免在推理阶段才发现基础环境问题。
返回列表