CLIツール
facebookresearch/faiss avatar
facebookresearch/faiss

benchs スクリプトで Faiss ベンチマーク結果を再現する

facebookresearch/faissは実運用向けに使える実用的なオープンソース実装で、再利用可能な導入ルートを持つプロジェクトです。

スター 40,905フォーク 4,524C++MIT

ひと目でわかる

これは何?
benchs ディレクトリには、Polysemous 論文と GPU 論文向けの自己完結型スクリプトと、外部データセット、出力例が含まれます。
誰に向いている?
faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に C++ です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

benchsが再現する二つの論文

faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 benchsが再現する二つの論文では、READMEにある対象と範囲をこの節の論点として読みます。

benchs ディレクトリはライブラリ本体ではない。benchs ディレクトリの README は、facebookresearch/faiss リポジトリ内にある一連のベンチマークスクリプトについて説明しています。リポジトリのメタデータでは、Faiss は C++ で書かれた、稠密ベクトルの類似性検索とクラスタリングのためのライブラリとされ、ホームページは faiss.ai です。スクリプトは自己完結型で、Faiss と、サブディレクトリに置かれる外部トレーニングデータだけに依存します。README は再現される数値、特にタイミングが、実装の変更や異なるマシンによって少し変わることも注意書きしています。

導入判断ではfaissのREADMEに記載された具体的な入口を一つ選び、入力、設定、出力、エラーを同じ記録に残します。資料にない性能や安全性は補いません。faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 実行前後の差分を確認し、更新で挙動が変わった箇所だけを切り分けます。 benchsが再現する二つの論文に関してREADMEが明記していない条件は、未確認のまま採用範囲の外へ置きます。

SIFT1MとSIFT1Bの準備

faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 SIFT1MとSIFT1Bの準備では、READMEにある対象と範囲をこの節の論点として読みます。

対象となる論文の結果。スクリプトは2本の論文の結果を再現します。1本目は Douze、Jégou、Perronnin が ECCV 2016 で発表した Polysemous codes です。2本目は Jeff Johnson、Matthijs Douze、Hervé Jégou による Billion-scale similarity search with GPUs で、README では arXiv:1702.08734 とされています。bench_polysemous_sift1m.py は Polysemous 論文の図3に対応し、bench_polysemous_1bn.py は同論文の10億ベクトル実験、表2と付録を扱います。GPU スクリプトは GPU 論文を対象としています。

導入判断ではfaissのREADMEに記載された具体的な入口を一つ選び、入力、設定、出力、エラーを同じ記録に残します。資料にない性能や安全性は補いません。faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 実行前後の差分を確認し、更新で挙動が変わった箇所だけを切り分けます。 SIFT1MとSIFT1Bの準備に関してREADMEが明記していない条件は、未確認のまま採用範囲の外へ置きます。

Polysemousの10億ベクトル実験

faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 Polysemousの10億ベクトル実験では、READMEにある対象と範囲をこの節の論点として読みます。

外部データセットとダウンロード手順。データセットはリポジトリに含まれません。SIFT1M と SIFT1B は corpus-texmex.irisa.fr からダウンロードし、sift1M または bigann サブディレクトリに展開します。Deep1B の ground truth とクエリは Yandex.Disk のリンクから取得し、データベースベクトルと学習ベクトルは GNOIMI リポジトリの downloadDeep1B.py で取得して base.fvecs と learn.fvecs に連結します。MNIST8m は Léon Bottou の infinite MNIST ページから取得します。README にはこれらのファイルのチェックサムがないため、整合性の確認は利用者に委ねられています。

導入判断ではfaissのREADMEに記載された具体的な入口を一つ選び、入力、設定、出力、エラーを同じ記録に残します。資料にない性能や安全性は補いません。faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 実行前後の差分を確認し、更新で挙動が変わった箇所だけを切り分けます。 Polysemousの10億ベクトル実験に関してREADMEが明記していない条件は、未確認のまま採用範囲の外へ置きます。

GPUスクリプトのメモリ条件

faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 GPUスクリプトのメモリ条件では、READMEにある対象と範囲をこの節の論点として読みます。

Polysemous の10億件実験を実行する。bench_polysemous_1bn.py は、データセット名、有効な index_factory キー、検索時パラメータを取ります。README の例では SIFT1000M に IMI2x12,PQ16 を使い、ブレース展開で nprobe、max_codes、ハミング閾値のグリッドを指定しています。その記録では、トレーニングに約2分、ベクトル追加に約3.1時間かかり、どちらもマルチスレッドです。検索ステップはマルチスレッドではありません。表2の結果は、ハミングチェックを通過するコード比較の割合が約20%になる点で選択され、サンプル出力では ht=48 に相当します。

導入判断ではfaissのREADMEに記載された具体的な入口を一つ選び、入力、設定、出力、エラーを同じ記録に残します。資料にない性能や安全性は補いません。faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 実行前後の差分を確認し、更新で挙動が変わった箇所だけを切り分けます。 GPUスクリプトのメモリ条件に関してREADMEが明記していない条件は、未確認のまま採用範囲の外へ置きます。

測定値の揺れとMITライセンス

faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 測定値の揺れとMITライセンスでは、READMEにある対象と範囲をこの節の論点として読みます。

GPU 検索、クラスタリング、k-NN グラフスクリプト。README の GPU セクションは、GPU 論文の測定を Titan X GPU 1枚または4枚で再現します。bench_gpu_sift1m.py は SIFT1M の正確検索と近似検索を実行します。bench_gpu_1bn.py は SIFT1B と Deep1B のマルチGPU検索を扱い、README は一時メモリを制限する -tempmem や、追加時の GPU メモリオーバーフローを防ぐ -altadd などのオプションを説明しています。kmeans_mnist.py は MNIST8m をクラスタリングし、bench_gpu_1bn.py の別の呼び出しは Deep1B で k-NN グラフを構築します。README は小さいデータセットには GpuIVFFlat を推奨しています。

導入判断ではfaissのREADMEに記載された具体的な入口を一つ選び、入力、設定、出力、エラーを同じ記録に残します。資料にない性能や安全性は補いません。faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 実行前後の差分を確認し、更新で挙動が変わった箇所だけを切り分けます。 測定値の揺れとMITライセンスに関してREADMEが明記していない条件は、未確認のまま採用範囲の外へ置きます。

採用判断と最初のベンチマーク

faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 採用判断と最初のベンチマークでは、READMEにある対象と範囲をこの節の論点として読みます。

追加のベンチマークとライセンス。論文再現以外にも、ディレクトリには Faiss コンポーネント向けの独立したベンチマークが多数あります。量子化コーデック、ハミング距離カーネル、ヒープ操作、HNSW 変種、IVF fastscan、ペアワイズ距離、分割、積量子化テーブル、ベクトル演算などです。README は一部が古くなっている可能性があると述べています。リポジトリは MIT ライセンスで、著作権は Facebook, Inc. とその関連会社にあります。ライセンスは使用、複製、変更、結合、公開、配布、再ライセンス、販売を許可し、保証を否認します。README が扱っていないのは、インストール、API の使い方、ドライバ要件、想定ハードウェアで、これらは別途確認する必要があります。

導入判断ではfaissのREADMEに記載された具体的な入口を一つ選び、入力、設定、出力、エラーを同じ記録に残します。資料にない性能や安全性は補いません。faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 実行前後の差分を確認し、更新で挙動が変わった箇所だけを切り分けます。 採用判断と最初のベンチマークに関してREADMEが明記していない条件は、未確認のまま採用範囲の外へ置きます。

編集部の結論

faissのbenchsはライブラリの一般利用ガイドではなく、Polysemous codes論文とGPU論文の測定を再現するスクリプト群です。外部データセットと対象ハードウェアが結果の前提になります。 向いているのはREADMEの対象環境と入力形式を管理できる利用者です。本番の保証や性能をREADMEだけで決めたい利用者には向きません。 最初に確認する対象はデータセットの取得元、GPUメモリ、スクリプトの出力差です。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート