欢迎光临
我们一直在努力

【Faiss系列之一】在Mac系统编译安装Faiss

【Faiss系列之一】在Mac系统编译安装Faiss

Faiss是Facebook开源的一个相似性搜索库,正如它的名字Faiss就是Fair AI Similarity Search。 最近由于工作原因,需要探索一下此库的使用方法和性能,故写此系列记录下探索过程。
首先第一篇,如何在Mac系统上编译安装Faiss。先说一下环境,我的系统是10.13.2。本文虽然是在MacOS上的演示,但是对于linux的发行版Ubuntu、centos来说也大同小异,而且在linux上通常安装都会更顺利一些。

第一步 clone faiss的代码仓库

1
git clone https://github.com/facebookresearch/faiss.git

第二步 安装必要的依赖和工具

Faiss依赖blas这个代数运算库,所以我们需要安装openblas。如果你的系统已经有了blas库比如mkl,就不需要安装openblas了
我们这里假设你的系统已经安装了annacoda,如果没有可以看这里安装 https://conda.io/docs/user-guide/install/macos.html 很easy,
执行

1
conda install openblas

,安装完毕后,建个软链

1
ln -s $HOME/anaconda2/lib/libopenblas.dylib /usr/lib/libopenblas.dylib

然后我们执行

1
make tests/test_blas

验证一下有无问题,如果无问题,这个第二步就ok了,如果提示

1
fatal error: 'stdio.h' file not found

这类问题,则需要执行

1
xcode-select --install

执行完后,继续再试一下

1
make tests/test_blas

,同样如果无问题,这个第二步也已经ok了,如果提示

1
fatal error: 'malloc.h' file not found

,就编辑一下出错的cpp源文件,我这里是

1
IndexScalarQuantizer.cpp

,把 malloc.h 改成 sys/malloc.h
然后再执行

1
make tests/test_blas

不出意外就成功了。

第三步 编译安装Faiss的C++部分

执行

1
make all

完毕后可以执行

1
./tests/demo_ivfpq_indexing

测试一下

第四步 安装Faiss的Python部分

【提示】如果你平常是使用C++做开发的话,到上一步就ok了,你可以在C++开发中include faiss的库进行开发。
如果你是使用python开发的话,我们还要安装Faiss的python module。
编辑make配置文件

1
vim makefile.inc

找到PYTHONCFLAGS这项,替换成
PYTHONCFLAGS=-I${HOME}/anaconda2/include/python2.7/ -I${HOME}/anaconda2/lib/python2.7/site-packages/numpy/core/include/
然后执行

1
make py

执行完毕ok了,我们再执行

1
python -c "import faiss"

测试一下
如果你看到


1
2
Failed to load GPU Faiss: No module named swigfaiss_gpu
Faiss falling back to CPU-only

就表示成功了,现在可以用python使劲捣鼓捣鼓faiss了

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 【Faiss系列之一】在Mac系统编译安装Faiss
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址