FAISS的Python版本安装起来是很快乐的,conda就可以轻松安装。 但是C++版本需要花费一点功夫。网上关于C++的教程除了官方以外少之有少,官方教程又过于繁琐,特此整理自己的安装流程,希望帮助到大家。 对官方教程感兴趣的,关注:https://github.com/facebookresearch/faiss/blob/main/INSTALL.md
预编译
按照官方github的要求,首先cmake预编译:
cmake -DBUILD_TESTING=ON -DFAISS_ENABLE_GPU=OFF build .
果断报错:
-- Could NOT find MKL (missing: MKL_LIBRARIES)
以及
Could NOT find SWIG (missing: SWIG_EXECUTABLE SWIG_DIR)
因此下面安装MKL和SWIG。
安装MKL
网上大多数教程都要从英特尔官网注册账号开始,然而这里并不用,我尝试了下直接从命令行安装即可:
sudo apt install intel-mkl
注意安装时出现的提示一直Enter(也就是按确定建进行下一步)就行,不用改其他的东西。 再次预编译发现找到了MKL的包。
安装SWIG
同样是直接apt安装。
sudo apt install swig
swig -version
查看下swig版本可以检查是否安装上了。
最终预编译成功:
(base) mjy@mjyzj:~/toytools/faiss$ cmake -DBUILD_TESTING=ON -DFAISS_ENABLE_GPU=OFF build .
-- Found SWIG: /usr/bin/swig4.0 (found version "4.0.1")
-- Found Python: /home/mjy/anaconda3/lib/libpython3.8.so (found version "3.8.8") found components: Development NumPy Interpreter
-- The C compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PythonInterp: /home/mjy/anaconda3/bin/python (found version "3.8.8")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/mjy/toytools/faiss
编译
不用看官方github的命令,我这里直接使用make进行编译:
make -j6
编译完成后进行测试:
make demo_imi_flat
./demos/demo_imi_flat
安装
sudo make install
安装成功,安装信息:
......
......
......
......
-- Installing: /usr/local/include/faiss/utils/simdlib_neon.h
-- Installing: /usr/local/include/faiss/utils/utils.h
-- Installing: /usr/local/include/faiss/invlists/OnDiskInvertedLists.h
-- Installing: /usr/local/share/faiss/faiss-config.cmake
-- Installing: /usr/local/share/faiss/faiss-config-version.cmake
-- Installing: /usr/local/share/faiss/faiss-targets.cmake
-- Installing: /usr/local/share/faiss/faiss-targets-noconfig.cmake
可以看到将FAISS安装在了/usr/local/share中。
|