6,700
社区成员
发帖
与我相关
我的任务
分享问题1.Python架构兼容性:是否支持 x64 Python 在 ARM64 设备上运行?还是必须使用 ARM64 原生 Python?
- ARM64 Python (`ARM64`) + win_amd64 wheel → 失败:"not a supported wheel"
- x64 Python (`AMD64`) + win_amd64 wheel → 模型加载成功,但NPU通信失败(`DspTransport.openSession qnn_open failed`)
完整示例代码:请提供在 Windows ARM64 上加载 Qwen2.0-7B-SSD-8380-2.34 的完整 Python 示例。
backend_new.log显示后端启动成功,模型加载成功(第26行显示"NPU 模型加载成功"),看起来在x64 Python环境下,库加载和模型初始化都成功了,但底层NPU通信仍有问题(之前的错误日志显示DspTransport错误)。这说明Python代码层面可以运行,但硬件访问层有问题。
问题2.wheel文件:官方是否有 qai_appbuilder-2.38.0-cp312-cp312-win_arm64.whl 下载链接?
从qai_appbuilder的METADATA文件发现:
"Download Python extension qai_appbuilder-{version}-cp312-cp312-win_arm64.whl
问题3 环境要求:Windows ARM64 平台的最低要求?
- QAI AppBuilder 版本:当前使用哪个版本?
- QNN SDK 版本:需要 2.34/2.37/2.38 的哪个?
- NPU驱动要求:骁龙X Elite 需要哪个版本的 NPU 驱动和 QNN SDK?是否需要特定的驱动版本、QAI库版本
- 依赖库:需要哪些特定的 DLL/so 文件?
问题4 如果目前没有Windows ARM64的Python wheel,在骁龙X Elite设备上运行Python大模型应用的推荐方案是什么?
> ① x64 Python仿真运行 + win_amd64 wheel(当前方案,NPU通信失败)
> ② C++版本 + 特定编译
> ③ 改用GenieAPIService(HTTP API)
GenieContext API签名
问题:`GenieContext.__init__()` 到底需要什么参数?
```python
# 当前代码
self.model = GenieContext(config_path)
# 是否需要额外参数?
# - debug 标志?
# - 设备ID?
# - 性能模式?
问题5(技术规格): "Windows ARM64 + Qwen2.0-7B-SSD的正确部署需要哪些技术规格?
> - Python版本要求
> - QNN SDK版本
> - NPU驱动版本
> - 模型文件格式(是否必须`.bin` + `config.json`)模型文件要求,`C:/model/Qwen2.0-7B-SSD-8380-2.34/` 目录需要什么文件?
- config.json 格式要求
- 模型权重文件:`.bin`、`.onnx`、还是其他?
- 量化配置:如何指定 QNN 2.34 量化参数?
问题6. Query 回调机制
`Query(prompt, callback)` 的 callback 期望什么返回值?
```python
# 当前代码
def callback(text):
result_parts.append(text)
return True # 返回True是什么意思?
# callback应该返回True/False吗?还是None?
下面是我自己搜索到的答案,请确认是否正确
根据检索内容,以下是针对问题的解答:
ARM64设备必须使用原生ARM64 Python环境。x64 Python在ARM64设备上通过仿真运行时,会导致NPU通信失败(如DspTransport.openSession qnn_open failed错误)。
完整示例代码(Windows ARM64加载Qwen2.0-7B-SSD):
import qai_appbuilder as qai
# 配置模型路径与参数
model = qai.load_model(
model_path="C:/model/Qwen2.0-7B-SSD-8380-2.34/",
backend="QNN",
device="NPU",
precision="INT8"
)
# 执行推理
response = model.infer(prompt="分析销售数据", max_tokens=128)
print(response)
需确保:
使用ARM64原生Python环境
安装ARM64版QAI AppBuilder wheel
官方提供ARM64专用wheel:格式为qai_appbuilder-{version}-cp312-cp312-win_arm64.whl,需从高通模型广场(https://www.aidevhome.com/data/models/)或Hugging Face下载。
无直接链接说明:检索内容未提供具体下载URL,但明确存在ARM64版本。
|
组件 |
要求 |
说明 |
|---|---|---|
|
QAI AppBuilder |
≥2.34 |
必须匹配SDK版本 |
|
QNN SDK |
2.34/2.38 |
需与驱动版本一致 |
|
NPU驱动 |
骁龙X Elite专用版 |
需支持MCDM架构(替代FastRPC) |
|
依赖库 |
|
需包含QNN运行时库 |
|
Python |
3.12+ ARM64原生 |
非x64仿真环境 |
C++原生方案(推荐):
通过CMake编译ARM64版本,直接调用QNN SDK底层API
避免Python环境兼容问题,性能更优
GenieAPIService(HTTP API):
调用预部署的本地模型服务
需配置GenieContext参数:
self.model = GenieContext(
config_path="config.json",
device_id="npu0", # 指定NPU设备
debug=False, # 关闭调试模式
perf_mode="high" # 高性能模式
)
|
项目 |
要求 |
|---|---|
|
模型目录结构 |
|
|
量化配置 |
在 |
|
Python版本 |
3.12.x ARM64原生 |
|
QNN SDK |
≥2.34 |
callback返回值含义:
def callback(text):
result_parts.append(text)
return True # 返回True继续生成,False终止推理
需返回布尔值控制文本生成流程。
1.使用AMD64的3.12python,加载模型报错请具体说明那个文件,是weibui还是genieapiservice
2.https://github.com/quic/ai-engine-direct-helper/releases
3.QAI AppBuilder需与模型版本对应,SDK使用2.37和2.38建议使用2.38,NPU驱动查看是否是30.0.145.1000,依赖库使用的是SDK下面的libs请具体查看
4.建议使用AMD64python,ARM64 需要依赖包有的需自行编译。GenieContext只接受两个参数config和debug
5.模型文件格式查看下载的模型文件。
6正确