一. 通过Anaconda Prompt搭建faiss-gpu1.7.0和tensorflow-gpu1.13.1的联合环境
(1)打开Anaconda3文件夹下的Anaconda Prompt:
2)新建Anaconda的虚拟环境:
conda create --name 你的虚拟环境名 python=3.6.8
为了便于使用,你的虚拟环境名可以用你的虚拟环境对应的python版本的简称:
比如python=3.6.8,那么虚拟环境名就可以命名为py368
(3)激活你创建的虚拟环境
conda activate 你的虚拟环境名
(4)先安装对应python版本的tensorflow-gpu
pip install tensorflow-gpu==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
【注意】安装完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/
(6)安装完tensorflow之后,开始安装faiss-gpu
【注意】faiss-gpu安装过程中,其对应版本的faiss也会进行安装
conda install -c conda-forge faiss-gpu=1.7.0
(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/
pip install tensorflow==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
(6)结果,报错信息消失
三. cmd执行Python脚本出现找不到第三方库的问题(已解决)
(1)原因:很简单,python编译器的路径没有指定
(2)错误案例:
python h5Deploy.py
(3)现在指定正确的python路径之后再试一次:
E:\python3.7\python.exe h5Deploy.py
四. 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
报错:
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
错误原因:
依然怀疑是版本问题,在github上也查看到了类似的issue,也没有很好的解决办法。
所以我尝试使用pip安装faiss-gpu
pip install faiss-gpu==1.7.1
依旧报错:段错误,无效指针等问题,头皮发麻
奇怪现象:当特征维度是768时并不报错,为512时就会报错,这里依旧没有得到很好的解释,读者可以尝试一下,看有无相同的实验现象。
抱着版本不对升级版本的目的又安装了faiss-gpu=1.7.2
的版本,但依旧不好使。
二. 解决办法:使用源码安装的方式编译安装faiss-gpu==1.7.1,成功
说一下前提条件,若要在conda环境里安装则先激活虚拟环境,并检查当前环境的python解释器
conda activate xxx
which python
安装步骤:
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
make -C build -j16
cd build/faiss/python/ && python setup.py install
#注意修改成 自己的 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)
安装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
cd demos
./demo_ivfpq_indexing
解释并强调:在虚拟环境下安装,则会存放在虚拟环境下的site-packages,为保证虚拟环境python可以调用,必须确保步骤2中的python解释器路径是对的。
测试能否调用:成功导入这里就大功告成。
- python
- import faiss
import时有可能会遇到报错如下:
ImportError: cannot import name '_swigfaiss',
问题原因: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
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
这样,你的faiss就安装好了。由于我的机器在用conda安装的时候碰到了网络问题,所以我不得不考虑使用源代码进行安装。
Nvidia 1080Ti显卡的使用方案
我的ubuntu是英伟达的1080Ti,我也想尝试使用源代码进行编译。于是下载下列代码
git clone https://github.com/facebookresearch/faiss.git
进入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
make -C build -j16
cd build/faiss/python/ && python setup.py install
GPU Build
cmake -B build . -DCUDAToolkit_ROOT=/usr/local/cuda-10.0/ -DFAISS_ENABLE_GPU=ON -DPython_EXECUTABLE=/home/jiancong/anaconda3/bin/python3
make -C build -j16
cd build/faiss/python/ && python setup.py install
进入刚才生成的build目录,执行
make demo_ivfpq_indexing
cd demos
./demo_ivfpq_indexing
执行到这里如果一切ok,我们再测试python接口
python -c "import faiss, numpy
faiss.Kmeans(10, 20).train(numpy.random.rand(1000, 10).astype('float32'))"
还是没问题,很好,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时,需要用到这些函数库和必要的软件:pcre,zlib,openssl
关键词: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
mkdir pcre
cd pcre
wget –O ./pcre2-10.37.tar.gz https://sourceforge.net/projects/pcre/files/pcre2/10.37/pcre2-10.37.tar.gz
说明:学习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
四,配置安装参数
cd pcre2-10.37
./configure –-help (可以查看很多安装的参数,自主进行选择)
./configure (一般直接默认配置就行,会生成Makefile,默认安装目录是/usr/local)
五,编译make
会调用刚才生成的编译文件Makefile
六,检查make check
这个命令是可以跳过的,部分软件没有make check命令
七,安装make install
直接执行安装即可
八,检查安装
cd /usr/local/lib
查看目录下有没有libpcre2的动态库文件
九,卸载软件/库
一般的软件都会在编译安装时,写好uninstall卸载指令
cd /usr/local/src/pcre/pcre2-10.37
make uninstall
则会把安装的函数库全部删除,则完成卸载
十,重新编译和安装
先清除旧的安装参数配置和包残留
make clean(部分软件是make clean all)
再重回第三步:./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
yum -y install zlib-devel
这里也算是体现了源码安装 + 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错误集锦
不是罗罗文章来源:https://www.toymoban.com/news/detail-841197.html
Nginx系列:依赖安装(pcre,zlib,openssl)(2)文章来源地址https://www.toymoban.com/news/detail-841197.html
到了这里,关于Python&aconda系列:(W&L)Conda使用faiss-gpu报错及解决办法、安装numpy的坑、cmd执行Python脚本找不到第三方库、安装tensorflow-gpu时遇到的from的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!