当前位置:   article > 正文

Python&aconda系列:(W&L)Conda使用faiss-gpu报错及解决办法、安装numpy的坑、cmd执行Python脚本找不到第三方库、安装tensorflow-gpu时遇到的from_faiss-gpu安装

faiss-gpu安装

这里写目录标题




一. 通过Anaconda Prompt搭建faiss-gpu1.7.0和tensorflow-gpu1.13.1的联合环境

(1)打开Anaconda3文件夹下的Anaconda Prompt:

在这里插入图片描述

2)新建Anaconda的虚拟环境

conda create --name 你的虚拟环境名 python=3.6.8
  • 1

为了便于使用,你的虚拟环境名可以用你的虚拟环境对应的python版本的简称:
比如python=3.6.8,那么虚拟环境名就可以命名为py368

(3)激活你创建的虚拟环境

conda activate 你的虚拟环境名
  • 1

(4)先安装对应python版本的tensorflow-gpu

pip install tensorflow-gpu==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
  • 1

【注意】安装完tensorflow-gpu之后一定要安装对应版本的tensorflow,不然会报错:
from tensorflow.python import pywrap_tensorflow失败

(5)安装对应tensorflow-gpu版本的tensorflow

pip install tensorflow==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
  • 1

(6)安装完tensorflow之后,开始安装faiss-gpu
【注意】faiss-gpu安装过程中,其对应版本的faiss也会进行安装

conda install -c conda-forge faiss-gpu=1.7.0
  • 1

(7)
【注意】如果你采用Anaconda Prompt查看,其不会显示所有安装好的包!比如:
在这里插入图片描述
【解决方案】你可以通过在PyCharm的Settings获取Anaconda对应的虚拟环境的Python Interpreter查看其安装好的包

在这里插入图片描述

在这里插入图片描述

(8)看,装好了吧,OK老铁,没毛病!!!




二. 安装tensorflow-gpu时遇到的from tensorflow.python import pywrap_tensorflow失败的解决方案

(1)我的cuda环境:cuda10.0+cudnn7.4.1.5
(2)使用的python环境:pycharm + python3.6
(3)安装的tensorflow-gpu版本:tensorflow-gpu1.13.1
(4)报错信息:from tensorflow.python import pywrap_tensorflow失败
(5)解决方案:
在E:\Python3.6\Scripts路径下使用cmd命令pip安装了tensorflow-gpu1.13.1之后,
再用cmd命令pip安装相同版本的tensorflow1.13.1:

pip install tensorflow-gpu==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
  • 1
pip install tensorflow==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
  • 1

(6)结果,报错信息消失




三. cmd执行Python脚本出现找不到第三方库的问题(已解决)

(1)原因:很简单,python编译器的路径没有指定
(2)错误案例:

python h5Deploy.py
  • 1

在这里插入图片描述
(3)现在指定正确的python路径之后再试一次:

E:\python3.7\python.exe h5Deploy.py
  • 1

在这里插入图片描述




四. Python安装numpy躺过的坑

一开始使用python3.9.0a1安装,安装之后又安装了pycharm,通过pycharm自动安装numpy的package。但是每次安装都会报导numpy的包失败,说是找不到mtrand.py这个python文件。结果顺着路径找mtrand所在的文件夹,发现真的没有mtrand.py。重复卸载安装了python3.9.0a1几次都是这个结果。只好换成python3.7.8,结果一次就装好了numpy。

觉得python3.9.0a1真的是个坑,它对应版本的numpy下就自带这个缺失mtrand.py文件的缺陷。




五. 坑 之 Ubuntu Conda虚拟环境使用faiss-gpu报错分析及解决办法

写在前面,笔者用faiss-gpu来执行聚类运算。

faiss-gpu的使用于cuda版本是紧密相关的,cuda又是与nvidia driver紧密相关的,nvidia driver又是与显卡紧密相关的。

如果faiss-gpu和cuda版本不匹配会报错而无法使用

我的环境:

  • RTX3090

  • python3.7.5

  • pytorch1.7.1+cuda11.0,

根据我查阅的资料显示,faiss-gpu==1.7.1支持cuda11.0。

一.错误示例

我首先使用conda 安装 faiss-gpu=1.7.1

conda install faiss-gpu cudatoolkit=11.0 -c pytorch
  • 1
报错:
Faiss assertion 'err == CUBLAS_STATUS_SUCCESS' failed in void faiss::gpu::runMatrixMult(faiss::gpu::Tensor<float, 2, true>&, bool, faiss::gpu::Tensor<T, 2, true>&, bool, faiss::gpu::Tensor<IndexType, 2, true>&, bool, float, float, cublasHandle_t, cudaStream_t) [with AT = float; BT = float; cublasHandle_t = cublasContext*; cudaStream_t = CUstream_st*] at /project/faiss/faiss/gpu/utils/MatrixMult-inl.cuh:265; details: cublas failed (13): (512, 2) x (2, 128)' = (512, 2) gemm params m 2 n 512 k 128 trA T trB N lda 128 ldb 128 ldc 2
  • 1
错误原因:

依然怀疑是版本问题,在github上也查看到了类似的issue,也没有很好的解决办法。

所以我尝试使用pip安装faiss-gpu

pip install faiss-gpu==1.7.1
  • 1

依旧报错:段错误,无效指针等问题,头皮发麻

奇怪现象:当特征维度是768时并不报错,为512时就会报错,这里依旧没有得到很好的解释,读者可以尝试一下,看有无相同的实验现象。

抱着版本不对升级版本的目的又安装了faiss-gpu=1.7.2的版本,但依旧不好使。

二. 解决办法:使用源码安装的方式编译安装faiss-gpu==1.7.1,成功

说一下前提条件,若要在conda环境里安装则先激活虚拟环境,并检查当前环境的python解释器

conda activate xxx
  • 1
which python
  • 1

安装步骤:

1.去faiss-gpu官网下载对应版本的faiss-gpu,解压

Releases · facebookresearch/faiss · GitHub

2.进入目录,执行:
cmake -B build . -DCUDAToolkit_ROOT=/usr/local/cuda/ -DFAISS_ENABLE_GPU=ON -DPython_EXECUTABLE=/home/xxx/anaconda3/envs/xxx/python
  • 1
make -C build -j16

  • 1
  • 2
cd build/faiss/python/ && python setup.py install
  • 1

#注意修改成 自己的 cuda 和 python解释器

3.若报错与swig有关,则需提前安装swig和prec/prec2/prec3(根据报错判断缺哪个版本的prec)

swig下载链接:SWIG - Browse /swig at SourceForge.net

prec2下载链接:https://link.zhihu.com/?target=https%3A//sourceforge.net/projects/pcre/files/pcre2/10.37/pcre2-10.37.tar.gz

将prec2压缩包放入swig解压后的文件夹中,执行,否则报错:

Cannot find pcre-config script from PCRE2 (Perl Compatible Regular Expressions)
  • 1
安装prec2:

1 ./Tools/pcre2-build.sh
安装swig:进入swig目录
1 ./configure
2 make
3 sudo make install
4.解决报错后重新执行步骤2。

5.进入build目录,测试demo,成功运行,则表示顺利安装

make demo_ivfpq_indexing
  • 1
cd demos
  • 1
./demo_ivfpq_indexing
  • 1

解释并强调:在虚拟环境下安装,则会存放在虚拟环境下的site-packages,为保证虚拟环境python可以调用,必须确保步骤2中的python解释器路径是对的。

测试能否调用:成功导入这里就大功告成。

  1. python
  2. import faiss

import时有可能会遇到报错如下:

ImportError: cannot import name '_swigfaiss'
  • 1

问题原因:faiss文件是.egg的压缩形式
解决办法:去到虚拟环境下的site-packages,将faiss-xxx-xx.egg解压(tar -zxvf faiss-xxx-xx.egg)

到这里,笔者就没有问题了,希望你们也是。

参考:

六. faiss python安装_如何在ubuntu 18.04上安装faiss GPU

七. Install faiss error 安装faiss错误集锦

八. prec2:Nginx系列:依赖安装(pcre,zlib,openssl)(2) - 知乎

https://github.com/facebookresearch/faiss/issues/866

https://github.com/facebookresearch/faiss/issues/2064




六. faiss python安装_如何在ubuntu 18.04上安装faiss GPU

在这里插入图片描述

最近因为要做多路召回的相关研究需要使用faiss进行召回,很多同学困在了安装的流程上。所以想把如何安装流程做个小结。

最简单的方法就是通过Anaconda来进行安装,facebook官方会不定期的推送稳定版本到conda频道。

下面我讲介绍如何在刚安装完毕的Ubuntu 18.04上安装faiss GPU。

下面介绍如何安装CUDA 10.0到ubuntu.

安装CUDA 10.0

登录[1]的网址,按照下面的选项,下载需要的内容

在这里插入图片描述
下载所需要的本地deb安装文件,大概1.6GB左右,等待下载结束就好了。

继续下面的操作指南

Installation Instructions:
sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb

sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub

sudo apt-get update

sudo apt-get install cuda

安装Conda

登录conda的网站

https://www.anaconda.com/products/individual

下载需要的conda版本

在这里插入图片描述

这里我选择的是Python 3.8和64-Bit (x86) Installer (529MB)

下载完后,执行

sudo sh Anaconda3-2020.11-Linux-x86_64.sh
  • 1

conda的channel现在支持CUDA版本9.0,10.0的官方安装,如果你的CUDA版本是其他版本,也可以选择编译faiss源代码来代替官方版本。

使用conda官方的faiss版本来安装

请参考下面的命令来安装

# CPU version only
conda install faiss-cpu -c pytorch# GPU version
conda install faiss-gpu cudatoolkit=8.0 -c pytorch # For CUDA8
conda install faiss-gpu cudatoolkit=9.0 -c pytorch # For CUDA9
conda install faiss-gpu cudatoolkit=10.0 -c pytorch # For CUDA10
  • 1
  • 2
  • 3
  • 4
  • 5

这样,你的faiss就安装好了。由于我的机器在用conda安装的时候碰到了网络问题,所以我不得不考虑使用源代码进行安装。

Nvidia 1080Ti显卡的使用方案

我的ubuntu是英伟达的1080Ti,我也想尝试使用源代码进行编译。于是下载下列代码

git clone https://github.com/facebookresearch/faiss.git
  • 1
进入faiss目录
CPU-Only Build
cmake -B build . -DCUDAToolkit_ROOT=/usr/local/cuda-10.0/ -DFAISS_ENABLE_GPU=OFF -DPython_EXECUTABLE=/home/jiancong/anaconda3/bin/python3
  • 1
make -C build -j16
  • 1
cd build/faiss/python/ && python setup.py install
  • 1
GPU Build
cmake -B build . -DCUDAToolkit_ROOT=/usr/local/cuda-10.0/ -DFAISS_ENABLE_GPU=ON -DPython_EXECUTABLE=/home/jiancong/anaconda3/bin/python3
  • 1
make -C build -j16
  • 1
cd build/faiss/python/ && python setup.py install
  • 1
进入刚才生成的build目录,执行
make demo_ivfpq_indexing
  • 1
cd demos
  • 1
./demo_ivfpq_indexing
  • 1
执行到这里如果一切ok,我们再测试python接口
python -c "import faiss, numpy
  • 1
faiss.Kmeans(10, 20).train(numpy.random.rand(1000, 10).astype('float32'))"
  • 1

还是没问题,很好,Faiss编译安装完毕,去嗨吧。

参考
^CUDA下载网站 https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=debnetwork




七. Install faiss error 安装faiss错误集锦

1、安装swig fail

出现错误: Cannot find pcre-config script from PCRE (Perl Compatible Regular Expressions)

将pcre-8.45 安装包放在swig-4.0.1目录下,执行 ./Tools/pcre-build.sh

然后重新./configure

执行命令 cmake -B build . -DFAISS_ENABLE_GPU=OFF -DPython_EXECUTABLE=~/anaconda3/bin/python3 出现下列错误

2、CMake Error at /usr/local/share/cmake-3.20/Modules/FindSWIG.cmake:99 (message):
Command “/usr/local/bin/swig -swiglib” failed with output:

/usr/local/bin/swig: error while loading shared libraries: libpcre.so.1:
cannot open shared object file: No such file or directory

找不到 libpcre.so.1

在 sudo cp /usr/local/lib/libpcre.so.1 /usr/lib/libpcre.so.1 即可解决

3、CMake Error at /usr/local/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find SWIG (missing: SWIG_DIR python)
Call Stack (most recent call first):
/usr/local/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/usr/local/share/cmake-3.20/Modules/FindSWIG.cmake:141 (find_package_handle_standard_args)
faiss/python/CMakeLists.txt:16 (find_package)

sudo make install

确认执行了make install命令

4、执行安装faiss包命令 cd build/faiss/python && python3 setup.py install 时

Traceback (most recent call last):

File “setup.py”, line 7, in
from setuptools import setup, find_packages
ModuleNotFoundError: No module named ‘setuptools’

解决方案 自己安装setuptools 或 使用anaconda的提供的编译器python3




八. prec2:Nginx系列:依赖安装(pcre,zlib,openssl)(2) - 知乎

在学习编译安装Nginx之前,需要先把Nginx的依赖安装好。因为在编译安装Nginx时,需要用到这些函数库和必要的软件:pcrezlibopenssl

关键词:pcre/pcre2/pcre-devel安装,zlib/zlib-devel安装,openssl源码安装

再来补充:

特别注意

这里安装软件的时候,都使用:./configure 也就是默认路径: /usr/local/

建议安装时候,加上自己的路径:

./configure --prefix=/usr/local/pcre-8.42-6/

./configure --prefix=/usr/local/zlib-1.2.13/

./configure --prefix=/usr/local/openssl-3.0.7/

后期容易删除软件,切换版本等


pcre/pcre2

特别注意:Nginx不支持pcre2版本!

但是我是先下载pcre2源码编译安装的,所以这边的步骤和截图都以pcre2为例

根据步骤和操作,编译安装pcre是没有任何问题的,是一样的效果!!

一,下载地址

官网:http://www.pcre.org 里面可以下载最新版本

选择pcre版本即可,Nginx不支持pcre2,这里演示的是pcre2版本而已!

二,下载源码包

在官网里面找到对应的下载页,复制下载链接

cd /usr/local/src
  • 1
mkdir pcre
  • 1
cd pcre
  • 1
wget –O ./pcre2-10.37.tar.gz https://sourceforge.net/projects/pcre/files/pcre2/10.37/pcre2-10.37.tar.gz
  • 1

说明:学习Linux的目录结构后,我们要养成规范使用的习惯,把源码放到/usr/local/src目录下

规范参看:

Linux系列:Linux目录分析:[/] + [/usr] + [/usr/local] + [/usr/local/app-name]、Linux最全环境配置 + 动态库/静态库配置 中的 Linux目录分析:[/] + [/usr] + [/usr/local] + [/usr/local/app-name]

三,解压源码包
tar –zxvf pcre2-10.37.tar.gz
  • 1
四,配置安装参数
cd pcre2-10.37
  • 1
./configure –-help (可以查看很多安装的参数,自主进行选择)
  • 1
./configure (一般直接默认配置就行,会生成Makefile,默认安装目录是/usr/local)
  • 1

在这里插入图片描述

五,编译make

会调用刚才生成的编译文件Makefile
在这里插入图片描述

六,检查make check

这个命令是可以跳过的,部分软件没有make check命令
在这里插入图片描述

七,安装make install

直接执行安装即可
在这里插入图片描述

八,检查安装
cd /usr/local/lib
  • 1

查看目录下有没有libpcre2的动态库文件

在这里插入图片描述

九,卸载软件/库

一般的软件都会在编译安装时,写好uninstall卸载指令

cd /usr/local/src/pcre/pcre2-10.37
  • 1
make uninstall
  • 1

则会把安装的函数库全部删除,则完成卸载

十,重新编译和安装

先清除旧的安装参数配置和包残留

make clean(部分软件是make clean all)
  • 1

再重回第三步:./configure进行配置即可

zlib

官网地址:https://zlib.net/ 里面可以下载最新版本

具体的安装流程跟上面的pcre是一样的,不再详细描述,都是:

选择安装包,下载安装包,解压安装包,进入目录

执行./configure --> make --> make check --> make install

去安装目录(这里默认是/usr/lcoal/lib)检查是否存在zlib的so库

openssl

官网地址:/index.html (openssl.org) 里面可以下载最新版本

具体的安装流程跟上面的pcre是一样的,不在详细描述,都是:

选择安装包,下载安装包,解压安装包,进入目录

执行./configure --> make --> make check --> make install

./configure可能会遇到一些问题:

执行:yum -y install perl-IPC-Cmd

说明:安装的openssl不是函数库,而是软件!

所以直接去安装目录(这里默认是/usr/local)下找openssl的目录

如果直接执行openssl version,可能会报找不到命令:那就是没有没有把安装目录加入系统环境

参看这篇文章:

Linux系列:Linux目录分析:[/] + [/usr] + [/usr/local] + [/usr/local/app-name]、Linux最全环境配置 + 动态库/静态库配置 中的 Linux最全环境配置 + 动态库/静态库配置

或者显示的版本不是你安装的版本:那就是原本系统就装有openssl

我的做法是:

find / -name openssl 或者 whereis openssl

找到所有的openssl文件,函数库,执行软件等,都删除

再根据上面的方法重新安装,并配置系统环境

pcre-devel/zlib-devel

pcre-devel是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译Nginx所必须使用的

zlib-devel也是同样的作用

这2个我没有找到对应的源码安装包,所以只用使用yum安装了

yum -y install pcre-devel
  • 1
yum -y install zlib-devel
  • 1

这里也算是体现了源码安装 + yum安装结合的方式了

或许你可以看看这篇文章:

Linux系列:RPM安装 + yum安装 + 源码安装的区别&优缺点、CentOS下的yum安装 + yum源配置 + yum镜像源、Linux下的源码安装中的RPM安装 + yum安装 + 源码安装的区别&优缺点













NuerNuer

坑 之 Ubuntu Conda虚拟环境使用faiss-gpu报错分析及解决办法

weixin_45672316

通过Anaconda Prompt搭建faiss-gpu1.7.0和tensorflow-gpu1.13.1的联合环境

安装tensorflow-gpu时遇到的from tensorflow.python import pywrap_tensorflow失败的解决方案

cmd执行Python脚本出现找不到第三方库的问题(已解决)

Python安装numpy躺过的坑

weixin_39792747

faiss python安装_如何在ubuntu 18.04上安装faiss GPU

news

faiss python安装_如何在ubuntu 18.04上安装faiss GPU

神龙逗勇士

Install faiss error 安装faiss错误集锦

不是罗罗

Nginx系列:依赖安装(pcre,zlib,openssl)(2)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/502948
推荐阅读
相关标签
  

闽ICP备14008679号