annbench: 近似最近傍探索アルゴリズムのベンチマーク
by
Yusuke Matsui
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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