PaddlePaddle / Paddle-Lite

PaddlePaddle High Performance Deep Learning Inference Engine for Mobile and Edge (飞桨高性能深度学习端侧推理引擎)
https://www.paddlepaddle.org.cn/lite
Apache License 2.0
6.89k stars 1.6k forks source link

linux arm64 NPU error compilation.cc:75 ~Compilation device_context: No device found #8559

Closed 2050airobert closed 5 months ago

2050airobert commented 2 years ago

hi, linux arm64 with a311d 设备上,运行demo程序,failed,出现“linux arm64 NPU error compilation.cc:75 ~Compilation device_context: No device found”。跟之前的https://github.com/PaddlePaddle/Paddle-Lite/issues/8362 问题有点类似,不过之前是在android arm7编译环境下跑的。具体log如下 log-0302.txt 请问下,是否还是按照之前的方式,麻烦更新下linux arm下的库?

BR

paddle-bot-old[bot] commented 2 years ago

您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看官网文档常见问题历史Issue来寻求解答。祝您生活愉快~

Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the APIFAQ and Github Issue to get the answer.Have a nice day!

2050airobert commented 2 years ago

[ 6087.487168] Galcore version 6.4.6.2.5.3.2

hong19860320 commented 2 years ago

[ 6087.487168] Galcore version 6.4.6.2.5.3.2

目前demo中只提供了6.4.4.3的VSI SDK + Amlogic DDK 哈,建议向开发板销售商提供一个6.4.4.3的A311D的galcore.ko 然后insmod galcore.ko

顺便可以尝试基于 TIM-VX 方式支持 A311D 芯片 https://paddle-lite.readthedocs.io/zh/develop/demo_guides/verisilicon_timvx.html

2050airobert commented 2 years ago

1 那如果我换个linux镜像,比如去年年初的版本,会不会系统自带galcore.ko就是6.4.4.3的版本呢? 2 这个galcore.ko 区分android和ubuntu系统吗? 之前你们给过一个 galcore.ko 6.4.4.3的库,但是是android armv7的版本?能通用吗? 3 那除了6.4.4.3的A311D的galcore.ko,你们这边可以提供下linux下的VSI SDK + Amlogic DDK更新包吗?

hong19860320 commented 2 years ago

1 那如果我换个linux镜像,比如去年年初的版本,会不会系统自带galcore.ko就是6.4.4.3的版本呢? 2 这个galcore.ko 区分android和ubuntu系统吗? 之前你们给过一个 galcore.ko 6.4.4.3的库,但是是android armv7的版本?能通用吗? 3 那除了6.4.4.3的A311D的galcore.ko,你们这边可以提供下linux下的VSI SDK + Amlogic DDK更新包吗?

  1. 需要和开发板厂商确认下,我们目前确认在khadas VIM3 和 荣品的A311D板子上可以支持;
  2. galcore.ko 区分android 和 ubuntu 系统的,但理论上开发板厂商都可以提供。android 区分 abi的,分arm64-v8a和armeabi-v7a;
  3. 目前我们只有6.4.4.3的VSI SDK + Amlogic DDK + galcore.ko,后面我们会收集不同芯片型号+不同厂商开发板的各个版本的VSI SDK&driver + linux kernel galcore.ko放在我们的文档里面。

@yingshengBD 关注下

2050airobert commented 2 years ago

我用的就是VIM3开发板啊。 我之前就是@yingshengBD 帮忙更新了下android armv7下的ko,这次我的系统是ubuntu arm64的,npu运行模型出现的问题跟之前很像。 @yingshengBD 可以帮忙再更新下ubuntu amr64的ko和npu相关so 吗? 多谢

hong19860320 commented 2 years ago

我用的就是VIM3开发板啊。 我之前就是@yingshengBD 帮忙更新了下android armv7下的ko,这次我的系统是ubuntu arm64的,npu运行模型出现的问题跟之前很像。 @yingshengBD 可以帮忙再更新下ubuntu amr64的ko和npu相关so 吗? 多谢

@yingshengBD 提供下 VIM3 的 6.4.4.3版本 for linux arm64 的 galcore.so吧。后面将VIM3和VIM3L的galcore.so参考android armeabi-v7a 那样放在PaddleLite-generic-demo的libs/linux/arm64/verisilicon_timvx目录下吧。

2050airobert commented 2 years ago

@hong19860320 @yingshengBD hello, 请问下,是否可提供下新的demo包或者verisilicon_timvx lib BR

yingshengBD commented 2 years ago

generic-demo的/libs/PaddleLite/linux/arm64/lib/verisilicon_timvx目录下,有vim3的galcore.ko,push上去,先rmmod之前的galcore,再insmod,需要确保galcore为6.4.4.3

2050airobert commented 2 years ago

@yingshengBD 确实没有,不管官网之前的版本,还是后来你发的generic-demo版本,/libs/PaddleLite/linux/arm64/lib/verisilicon_timvx这里面确实没有 任何ko文件? 请帮忙double check下,多谢

yingshengBD commented 2 years ago

写错 /libs/PaddleLite/linux/arm64/lib/amlogic_npu 这个下面

2050airobert commented 2 years ago

试过版本并不对啊,而且即使是6.4.4.3的ko,以及so,但我目前sdk是6.4.6.2xxx,能正常使用吗?

yingshengBD commented 2 years ago

你如果使用的是我们的demo,会自动替换除了驱动之外的依赖库,相当于底层软件栈全部变成了6443版本,所以可以正常使用 所以目前是啥错误呢

2050airobert commented 2 years ago

/libs/PaddleLite/linux/arm64/lib/amlogic_npu/galcore.ko 大小是8826KB 加载后 insmod: ERROR: could not insert module galcore.ko: Unknown symbol in module 而我加载6.4.2.1XX的版本,就可以正常加载。 所以能否给下正确的6.4.4.3xxx的galcore.ko 多谢啦!

2050airobert commented 2 years ago

另外,amlogic那边已经升到了6.4.6.2XXX以上的版本了,为什么我们的paddlelite demo 还需要依赖6.4.4.3xxx的库,是否可以同步下,直接可以在6.4.6.2以上版本运行,能否提供下升级版本的demo包呢? 多谢

hong19860320 commented 2 years ago

/libs/PaddleLite/linux/arm64/lib/amlogic_npu/galcore.ko 大小是8826KB 加载后 insmod: ERROR: could not insert module galcore.ko: Unknown symbol in module 而我加载6.4.2.1XX的版本,就可以正常加载。 所以能否给下正确的6.4.4.3xxx的galcore.ko 多谢啦!

@yingshengBD 下周找个时间直接微信或者远程看下用户的环境。 顺便再强调下,针对常见的khadas和荣品的板子的A311D和S905D3的linux arm64和android armeabi-v7a 6.4.4.3版本的驱动,在我们的文档里一定要有下载方法和使用说明,并提供配套的image和系统烧录方法(这个非常重要!),否则只提供driver让用户安装将会遇到各种的环境问题。

2050airobert commented 2 years ago

@hong19860320 @yingshengBD 1 事实上,压缩包里面少了一些匹配的文件,导致运行失败的这种不方便如果不做完善,就是给其他人做完善的机会。 我们这边折腾了几轮自己补上了,需要的话可以通过webchat可以发给你们。 2 另外最重要的是能不能以互联网的速度跟上最新的进展,比如tinypose这是paddle lite原创,是否可以尽快部署到amlogic NPU上。尤其是量化和到NPU的算子转换,做一个规划,跟进这部分的落地,方便我们进一步推广这些技术,互相合作。 3 目前只是听运营有说在跟进tinypose到a311d 的部署,但是不知道现在到底是卡在哪里了,是否可以一起推进下呢? 多谢

hong19860320 commented 2 years ago

@hong19860320 @yingshengBD 1 事实上,压缩包里面少了一些匹配的文件,导致运行失败的这种不方便如果不做完善,就是给其他人做完善的机会。 我们这边折腾了几轮自己补上了,需要的话可以通过webchat可以发给你们。 2 另外最重要的是能不能以互联网的速度跟上最新的进展,比如tinypose这是paddle lite原创,是否可以尽快部署到amlogic NPU上。尤其是量化和到NPU的算子转换,做一个规划,跟进这部分的落地,方便我们进一步推广这些技术,互相合作。 3 目前只是听运营有说在跟进tinypose到a311d 的部署,但是不知道现在到底是卡在哪里了,是否可以一起推进下呢? 多谢

  1. 虽然各家开发板用的是同一个型号的芯片,但各家的系统版本(主要是linux kernel版本,abi)各不相同,碎片化比较严重,目前比较好的方式是将系统刷到我们指定的版本,然后进行一些kernel driver替换工作,我们也正在文档方面加强这方面的工作,保证用户环境与我们测试环境一致。
  2. 关于模型支持问题,算子和模型基本能跑通,只是由于NPU要求全量化,而全量化对精度影响比较大,目前paddleslim同学正在解决精度问题,待解决后我们会加入到paddlelite-generic-demo中并提供办可视化demo。
hong19860320 commented 2 years ago

@2050airobert 我们这边折腾了几轮自己补上了,需要的话可以通过webchat可以发给你们。

你们已经能在你们板子的NPU上跑通paddlelite-generic-demo了吗?

2050airobert commented 2 years ago

1 是的,galcore6.4.4.3其实这东西应该在demo包里面自带,否则使用起来就麻烦 2 tinypose 模型量化大概要多久基本能调通?至于paddleslim的模型优化可以先推后一点 3 主量化跑通后转到a311d npu上,底层算子是否可以支持比如fpn上采样以及双线性插值等op,这块如果只有两三个op不支持,那大概多久可以初步调通? 这个tinypose是paddlite 原创,我们这边落地,也是一个非常好的双赢推广机会。我这边有什么可以配合你们一起推进的吗? 多谢

hong19860320 commented 2 years ago

1 是的,galcore6.4.4.3其实这东西应该在demo包里面自带,否则使用起来就麻烦 2 tinypose 模型量化大概要多久基本能调通?至于paddleslim的模型优化可以先推后一点 3 主量化跑通后转到a311d npu上,底层算子是否可以支持比如fpn上采样以及双线性插值等op,这块如果只有两三个op不支持,那大概多久可以初步调通? 这个tinypose是paddlite 原创,我们这边落地,也是一个非常好的双赢推广机会。我这边有什么可以配合你们一起推进的吗? 多谢

问题 2和3 @yingshengBD 现在基于tim-vx支持tiny-pose还缺哪些算子,是否能跑通?关于tiny-pose的支持,@wanghaoshuang paddleslim对tiny-pose全量化的支持目前有排期吗?

JerseyHam commented 2 years ago

1 那如果我换个linux镜像,比如去年年初的版本,会不会系统自带galcore.ko就是6.4.4.3的版本呢? 2 这个galcore.ko 区分android和ubuntu系统吗? 之前你们给过一个 galcore.ko 6.4.4.3的库,但是是android armv7的版本?能通用吗? 3 那除了6.4.4.3的A311D的galcore.ko,你们这边可以提供下linux下的VSI SDK + Amlogic DDK更新包吗?

  1. 需要和开发板厂商确认下,我们目前确认在khadas VIM3 和 荣品的A311D板子上可以支持;
  2. galcore.ko 区分android 和 ubuntu 系统的,但理论上开发板厂商都可以提供。android 区分 abi的,分arm64-v8a和armeabi-v7a;
  3. 目前我们只有6.4.4.3的VSI SDK + Amlogic DDK + galcore.ko,后面我们会收集不同芯片型号+不同厂商开发板的各个版本的VSI SDK&driver + linux kernel galcore.ko放在我们的文档里面。

@yingshengBD 关注下 @hong19860320 @yingshengBD 请问荣品的板子是6.4.4.3的系统镜像吗。我从厂商那里问询到只有6.4.3和6.4.6.2两个版本。我也出现了和楼主一样的问题。

[F 6/24 14:38:33. 81 ...dapter/src/driver/amlogic_npu/utility.cc:150 CreateAmlTensor] Check failed: tensor: [F 6/24 14:38:33. 81 ...dapter/src/driver/amlogic_npu/utility.cc:150 CreateAmlTensor] Check failed: tensor:

[F 6/24 14:38:33. 82 ...ter/nnadapter/src/runtime/compilation.cc:98 ~Program] Check failed: device_context: No device found. [F 6/24 14:38:33. 82 ...ter/nnadapter/src/runtime/compilation.cc:98 ~Program] Check failed: device_context: No device found.

terminate called after throwing an instance of 'nnadapter::logging::Exception' what(): NNAdapter C++ Exception: [F 6/24 14:38:33. 82 ...ter/nnadapter/src/runtime/compilation.cc:98 ~Program] Check failed: device_context: No device found.

./run.sh: line 142: 56301 Aborted ./${BUILD_DIR}/image_classification_demo ../assets/models/$MODEL_NAME $MODEL_TYPE ../assets/labels/$LABEL_NAME ../assets/images/$IMAGE_NAME $NNADAPTER_DEVICE_NAMES "$NNADAPTER_CONTEXT_PROPERTIES" $NNADAPTER_MODEL_CACHE_DIR $NNADAPTER_MODEL_CACHE_TOKEN $NNADAPTER_SUBGRAPH_PARTITION_CONFIG_PATH rpdzkj@rpdzkj:~/Paddle-Lite/PaddleLite-generic-demo/image_classification_demo/shell$

2050airobert commented 2 years ago

@JerseyHam Sorry , I do not know what you want to say?

JerseyHam commented 2 years ago

@2050airobert 上面是我发的跑demo时的报错:compilation.cc:98 ~Program] Check failed: device_context: No device found. 应该是和你的issue一样的问题吧

JerseyHam commented 2 years ago

我尝试用doc中的方法二 替换6443驱动,但是输出一下错误

[3 6/24 18:31:17.164 ...kernels/nnadapter/converter/converter.cc:125 Apply] Found an operand @0xaa052c10 for 0th output 'softmax_0.tmp_0'. [W 6/24 18:31:17.164 ...nnadapter/nnadapter/src/runtime/model.cc:86 GetSupportedOperations] Warning: Failed to get the supported operations for device 'verisilicon_timvx', because the HAL interface 'validate_program' is not implemented! [W 6/24 18:31:17.164 ...kernels/nnadapter/converter/converter.cc:171 Apply] Warning: Failed to get the supported operations for the selected devices, one or more of the selected devices are not supported! [I 6/24 18:31:17.164 ...r/src/driver/verisilicon_timvx/driver.cc:70 CreateProgram] Create program for verisilicon_timvx. [ 1] Failed to open device: No such file or directory, Try again... [ 2] Failed to open device: No such file or directory, Try again... [ 3] Failed to open device: No such file or directory, Try again... [ 4] Failed to open device: No such file or directory, Try again... [ 5] _OpenDevice(1086): FATAL: Failed to open device, errno=No such file or directory.

dmesg | grep Galcore的输出很奇怪(执行了几次rmmod )

[ 8.609741] Galcore version 6.4.6.2.3.2.1 [17785.949718] Galcore version 6.4.4.3.310723AAA

JerseyHam commented 2 years ago

@yingshengBD 您好能否提供下TIMVX部署文档中提及的Linux kernel 4.9.113的6.4.4.3 galcore.ko文件? 目前从文档链接下载下的a311d只有4.9.241的

yingshengBD commented 2 years ago

看来你已经看到了新的文档,目前网页排版有点问题,正在修复。 然后你现在重新下载文档中的链接,已经把相关的驱动都上传