安装
pip安装
Q: 安装MindSpore版本: GPU、CUDA 10.1、0.5.0-beta,出现问题: cannot open shared object file:No such file or directory
。
A: 从报错情况来看,是cuBLAS库没有找到。一般的情况下是cuBLAS库没有安装,或者是因为没有加入到环境变量中去。通常cuBLAS是随着CUDA以及驱动一起安装的,确认安装后把cuBLAS所在的目录加入LD_LIBRARY_PATH
环境变量中即可。
Q: 使用pip安装时报错: ERROR: mindspore_{VERSION}.whl is not a supported wheel on this platform
应该怎么办?
A: pip会通过wheel安装包的文件名来判断该安装包是否与当前Python环境兼容,例如安装mindspore_ascend-1.2.0-cp37-cp37m-linux_aarch64.whl时,pip会检查:
当前python环境为3.7.x版本
当前操作系统为Linux
操作系统架构为arm64
因此,如果出现 is not a supported wheel on this platform
问题,请检查当前环境是否满足MindSpore安装要求,以及该MindSpore安装包版本是否正确。
Q: macOS系统源码编译后使用pip安装报错: ERROR: mindspore-{VERSION}.whl is not a supported wheel on this platform
应该怎么办?
A: 首先检查output目录下编译得到的安装包名,类似mindspore-1.6.0-cp37-cp37m-macosx_11_1_x84_64.whl。包名中“11_1”的意思是编译时使用的SDK版本是11.1。如果使用的SDK版本为11.x,则可能是因为编译时使用的SDK版本过高导致无法安装。
解决方法一:可以重命名安装包后再尝试安装,例如将上述安装包重命名为mindspore-1.6.0-cp37-cp37m-macosx_10_15_x84_64.whl。
解决方法二:在源码编译前,设置环境变量MACOSX_DEPOLYMENT_TARGET
为10.15
并重新编译。
Q: 使用pip安装时报错: SSL:CERTIFICATE_VERIFY_FATLED
应该怎么办?
A: 在pip安装命令后添加参数 --trusted-host=ms-release.obs.cn-north-4.myhuaweicloud.com
重试即可。
Q: MindSpore对Protobuf版本是否有特别要求?
A: MindSpore默认安装Protobuf的3.13.0版本,如果不是该版本,在使用pytest测试代码时日志中会产生很多告警,建议您使用命令pip install protobuf==3.13.0
重新安装3.13.0版本。
Q: 使用pip安装时报错ProxyError(Cannot connect to proxy)
,应该怎么办?
A: 此问题一般是代理配置问题,Ubuntu环境下可通过export http_proxy={your_proxy}
设置代理;Windows环境可以在cmd中通过set http_proxy={your_proxy}
进行代理设置。
Q: 使用pip安装时提示错误,应该怎么办?
A: 请执行pip -V
查看是否绑定了Python3.7+。如果绑定的版本不对,建议使用python3.7 -m pip install
代替pip install
命令。
Q: 使用pip安装依赖库时提示No matching distribution found for XXX
错误,应该怎么办?
A: 请执行pip config list
,查看当前软件库索引路径index-url
。某些情况下,软件库索引会出现更新滞后,可尝试设置其它软件库索引路径。
Q: MindSpore网站安装页面找不到MindInsight和MindArmour的whl包,无法安装怎么办?
A: 您可以从MindSpore网站下载地址下载whl包,通过pip install
命令进行安装。
Q: MindSpore是否支持Nvidia GPU独立显卡+Windows操作系统的个人电脑?
A: 目前MindSpore支持的情况是GPU+Linux与CPU+Windows的组合配置,Windows+GPU的支持还在开发中。 如果希望在GPU+Windows的环境上运行,可以尝试使用WSL+docker的方式,操作思路:
以WSL方式安装起Ubuntu18.04,参考https://docs.microsoft.com/en-us/windows/wsl/install-win10。
安装支持WSL的Nvidia驱动以及在WSL运行容器的环境部署,参考https://docs.nvidia.com/cuda/wsl-user-guide/index.html。
由于CUDA on WSL还是预览特性,注意参考链接里对Windows版本要求的说明,版本不够的需要做升级。
参考https://gitee.com/mindspore/mindspore#docker镜像,取MindSpore-GPU镜像。如取MindSpore1.0.0版本容器,在WSL Ubuntu18.04中执行
docker pull mindspore/mindspore-gpu:1.0.0
运行容器:docker run -it --runtime=nvidia mindspore/mindspore-gpu:1.0.0 /bin/bash
详细步骤可以参考社区提供的实践张小白教你安装Windows10的GPU驱动(CUDA和cuDNN)。 在此感谢社区成员张辉的分享。
Q: Ascend硬件平台,在个人的Conda环境中,有时候出现报错RuntimeError: json.exception.parse_error.101 parse error at line 1, column 1: syntax error while parsing value - invalid literal; last read: ‘T’,该怎么处理?
A: 出现这种类型的报错,大概率是run包更新后个人的Conda环境中没有更新te或topi或hccl工具包,可以将当前Conda环境中的上述几个工具包卸载,然后使用如下命令再重新安装: pip install /usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64/{te/topi/hccl}-{version}-py3-none-any.whl
。
Q: pip同时安装MindSpore CPU和GPU版本,import时报错 cannot import name 'context' from 'mindspore'
,应该怎么办?
A: MindSpore不同版本的安装目录名同为mindspore
,安装在同一个Python环境可能产生目录相互覆盖问题,导致无法使用,如果需要使用多平台版本的MindSpore时(例如同时使用CPU和GPU版本),请先卸载其他版本再安装新版本。
Q: 在ARM架构的环境上使用pip安装MindSpore时报错: Could not find a version that satisfies the requirement
应该怎么办?
A: 大概率是因为pip版本低于19.3,无法识别manylinux2014
标签,导致pip install阶段下载了错误版本的numpy
或scipy
等python软件包,进而引发了无法找到构建依赖的问题,请执行pip install --upgrade pip
将环境中的pip升级到19.3以上,重新安装MindSpore。
Q: pip安装MindSpore时,报错 Running setup.py install for pillow: finished with status 'error' ... The headers or library files could not be found for jpeg, ...
,应该怎么办?
A: MindSpore依赖三方库pillow
进行部分的数据处理操作,而pillow
需要依赖环境上已经安装libjpeg
库,以Ubuntu环境为例,可以使用sudo apt-get install libjpeg8-dev
来安装libjpeg
库,然后再安装MindSpore。
源码编译安装
Q: 编译时bash -p
方式和 bash -e
方式的区别?
A: MindSpore Serving的编译和运行依赖MindSpore,Serving提供两种编译方式: 一种指定已安装的MindSpore路径,即bash -p {python site-packages}/mindspore/lib
,避免编译Serving时再编译MindSpore;另一种,编译Serving时,编译配套的MindSpore,Serving会将-e
、-V
和-j
选项透传给MindSpore。
比如,在Serving目录下,bash -e ascend -V 910 -j32
:
首先将会以
bash -e ascend -V 910 -j32
方式编译third_party/mindspore
目录下的MindSpore;其次,编译脚本将MindSpore编译结果作为Serving的编译依赖。
Q: 在Linux中已经安装了交叉编译工具,但是编译命令要怎么写呢?
A: arm64版本编译: bash build.sh -I arm64
;arm32版本编译: bash build.sh -I arm32
;注意要先设置环境变量,指定Android NDK路径: export ANDROID_NDK=/path/to/android-ndk
,编译成功后,在output目录可以找到编译出的包。
Q: MindSpore安装: 版本0.6.0-beta + Ascend 910 + Ubuntu_aarch64 + Python3.7.5,手动下载对应版本的whl包,编译并安装gmp6.1.2。其他Python库依赖已经安装完成,执行样例失败,报错显示找不到so文件。
A: libdatatransfer.so
动态库是fwkacllib/lib64
目录下的,请先在/usr/local
目录查找到这个库所在的路径,然后把这个路径加到LD_LIBRARY_PATH
环境变量中,确认设置生效后,再执行。
Q: 源码编译MindSpore过程时间过长,或时常中断该怎么办?
A: MindSpore通过submodule机制引入第三方依赖包,其中Protobuf
依赖包(v3.13.0)下载速度不稳定,建议您提前进行包缓存。
Q: 如何改变第三方依赖库安装路径?
A: 第三方依赖库的包默认安装在build/mindspore/.mslib目录下,可以设置环境变量MSLIBS_CACHE_PATH来改变安装目录,比如 export MSLIBS_CACHE_PATH = ~/.mslib
。
Q: MindSpore要求的配套软件版本与Ubuntu默认版本不一致怎么办?
A: 当前MindSpore只提供版本配套关系,需要您手动进行配套软件的安装升级。(注明: MindSpore要求Python3.7.5和gcc7.3,Ubuntu 16.04默认为Python3.5和gcc5,Ubuntu 18.04默认自带Python3.7.3和gcc7.4)。
Q: 执行用例报错No module named 'mindpore.version'
,应该怎么办?
A: 当有这种报错时,有可能是在创建了和MindSpore安装包相同名字的路径中执行用例,导致Python导入包的时候优先找到了当前目录下,而当前目录没有version.py这个文件。解决方法就是目录重命名或者向上退出一级或者多级目录。
Q: 源码编译时,报错MD5 does not match
,应该怎么办?
A: 这种报错可能是在编译的时候由于网络问题导致一些第三方库下载中断,之后重新编译的时候,该文件已经存在但是不完整,在校验MD5的时候失败。解决方法是: 删除.mslib缓存路径中的相关第三方库,然后重新编译。
Q: 环境上安装了Python3.7.5,环境变量设置正确,编译MindSpore时仍然报错Python3 not found
,应该怎么办?
A: 可能是因为当前环境上的Python未包含动态库。编译MindSpore需要动态链接Python库,因此需要使用开启动态库编译选项的Python3.7.5,即在源码编译Python时使用./configure --enable-shared
命令。
Q: 编译失败后,应该清理哪些路径以确保上次失败的编译结果不会影响到下一次编译?
A: 在编译MindSpore时,如果:
第三方组件下载或编译失败,例如icu4c的patch动作失败返回错误信息
Cmake Error at cmake/utils.cmake:301 (message): Failed patch:
,则进入编译目录下的build/mindspore/.mslib
目录,或由MSLIBS_CACHE_PATH
环境变量指定的第三方软件安装目录,并删除其中的对应软件。其他阶段编译失败,或打算删除上一次编译结果,完全重新编译时,直接删除
build
目录即可。
Q: 编译时报错,打开CMakeError.txt提示pthread找不到怎么办?
A: 真正的失败原因会体现在打屏的日志里,CMakeError.txt无参考价值,请寻找打屏日志中的第一个报错。
Q: 编译成功后,运行时报错undefined reference to XXXX
或undefined symbol XXXX
怎么办?
A: 可能的原因有:
如果问题是
git pull
更新代码后出现,请删除掉build
文件夹,排除前次构建的影响。如果问题是修改代码后出现,可以使用
c++filt XXXX
查看该符号的意义,有可能是函数未实现、虚函数未实现、依赖未链接等原因引起。如果问题发生在Ascend平台,排除上述原因后,很可能是由于MindSpore版本与CANN版本不匹配引起的,版本匹配关系参考安装说明。
卸载
Q: 如何卸载MindSpore?
A: 首先请确定MindSpore的全称,例如gpu版本的MindSpore,可以执行命令pip uninstall mindspore-gpu
进行卸载。
环境变量
Q: 一些常用的环境变量设置,在新启动的终端窗口中需要重新设置,容易忘记应该怎么办?
A: 常用的环境变量设置写入到~/.bash_profile
或 ~/.bashrc
中,可让环境变量设置在新启动的终端窗口中立即生效。
Q: 使用GPU版本MindSpore时,如何设置DEVICE_ID
环境变量
A: MindSpore GPU模式一般无需设置DEVICE_ID
环境变量,MindSpore会根据cuda环境变量CUDA_VISIBLE_DEVICES
,自动选择可见的GPU设备。设置CUDA_VISIBLE_DEVICES
环境变量后,则DEVICE_ID
环境变量代表可见GPU设备的下标:
执行
export CUDA_VISIBLE_DEVICES=1,3,5
后,DEVICE_ID
应当被设置为0
,1
或2
,若设置为3
及以上,MindSpore会由于设备ID不合法而运行失败。
Q: 编译应用时报错/usr/bin/ld: warning: libxxx.so, needed by libmindspore.so, not found
怎么办?
A: 寻找缺少的动态库文件所在目录,添加该路径到环境变量LD_LIBRARY_PATH
中,环境变量设置参考Ascend 310 AI处理器上使用MindIR模型进行推理#编译推理代码。
Q: 运行应用时出现ModuleNotFoundError: No module named 'te'
怎么办?
A: 首先确认环境安装是否正确,te
、topi
等whl包是否正确安装。如果用户环境中有多个Python版本,如Conda虚拟环境中,需ldd name_of_your_executable_app
确认应用所链接的libpython3.so
是否与当前Python路径一致,如果不一致需要调整环境变量LD_LIBRARY_PATH
顺序,例如
export LD_LIBRARY_PATH=`python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))"`:$LD_LIBRARY_PATH
将当前的python
命令对应程序的运行库路径加入到LD_LIBRARY_PATH
的最前面。
Q: 运行应用时出现error while loading shared libraries: libpython3.so: cannot open shared object file: No such file or directory
怎么办?
A: 该报错通常出现在装有多个Python版本的环境中,首先确认Python的lib
目录是否在环境变量LD_LIBRARY_PATH
中,可执行以下命令进行设置:
export LD_LIBRARY_PATH=`python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))"`:$LD_LIBRARY_PATH
另外如果在Conda虚拟环境中,Python 3.7.6以下版本不含该动态库,可以执行命令升级Conda中Python的版本,如:conda install python=3.7.11
。
Q: Ascend AI处理器配套软件包与其他依赖软件已安装,但是执行MindSpore时提示Cannot open shared objectfile: No such file or directory
该怎么办?
A: 常见原因有两种: Ascend AI处理器配套软件包或固件/驱动包版本不正确,或没有安装在默认位置且未配置相应的环境变量。
打开Ascend AI处理器配套软件包安装目录,默认
/usr/local/Ascend
下,各个子目录中的version.info
文件,观察其版本号是否与当前使用的MindSpore版本一直,参照安装页面中关于Ascend AI处理器配套软件包版本的描述。如果版本不配套,请更换软件包或MindSpore版本。检查Ascend AI处理器配套软件包与其他依赖软件是否安装在默认位置,MindSpore会尝试从默认安装位置
/usr/local/Ascend
自动加载,如果将Ascend软件包安装在自定义位置,请参照安装页面页面的安装指南一栏设置环境变量。如果将其他依赖软件安装在自定义位置,请根据其位置关系设置LD_LIBRARY_PATH
环境变量。
安装验证
Q: MindSpore的GPU版本对设备的计算能力有限制吗?
A: 目前MindSpore仅支持计算能力大于5.3的设备。
Q: 个人电脑CPU环境安装MindSpore后验证代码时报错: the pointer[session] is null
,具体代码如下,该如何验证是否安装成功呢?
import numpy as np
from mindspore import Tensor
import mindspore.ops as ops
import mindspore.context as context
context.set_context(device_target="Ascend")
x = Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.add(x,y))
A: CPU硬件平台安装MindSpore后测试是否安装成功,只需要执行命令: python -c 'import mindspore'
,如果没有显示No module named 'mindspore'
等错误即安装成功。问题中的验证代码仅用于验证Ascend平台安装是否成功。
Q: Linux
平台下执行用例的时候会报错sh:1:python:not found
或者由于链接到了Python2.7的版本中而报错No module named mindspore._extends.remote
,该怎么处理?
A: 遇到类似的问题,大多是由于Python的环境问题,可以通过如下方式检查Python环境是否是MindSpore运行时所需要的环境。
在终端窗口中输入
python
,检查以下进入Python交互环境中的版本信息,如果直接报错则是没有Python的软连接;如果进入的是非Python3.7版本的环境,则当前Python环境不是MindSpore运行所需要的。执行
sudo ln -sf /usr/bin/python3.7.x /usr/bin/python
创建Python的软连接,然后再检查执行。
Q: 在脚本中import mindspore
之前import了其他三方库,提示如下错误(/{your_path}/libgomp.so.1: cannot allocate memory in static TLS block
)该怎么解决?
A: 上述问题较为常见,当前有两种可行的解决方法,可任选其一:
交换import的顺序,先
import mindspore
再import其他三方库。执行程序之前先添加环境变量(
export LD_PRELOAD=/{your_path}/libgomp.so.1
),其中{your_path}
是上述报错提示的路径。
Q: mindspore和gmp都已经通过源码编译安装后,在脚本中执行import mindspore
,
提示如下错误(ImportError: libgmpxx.so: cannot open shared object file: No such file or directory
)该怎么解决?
A: 上述问题的原因是在编译安装gmp库的时候没有设置--enable-cxx
,正确的gmp编译安装方式如下(假设已经下载了gmp6.1.2安装包):
$cd gmp-6.1.2
$./configure --enable-cxx
$make
$make check
$sudo make install
Q: 运行MindSpore时出现告警 UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.
应该怎么解决?
A: 上述问题出现在安装了较新版本的numpy(>=1.22.0)版本的ARM python3.9环境上。告警来自numpy而非MindSpore。如果告警影响到了代码的正常调测,可以考虑手动安装较低版本的numpy(<=1.21.2)来规避。