Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用昇腾910显卡进行编译时出错 #1258

Closed
ABBoyangCD opened this issue May 22, 2024 · 31 comments
Closed

使用昇腾910显卡进行编译时出错 #1258

ABBoyangCD opened this issue May 22, 2024 · 31 comments
Assignees

Comments

@ABBoyangCD
Copy link

(paddle) [jiboyang@bms-3c50 npu]$ bash tools/compile.sh
+++ dirname tools/compile.sh
++ cd tools/../
++ pwd

  • SOURCE_ROOT=/home/jiboyang/paddlepaddle/PaddleCustomDevice/backends/npu
  • mkdir -p /home/jiboyang/paddlepaddle/PaddleCustomDevice/backends/npu/build
  • cd /home/jiboyang/paddlepaddle/PaddleCustomDevice/backends/npu/build
    ++ uname -i
  • arch=aarch64
  • '[' aarch64 == x86_64 ']'
  • WITH_MKL=OFF
  • WITH_ARM=ON
  • WITH_ATB=OFF
  • '[' -n '' ']'
  • cat
    ========================================
    Configuring cmake in build ...
    -DCMAKE_BUILD_TYPE=Release
    -DWITH_TESTING=ON
    -DWITH_MKL=OFF
    -DWITH_ARM=ON
    -DWITH_ATB=OFF
    -DON_INFER=OFF
    -DWITH_COVERAGE=OFF
    ========================================
  • set +e
  • cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_TESTING=ON -DWITH_MKL=OFF -DWITH_ARM=ON -DWITH_ATB=OFF -DON_INFER=OFF -DWITH_COVERAGE=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
    Traceback (most recent call last):
    File "", line 1, in
    ModuleNotFoundError: No module named 'paddle'
    CMake Error at cmake/paddle.cmake:31 (message):
    NO Installed Paddle Found in
    Call Stack (most recent call first):
    CMakeLists.txt:22 (include)

-- Configuring incomplete, errors occurred!

  • cmake_error=1
  • '[' 1 '!=' 0 ']'
  • echo 'CMake Error Found !!!'
    CMake Error Found !!!
  • exit 7
@qili93
Copy link
Collaborator

qili93 commented May 23, 2024

您好,根据错误提示 “ModuleNotFoundError: No module named 'paddle'”,编译之前需要先安装Paddle Paddle CPU的安装包。910卡可以参考 https://github.com/PaddlePaddle/PaddleCustomDevice/blob/release/2.6/backends/npu/README_cn.md 这个文档进行编译。

image

@ABBoyangCD
Copy link
Author

ABBoyangCD commented May 23, 2024

Snipaste_2024-05-23_14-29-49
又重新将paddlepaddle安装了,但是在编译的时候还是会编译错误
依然是相同的错误,难道paddle与paddlepaddle这两个库不一样吗?

@qili93
Copy link
Collaborator

qili93 commented May 23, 2024

这个报错的代码是在这里 https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/cmake/paddle.cmake#L24

image

您可以在环境中手动跑一下这个命令看输出是否正常

python -c "import re, paddle; print(re.compile('/__init__.py.*').sub('',paddle.__file__))"
# 如果安装正常的情况下,应该返回类似如下的结果
/usr/local/lib/python3.9/dist-packages/paddle

# 以上返回的结果应该和这个命令输出的paddlepaddle的安装包的地址一致
pip show paddlepaddle
# 返回的 Location 地址需要和上面命令的输出地址一致
Location: /usr/local/lib/python3.9/dist-packages

如果地址返回不一致,需要您这里重新安装下,建议您这里尽量使用官网文档给的飞桨开发镜像进行编译安装,可以避免很多环境差异导致的问题,谢谢!

@qili93
Copy link
Collaborator

qili93 commented May 23, 2024

另外您这里可以通过如下命令确认下,您使用的芯片是 910 还是 910B 吗?

目前CustomDevice对于这2个芯片支持的代码分支存在差异

可以参考 https://github.com/PaddlePaddle/PaddleCustomDevice/blob/release/2.6/backends/npu/README_cn.md 这个文档

image

@ABBoyangCD
Copy link
Author

ABBoyangCD commented May 23, 2024

我使用的是昇腾的服务器,创建的conda的虚拟环境,npu是910B,也是按照您给的教程重新走了一遍910B的版本。

这个是npu的相关信息:
npu-smi 23.0.rc3 Version: 23.0.rc3

conda环境中的paddlepaddle版本变成了3.0.0.dev20240522

运行:python -c "import re, paddle; print(re.compile('/__init__.py.*').sub('',paddle.__file__))"
结果:/home/jiboyang/anaconda3/envs/paddle/lib/python3.9/site-packages/paddle
运行:pip show paddlepaddle
结果:
Name: paddlepaddle
Version: 3.0.0.dev20240522
Summary: Parallel Distributed Deep Learning
Home-page: https://www.paddlepaddle.org.cn/
Author: 
Author-email: [email protected]
License: Apache Software License
Location: /home/jiboyang/anaconda3/envs/paddle/lib/python3.9/site-packages
Requires: astor, decorator, httpx, numpy, opt-einsum, Pillow, protobuf
Required-by:

重新运行bash tools/compile.sh,依然会提示ModuleNotFoundError: No module named 'paddle'

@qili93
Copy link
Collaborator

qili93 commented May 24, 2024

哦,可能是您的环境中装有多个版本的python,在cmake的时候用的python和您这里的conda环境里面的python不一致导致找不到paddle。

你可以尝试修改下 tools/compile.sh 文件,在 https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/npu/tools/compile.sh#L60 这里添加 -DPYTHON_EXECUTABLE:FILEPATH=/path/to/python2.7 类似这样的参数来指定。

你可以观察下,cmake命令前面输出部分会显示当前cmake的使用的是哪个python,保障cmake命令输出的python exe地址和您的conda的python地址一致,如下图红框所示,飞桨官网默认给的开发镜像里面只有一个python版本所以不会有这个问题。

image

@ABBoyangCD
Copy link
Author

我这边也修改了这个编译文件,您看下是不是有问题
原文件60行的下面

cmake .. \
    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:-Release} \
    -DWITH_TESTING=${WITH_TESTING:-ON} \
    -DWITH_MKL=${WITH_MKL:-ON} \
    -DWITH_ARM=${WITH_ARM:-OFF} \
    -DWITH_ATB=${WITH_ATB:-OFF} \
    -DON_INFER=${ON_INFER:-OFF} \
    -DWITH_COVERAGE=${WITH_COVERAGE:-OFF} \
    -DPYTHON_EXECUTABLE:FILEPATH=./anaconda3/envs/paddlepaddle-env/bin/python3.8 \
    -DCMAKE_EXPORT_COMPILE_COMMANDS=ON;cmake_error=$?

修改完成后运行还是会出现这个问题

+ set +e
+ cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_TESTING=ON -DWITH_MKL=OFF -DWITH_ARM=ON -DWITH_ATB=OFF -DON_INFER=OFF -DWITH_COVERAGE=OFF -DPYTHON_EXECUTABLE:FILEPATH=./anaconda3/envs/paddlepaddle-env/bin/python3.8 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'paddle'
CMake Error at cmake/paddle.cmake:31 (message):
  NO Installed Paddle Found in
Call Stack (most recent call first):
  CMakeLists.txt:22 (include)

我也检查了我的python

whereis python
python: /usr/bin/python3.7 /usr/bin/python3.7m /usr/bin/python /usr/lib/python3.7 /usr/lib64/python3.7 /usr/local/lib/python3.7 /usr/include/python3.7m /home/jiboyang/anaconda3/envs/paddlepaddle-env/bin/python3.8-config /home/jiboyang/anaconda3/envs/paddlepaddle-env/bin/python3.8 /home/jiboyang/anaconda3/envs/paddlepaddle-env/bin/python

我这边还需要提供什么信息?

另外,paddle官方的最新的docker镜像(Ubuntu)与我服务器的系统(centos)不兼容
https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/hardware_support/npu/install_cn.html
华为官方的cann版本最低到5.1.0alpha008,与paddle官方提供的docker镜像5.0.2.alpha005不兼容
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/hardware_support/npu_docs/paddle_install_cn.html

@ABBoyangCD
Copy link
Author

我这边也修改了这个编译文件,您看下是不是有问题 原文件60行的下面

cmake .. \
    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:-Release} \
    -DWITH_TESTING=${WITH_TESTING:-ON} \
    -DWITH_MKL=${WITH_MKL:-ON} \
    -DWITH_ARM=${WITH_ARM:-OFF} \
    -DWITH_ATB=${WITH_ATB:-OFF} \
    -DON_INFER=${ON_INFER:-OFF} \
    -DWITH_COVERAGE=${WITH_COVERAGE:-OFF} \
    -DPYTHON_EXECUTABLE:FILEPATH=./anaconda3/envs/paddlepaddle-env/bin/python3.8 \
    -DCMAKE_EXPORT_COMPILE_COMMANDS=ON;cmake_error=$?

修改完成后运行还是会出现这个问题

+ set +e
+ cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_TESTING=ON -DWITH_MKL=OFF -DWITH_ARM=ON -DWITH_ATB=OFF -DON_INFER=OFF -DWITH_COVERAGE=OFF -DPYTHON_EXECUTABLE:FILEPATH=./anaconda3/envs/paddlepaddle-env/bin/python3.8 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'paddle'
CMake Error at cmake/paddle.cmake:31 (message):
  NO Installed Paddle Found in
Call Stack (most recent call first):
  CMakeLists.txt:22 (include)

我也检查了我的python

whereis python
python: /usr/bin/python3.7 /usr/bin/python3.7m /usr/bin/python /usr/lib/python3.7 /usr/lib64/python3.7 /usr/local/lib/python3.7 /usr/include/python3.7m /home/jiboyang/anaconda3/envs/paddlepaddle-env/bin/python3.8-config /home/jiboyang/anaconda3/envs/paddlepaddle-env/bin/python3.8 /home/jiboyang/anaconda3/envs/paddlepaddle-env/bin/python

我这边还需要提供什么信息?

另外,paddle官方的最新的docker镜像(Ubuntu)与我服务器的系统(centos)不兼容 https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/hardware_support/npu/install_cn.html 华为官方的cann版本最低到5.1.0alpha008,与paddle官方提供的docker镜像5.0.2.alpha005不兼容 https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/hardware_support/npu_docs/paddle_install_cn.html

运行这些命令时,conda除了基本的base环境,没有其他的环境,新的paddle环境也是新建的,python版本改为3.8

@qili93
Copy link
Collaborator

qili93 commented May 28, 2024

您参考这个截图里面的红框看下,cmake输出的python是您这里的conda python地址吗?

如果没有显示,就可能是使用的您之前cache下来的编译历史导致没有生效,可以尝试 rm -rf build/ 删除一下您之前的build目录,然后重新运行 bash -x tools/compile.sh,就会有如下截图的内容生成,cmake会自动检测使用的是哪个python地址。

image

@ABBoyangCD
Copy link
Author

Snipaste_2024-05-30_14-32-34
这个地方确实不对,该如何改正呢?配置文件已经指定的是paddle环境下的python3.8的版本,但还是会默认base环境下的python3.11。

@qili93
Copy link
Collaborator

qili93 commented Jun 4, 2024

可以参考这个 https://stackoverflow.com/questions/7660001/cmake-finds-wrong-python-libs 这个回答,尝试把这几个参数都加上

-DPYTHON_EXECUTABLE='/home/xxxx'
-DPYTHON_LIBRARY='/softwarepath/Python/Python2.7/lib/libpython2.7.so'
-DPYTHON_INCLUDE='/softwarepath/Python/Python2.7/include'

@qili93
Copy link
Collaborator

qili93 commented Jun 7, 2024

您好,请问这个问题是否已经解决,谢谢!

@ABBoyangCD
Copy link
Author

还是没有解决,我联系昇腾那边的工程师,他们给了我一个新的docker容器。我现在在容器里面进行作业。

@qili93
Copy link
Collaborator

qili93 commented Jun 12, 2024

还是没有解决,我联系昇腾那边的工程师,他们给了我一个新的docker容器。我现在在容器里面进行作业。

您也可以尝试使用飞桨官网的容器镜像 registry.baidubce.com/device/paddle-npu:cann80RC1-ubuntu20-x86_64-gcc84-py310,如果有更多问题欢迎提问。

@wujf147
Copy link

wujf147 commented Jun 12, 2024

@qili93 老师您好,我最近在使用寒武纪370-x8板卡安装和编译paddle时也出现了类似的问题。具体现象和问题如下:1.在cmake时打印的信息查看使用的python是启动镜像后的python版本。2.在执行bash tools/compile.sh时,在paddle.cmake文件72行报错,具体信息如下图所示。麻烦您帮忙看下,谢谢老师!
微信图片_20240612155349

@qili93
Copy link
Collaborator

qili93 commented Jun 13, 2024

@qili93 老师您好,我最近在使用寒武纪370-x8板卡安装和编译paddle时也出现了类似的问题。具体现象和问题如下:1.在cmake时打印的信息查看使用的python是启动镜像后的python版本。2.在执行bash tools/compile.sh时,在paddle.cmake文件72行报错,具体信息如下图所示。麻烦您帮忙看下,谢谢老师! 微信图片_20240612155349

您好,您截图中的报错是由于下载 Paddle 主仓失败导致的,PaddleCustomDevice的编译需要依赖Paddle仓库源码。

您可以手动跑一下日志中提示的这个命令,下载成功之后,再运行 tools/compile.sh 就可以了。

git submodule update --init Paddle

image

@wujf147
Copy link

wujf147 commented Jun 13, 2024 via email

@wujf147
Copy link

wujf147 commented Jun 14, 2024 via email

@qili93
Copy link
Collaborator

qili93 commented Jun 14, 2024

老师您好,我今天在使用镜像 <registry.baidubce.com/device/paddle-mlu:cntoolkit3.7.2-1-cnnl1.22.0-1-gcc82>(python版本为3.9)进行编译时,进行bash tools/compile.sh时,出现以下问题: 请老师帮忙看看具体是什么原因呢,是因为镜像中软件版本的原因吗? @.***

---- 回复的原邮件 ---- 发件人 Qi @.> 发送日期 2024年6月13日 11:15 收件人 @.> 抄送人 @.> , @.> 主题 Re: [PaddlePaddle/PaddleCustomDevice] 使用昇腾910显卡进行编译时出错 (Issue #1258) 【本邮件来自外部。在打开附件或访问其中的链接前,请谨慎核对发件人地址等信息!】 @qili93 老师您好,我最近在使用寒武纪370-x8板卡安装和编译paddle时也出现了类似的问题。具体现象和问题如下:1.在cmake时打印的信息查看使用的python是启动镜像后的python版本。2.在执行bash tools/compile.sh时,在paddle.cmake文件72行报错,具体信息如下图所示。麻烦您帮忙看下,谢谢老师! 您好,您截图中的报错是由于下载 Paddle 主仓失败导致的,PaddleCustomDevice的编译需要依赖Paddle仓库源码。 您可以手动跑一下日志中提示的这个命令,下载成功之后,再运行 tools/compile.sh 就可以了。 git submodule update --init Paddle image.png (view on web) — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

您好,我无法在issue网页上看到具体报错问题,请帮忙把您出错的截图贴到issue网页上,谢谢!

@wujf147
Copy link

wujf147 commented Jun 17, 2024

老师您好,我今天在使用镜像 <registry.baidubce.com/device/paddle-mlu:cntoolkit3.7.2-1-cnnl1.22.0-1-gcc82>(python版本为3.9)进行编译时,进行bash tools/compile.sh时,出现以下问题:
9ABE07EB-FC9A-435A-8F05-B23A1EC44CA8
D5B8A2F1-A8AB-49EC-919B-C21DCD975EB9
请老师帮忙看看是什么原因呢,是否是因为镜像中软件版本(py39的镜像)的原因?

@qili93
Copy link
Collaborator

qili93 commented Jun 18, 2024

@wujf147 看上去应该是镜像里面的SDK过老的关系,您需要参考 https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/mlu/README_cn.md 最新的readme中的镜像进行编译。

docker pull registry.baidubce.com/device/paddle-mlu:ctr2.15.0-ubuntu20-gcc84-py310

如果您需要使用您自己的镜像,可以运行如下命令检查下您环境中的几个安装包的版本和README的这个表格中的版本是否一致。

dpkg -l | grep cntoolkit
dpkg -l | grep cnnl
dpkg -l | grep cncl
dpkg -l | grep mluops

正常输入结果如下

image

和readme中的版信息需要保持一致

image

@wujf147
Copy link

wujf147 commented Jun 19, 2024 via email

@qili93
Copy link
Collaborator

qili93 commented Jun 19, 2024

@wujf147 是的,建议找一个能和python3.10兼容的numpy版本进行安装,PaddleOCR的部署流程请参考OCR的GPU文档。其中需要注意参考 https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/mlu/tests/test_LeNet_MNIST.py#L77 这个代码将 enable_use_gpu 修改为 enable_custom_device 就可以正常推理部署了。

@wujf147
Copy link

wujf147 commented Jun 19, 2024 via email

@wujf147
Copy link

wujf147 commented Jun 21, 2024

@qili93 老师您好,我今天在镜像容器中成功安装了paddleocr模块,但是在进行测试时显示没有使用显卡,具体如下,请问怎么正确使用寒武纪显卡进行推理呢,好像paddleocr没有设置使用寒武纪显卡的参数?
621

@qili93
Copy link
Collaborator

qili93 commented Jun 24, 2024

@qili93 老师您好,我今天在镜像容器中成功安装了paddleocr模块,但是在进行测试时显示没有使用显卡,具体如下,请问怎么正确使用寒武纪显卡进行推理呢,好像paddleocr没有设置使用寒武纪显卡的参数? 621

您好,就是上一条回答中的这个配置,参考
https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/mlu/tests/test_LeNet_MNIST.py#L77
代码中的这一行
image

相应的修改推理程序里面的对应代码,就可以跑到MLU的设备上。

@wujf147
Copy link

wujf147 commented Jun 24, 2024

@qili93 ,老师您好,按照这样修改,是不是不能像指定gpu参数这样,使用命令行--use_gpu设置使用寒武纪显卡?而是只能在代码中进行修改?

@wujf147
Copy link

wujf147 commented Jun 24, 2024

@qili93 老师您好,另外有一个问题想请教下,您知道怎么指定寒武纪显卡运行docker吗,如下图所示使用gpus报错
QQ截图20240624114805

@YanhuiDua
Copy link
Collaborator

你好,docker启动命令参考我们的文档:https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/mlu/README_cn.md

docker run -it --name paddle-mlu-dev -v $(pwd):/work
-w=/work --shm-size=128G --network=host --privileged
--cap-add=SYS_PTRACE --security-opt seccomp=unconfined
-v /usr/bin/cnmon:/usr/bin/cnmon
registry.baidubce.com/device/paddle-mlu:ctr2.15.0-ubuntu20-x86_64-gcc84-py310 /bin/bash

@YanhuiDua
Copy link
Collaborator

x

@qili93 老师您好,另外有一个问题想请教下,您知道怎么指定寒武纪显卡运行docker吗,如下图所示使用gpus报错 QQ截图20240624114805

新的问题辛苦再新建一个issue哈,也方便其他用户查阅,编译没问题了的话,这个issue就先关闭了哈~

@qili93
Copy link
Collaborator

qili93 commented Jun 28, 2024

Close as new issue opened in #1314

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants