Contents
【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了