SpaceMIT Execution Provider 进行AI加速的问题

在参考ONNX Runtime | Bianbu | 进迭时空开发者社区
”我们开发了 SpaceMIT Execution Provider,它会使用扩展 AI 指令进行加速,只需在开发应用时指定 SpaceMITExecutionProvider“

我们实际在在MUSEPi Pro开发板上运行了一个模型,得到的推理时间如下:
不使用SpaceMit的ExecutionProvider时:inference time: 3072 ms.
使用SpaceMit的ExecutionProvider时 :inference time: 8396 ms.

疑惑的是使用SpaceMIT Execution Provider的推理时间反而更长!

请问SpaceMIT Execution Provider确定会调用CPU的矩阵扩展指令吗?
在使用SpaceMIT Execution Provider的时候,有特殊需要注意的事项,我们没有考虑到吗?


实际运行batch size 128的情况,
不打开优化:
./run_demo_test_optimize xx_model.onnx 0
inference time: 3072 ms.
打开优化:
./run_demo_test_optimize xx_model.onnx 1
inference time: 8396 ms.

先说明一下库的版本(libspacemit.so.xxx的尾缀),然后是这个模型是啥,是否是量化的模型(非量化模型目前版本没有加速)

是进迭时空官网下载的,
下载连接:https://archive.spacemit.com/spacemit-ai/onnxruntime/spacemit-ort.riscv64.1.2.2.tar.gz

压缩包里有libonnxruntime.so,libonnxruntime-genai.so

但是,libonnxruntime.so没有搜到vmadot调用,
libonnxruntime-genai.so搜到smt.vmadotsu.hp v17,v26,v14,v1,3,i8

    linux-vdso.so.1 (0x0000003f93630000)
    libatomic.so.1 => /lib/riscv64-linux-gnu/libatomic.so.1 (0x0000003f9360b000)
    libonnxruntime.so.1 => /lib/libonnxruntime.so.1 (0x0000003f92600000)
    libonnxruntime_mlas.so => /lib/libonnxruntime_mlas.so (0x0000003f935a5000)
    libspacemit_ep.so.1 => /lib/libspacemit_ep.so.1 (0x0000003f92494000)
    libstdc++.so.6 => /lib/riscv64-linux-gnu/libstdc++.so.6 (0x0000003f92200000)
    libm.so.6 => /lib/riscv64-linux-gnu/libm.so.6 (0x0000003f93527000)
    libgcc_s.so.1 => /lib/riscv64-linux-gnu/libgcc_s.so.1 (0x0000003f92476000)
    libc.so.6 => /lib/riscv64-linux-gnu/libc.so.6 (0x0000003f92082000)
    /lib/ld-linux-riscv64-lp64d.so.1 (0x0000003f93632000)

Hello!
I’m sorry that I’m asking a question that’s not really on the topic.
Could you tell me if SpacemitExecutionProvider is an open-source project, can I see its source code somewhere? Or is the libspacemit_ep library closed?
I am interested in the scenario of using tcm memory.

The libspacemit_ep library is now closed. Maybe this will help: tcm: tcm lib and application demo

对于K1,只有量化模型存在AI指令加速的情况,那么对模型量化之后,性能情况会有大幅好转(大概10倍+),另,相关推理库升级至2.0.0+beta2版本,使用该链接下载,https://archive.spacemit.com/spacemit-ai/onnxruntime/spacemit-ort.riscv64.2.0.0%2Bbeta2.tar.gz
(该链接大概在9.8可以开放)

Thank you!
Do you know if SpacemIT’s llama.cpp uses TCM-memory to improve the efficiency of operation execution?

SpacemiT’s llama.cpp is now open, spacemit-com/llama.cpp at add-spacemit-backend. Currently, TCM-memory is only used in libspacemit_ep, and libspacemit_ep_llm will be available soon.

在使用2.0.0版本库的时候,报了以下的错误:
2025-01-18 00:50:59.020304789 [E:onnxruntime:, compiler_depend.ts:509 ExecuteKernel] Non-zero status code returned while running SpineSubgraph_7569176693315599287_22 node. Name:‘SpaceMITExecutionProvider_SpineSubgraph_7569176693315599287_22_0’ Status Message: can not find dispatch at node /blocks.0/attn/v/MatMul[MatMul]
terminate called after throwing an instance of ‘Ort::Exception’
what(): Non-zero status code returned while running SpineSubgraph_7569176693315599287_22 node. Name:‘SpaceMITExecutionProvider_SpineSubgraph_7569176693315599287_22_0’ Status Message: can not find dispatch at node /blocks.0/attn/v/MatMul[MatMul]
在使用1.2.2版本库的时候,模型量化使用x86版本的onnxruntime,生成int8的onnx版本模型后,在开发版上直接跑,结果上看,没有按照期望的调用spaceMit的EP,请问量化这一步,可以用x86的做吗?

不建议,因为ep对量化格式有一点要求,比如权重对称量化之类,模型量化最好用xquant, 软件包库 · archive / pypi · GitLab,那么当然,xquant可以在x86上跑,

```
python -m xquant --config ./demo_json.json
# 指定输入以及输出模型路径
python -m xquant -c./demo_json.json -i demo.onnx -o demo.q.onnx
# 默认动态量化,不需要json配置文件
python -m xquant -i demo.onnx -o demo.q.onnx
# 转为FP16,不需要json配置文件
python -m xquant -i demo.onnx -o demo.q.onnx --fp16
```

进迭时空开发者社区这个文档有点旧,也可以勉强看看