はじめに
FAISS は CUDA で実装された GPU アクセラレーションを備えており、数千万~数億ベクトル規模でも高速に近傍探索できます。2025 年 2 月公開の v1.10.0 以降 では、従来の「Classic GPU 実装」に加えて NVIDIA cuVS ベースの最適化実装 が統合され、Conda パッケージで簡単に切り替えられるようになりました。engineering.fb.com
以下では GPU 対応版 FAISS のインストール手順 を 3 通り(Conda/PyPI バイナリ/ソースビルド)に分けて解説します。環境要件や確認方法も合わせて示すので、用途に応じて選択してください。
1. Conda パッケージ(公式推奨・最も簡単)
対象: Linux x86_64/Windows x86_64、CUDA 11.8 または 12.1 以降
長所: 依存ライブラリ同梱・cuVS 切替えオプション付き
短所: Conda を使わない環境には向かない
-
1.10.0 以降、
faiss-gpuパッケージにfaiss-gpu-cuvsモジュールが同梱され、
FAISS_PREFER_CUVS=1を環境変数に設定すると cuVS 実装を優先利用できます。engineering.fb.com -
インストール後、
python -c "import faiss, os; print(faiss.get_num_gpus())"で
GPU が認識されているか確認してください。github.com
2. PyPI バイナリホイール(pip 利用・Docker などに便利)
対象: Linux x86_64、CUDA 11.8 / 12.1 以降
長所: Conda 不要・ホイールサイズが小さい
短所: Nvidia ドライバー互換性と CUDA ランタイムの自己管理が必要
| CUDA バージョン | パッケージ名 | インストール例 | 最低ドライバー |
|---|---|---|---|
| 12.1+ | faiss-gpu-cu12 |
pip install faiss-gpu-cu12[fix_cuda] |
R530 以上 |
| 11.8 | faiss-gpu-cu11 |
pip install faiss-gpu-cu11[fix_cuda] |
R520 以上 |
-
[fix_cuda]付きでインストールすると CUDA ランタイムと cuBLAS も PyPI から自動取得されるため、ホストに CUDA Toolkit を入れなくても動作します。pypi.org -
すでに PyTorch など他の CUDA ライブラリを使っている場合は 同じメジャー版 (11 / 12) を揃えてください。バージョン不一致は
RuntimeError: CUDA version mismatchの原因になります。facebook.com
3. ソースからビルド(カスタムアーキテクチャ/ARM Linux など)
対象: CUDA 11.4 以上が入った任意の Linux/WSL2/Mac(CPU ビルドのみ)
長所: アーキテクチャや最適化オプションを細かく指定可能
短所: ビルド時間が長い・依存解決がやや煩雑
-
依存関係を用意
-
ソース取得 & ビルド
-
Python バインディングをインストール
FAISS_ENABLE_GPU=ONを環境変数に付けてpip install --no-binary :all: faiss-cpuを実行すると、ソースパッケージから GPU 対応ホイールを自動生成することも可能です。pypi.org
4. 動作確認スクリプト(共通)
エラーなく結果が得られれば GPU 版の利用準備は完了です。github.com
5. トラブルシューティング
| 症状 | 主な原因と対処 |
|---|---|
ImportError: libfaiss_cu12.so: cannot open shared object file |
CUDA ランタイム/cuBLAS が PATH / LD_LIBRARY_PATH に入っていない → nvidia-cuda-runtime-cuXX と nvidia-cublas-cuXX を pip で追加するか Conda 環境を再作成 |
RuntimeError: The detected CUDA version (12.1) mismatches ... |
PyTorch や他のライブラリと CUDA メジャー版が揃っていない → 同じ 11.x / 12.x 系に統一し再インストール |
index_cpu_to_gpu() がハングする |
古い pip ホイールやドライバーとの相性問題 → Conda 版 1.10+ へ切替え、または最新ドライバーに更新github.com |
まとめ
-
最短で使うなら Conda 版
faiss-gpu。 -
Docker / 軽量環境では PyPI
faiss-gpu-cu11/12を pip で導入。 -
特殊アーキテクチャや独自最適化が必要なら ソースビルド。
いずれの方法でも、GPU ドライバーと CUDA の整合性さえ確保すれば、高速なベクトル検索機能をすぐに利用できます。
ChatGPT4o 生成日:2025/06/18