当前位置:   article > 正文

【faiss】安装(一)_faiss c++版本安装教程

faiss c++版本安装教程

faiss安装

使用Anaconda安装

使用Anaconda安装使用faiss是最方便快速的方式,facebook会及时推出faiss的新版本conda安装包,在conda安装时会自行安装所需的libgcc, mkl, numpy模块。
faiss的cpu版本目前仅支持Linux和MacOS操作系统,gpu版本提供可在Linux操作系统下用CUDA8.0/CUDA9.0/CUDA9.1编译的版本。
注意,上面语句中的cuda90并不会执行安装CUDA的操作,需要提前自行安装。

  1. #安装cpu版本
  2. #更新conda
  3. conda update conda
  4. #先安装mkl
  5. conda install mkl
  6. #安装faiss-cpu
  7. conda install faiss-cpu -c pytorch
  8. #测试安装是否成功
  9. python -c "import faiss"
  1. #安装gpu版本
  2. #确保已经安装了CUDA,否则会自动安装cup版本。
  3. conda install faiss-gpu -c pytorch # 默认 For CUDA8.0
  4. conda install faiss-gpu cuda90 -c pytorch # For CUDA9.0
  5. conda install faiss-gpu cuda91 -c pytorch # For CUDA9.1

注意,上面语句中的cuda90/91并不会执行安装CUDA的操作,需要提前自行安装。

编译安装

编译安装需要3个步骤:
1.编译C++文件;
2.编译Python界面;
3.编译GPU部分。
步骤1是必要的,步骤2和3相互独立,不存在相互依赖。
faiss通过一个Makefile文件编译,系统相关的配置文件包含在makefile.inc这个文件中,在下载的faiss安装文件中的example_makefiles文件夹下有实例文件,选择适合的操作系统,将其复制到faiss根目录下,并重命名为makefile.inc。文件中的部分参数需要手动修改。

第一步:编译C++ faiss

BLAS/Lapack

  1. # ubuntu 16
  2. sudo apt-get install libopenblas-dev python-numpy python-dev
  3. # ubuntu 14
  4. sudo apt-get install libopenblas-dev liblapack3 python-numpy python-dev
  5. # 执行配置文件
  6. ./configure
  7. #检查BLAS
  8. make misc/test_blas
  9. ./misc/test_blas

建造faiss

  1. make
  2. make install

第二步 编译Python界面

  1. #安装swig
  2. sudo apt-get install swig # ubuntu 16
  3. make py
  4. # 默认使用系统python2.7,如果想使用其他版本的python,需要在makefile.inc文件中修改PYTHONCFLAGS值为python安装路径。

测试faiss的python使用

  1. #编译只有在faiss/python文件夹下应该包含如下三个文件
  2. #faiss.py
  3. #swigfaiss.py / swigfaiss_gpu.py
  4. #_swigfaiss.so / _swigfaiss_gpu.so
  5. #编译不报错并不意味着faiss可以正常使用,
  6. python -c "import faiss"
  7. #如果不能import,可能是faiss的路径没配置正确,可以在使用时添加代码
  8. import sys
  9. sys.path.append(faiss_path) # 如 ‘/home/faiss/python/’
  10. #可能是有一些symbols丢失了,使用下面的命令查看
  11. cd python
  12. ldd -r _swigfaiss.so
  13. # 有时候只有在使用BLAS库的时候报错,使用下面的命令测试
  14. python -c "import faiss, numpy"
  15. faiss.Kmeans(10, 20).train(numpy.random.rand(1000, 10).astype('float32'))

第三步 编译GPU部分

待完成。

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

闽ICP备14008679号