Slide 1

Slide 1 text

annbench: 近似最近傍探索 アルゴリズムのベンチマーク 松井勇佑 東京大学 生産技術研究所 助教 http://yusukematsui.me 2020/3/24, ML@Loft #11. 類似画像/テキスト検索, LT 1

Slide 2

Slide 2 text

0.23 3.15 0.65 1.43 探索 0.20 3.25 0.72 1.68 ∈ ℝ 74 argmin ∈ 1,2,…, − 2 2 結果 1 , 2 , … , ∈ ℝ 近似最近傍探索 ➢個のベクトルがある ➢クエリが与えられたとき,一番近いベクトルを (近似的に)探す ➢速度,メモリ,精度のトレードオフ 2

Slide 3

Slide 3 text

どのライブラリ、どの手法を選べばいい? https://github.com/erikbern/ann-benchmarks ・・・などなど

Slide 4

Slide 4 text

4 ベンチマーク ➢ https://github.com/erikbern/ann-benchmarks ➢ 右上なほど良い ➢ 2020/3現在、トップはNMSLIBと NGT (yahoo japan)で競っている

Slide 5

Slide 5 text

5 ベンチマーク ➢ https://github.com/erikbern/ann-benchmarks ➢ 右上なほど良い ➢ 2020/3現在、トップはNMSLIBと NGT (yahoo japan)で競っている ➢このベンチマークは網羅的で非常に素晴らしいが、 ✓全て実行すると10時間以上かかる ✓パラメータを網羅的に調べた結果なので、解釈しにくい ✓faissに厳しい(ちゃんとパラメータ設定していない)

Slide 6

Slide 6 text

annbench: simple and lightweight benchmark for approximate nearest neighbor search https://github.com/matsui528/annbench # Install libraries pip install -r requirements.txt # Download dataset on ./dataset python download.py dataset=siftsmall # Evaluate algos. Results are on ./output python run.py dataset=siftsmall algo=annoy # Visualize python plot.py 精度高い 速い シンプル!

Slide 7

Slide 7 text

# Download dataset on ./dataset python download.py --multirun dataset=siftsmall,sift1m # Evaluate algos. Results are on ./output python run.py --multirun dataset=siftsmall,sift1m algo=linear,annoy,ivfpq,hnsw 複数データセットで複数アルゴリズムを試す ➢ Hydraによる パラメータ スイープ ➢ コンマで 区切るだけ

Slide 8

Slide 8 text

algo: name: ivfpq param_index: - M: 8 nlist: 100 - M: 16 nlist: 100 param_query: nprobe: - 1 - 2 - 4 - 8 - 16 ivfpq.yaml パラメータ設定

Slide 9

Slide 9 text

インタラクティブにパラメータ上書き # Use ivfpq.yaml (nprobe=[1,2,4,8,16]) python run.py algo=ivfpq dataset=sift1m # Override python run.py algo=ivfpq dataset=sift1m param_query.nprobe=[1,5,25]

Slide 10

Slide 10 text

annbench: simple and lightweight benchmark for approximate nearest neighbor search https://github.com/matsui528/annbench ➢ 是非使ってみてください! ➢ PR歓迎です! ➢ 探索の理論/応用の研究に興味がある企業の方、 学生の方、お声がけください http://yusukematsui.me