conda 環境でも pip 環境でも最新の faiss(GPU) を利用するために、ソースコードからビルドを試みてインストールを行います
動作確認環境
Docker (tensorflow/tensorflow:2.17.0-gpu)
Ubuntu 22.04.3 LTS
Python 3.11.0-rc1
faiss v1.9.0
ベクトルの距離やコサイン類似度を利用して近傍探索をしたい場合は、faissが便利です
GPU(cuda)を利用して、高速に探索することも可能です
注意
GPU を利用するためには NVIDIA から配布される nvcc や cuda-toolkit の事前導入が必要です
導入がまだの方は、以下を参考にしてみてください
Anaconda を使っている場合は、最新版が公式で配布されているので非常に簡単です 🎉
conda install -c pytorch -c nvidia faiss-gpu=1.9.0pypi からも配布されていますが、現時点で 1.7.2 とバージョンが古いです。あまりお勧めしません
(積極的な保守は行われていなさそうです)
pip install faiss-gpu少し茨の道ではありますが GitHub からソースを取得してビルドを行い、インストールしてみようと思います
必要なもの
まず、必要なパッケージをインストールします
apt updateapt install -y vim less fontconfig git swig curlapt install --no-install-recommends -y build-essential
次に、ビルドするために必要な CMAKE をインストールします
以下は Ubuntu 22 での例です。他のバージョンの場合は jammy の部分を読み替える必要があります
(Ubuntu 24 は noble、Ubuntu 20 は focal です)
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/nullecho 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | tee /etc/apt/sources.list.d/kitware.list >/dev/nullsudo apt updatesudo apt install -y cmake
加えて BLAS が必要のようなので MKL をインストールします
sudo apt install -y intel-mklさらに 1.9.0 からは gflags が必要になったようなので、これもインストールします
apt install -y libgflags-dev最後に faiss をGitHubからクローンしてビルドを行い、インストールします
現時点での最新版である v1.9.0 を導入します
source /opt/intel/oneapi/setvars.sh --forcegit clone --branch v1.9.0 https://github.com/facebookresearch/faiss.gitcd faisscmake -B build .make -C build -j faissmake -C build -j swigfaisscd build/faiss/pythonpython setup.py install
これでインストール完了です 🎉
不要であれば、ソースコードを削除します
cd ../../../../rm -rf faiss
TensorflowのDockerイメージを利用する場合は、以下のシェルスクリプトでも導入できるので参考にしてください
install.sh
CMake Error at perf_tests/CMakeLists.txt:21 (find_package) エラー (Faiss 1.9.0+)
おわりに
ベクトルの近傍探索を高速処理することはそんなにないかもですが、私の場合は研究で一役買っています 🐶