251 lines
6.6 KiB
Bash
251 lines
6.6 KiB
Bash
|
# Copyright (c) 2015-present, Facebook, Inc.
|
||
|
# All rights reserved.
|
||
|
#
|
||
|
# This source code is licensed under the BSD+Patents license found in the
|
||
|
# LICENSE file in the root directory of this source tree.
|
||
|
|
||
|
# @nolint
|
||
|
|
||
|
# This script launches the experiments on a cluster
|
||
|
# It assumes two shell functions are defined:
|
||
|
#
|
||
|
# run_on_1machine: runs a command on one (full) machine on a cluster
|
||
|
#
|
||
|
# run_on_8gpu: runs a command on one machine with 8 GPUs
|
||
|
#
|
||
|
# the two functions are called as:
|
||
|
#
|
||
|
# run_on_1machine <name> <command>
|
||
|
#
|
||
|
# the stdout of the command should be stored in $logdir/<name>.stdout
|
||
|
|
||
|
function run_on_1machine () {
|
||
|
# To be implemented
|
||
|
}
|
||
|
|
||
|
function run_on_1machine () {
|
||
|
# To be implemented
|
||
|
}
|
||
|
|
||
|
|
||
|
# prepare output directories
|
||
|
|
||
|
basedir=/mnt/vol/gfsai-east/ai-group/users/matthijs/bench_all_ivf
|
||
|
|
||
|
logdir=$basedir/logs
|
||
|
indexdir=$basedir/indexes
|
||
|
|
||
|
mkdir -p $lars $logdir $indexdir
|
||
|
|
||
|
|
||
|
############################### 1M experiments
|
||
|
|
||
|
for db in sift1M deep1M bigann1M; do
|
||
|
|
||
|
for coarse in IMI2x9 IMI2x10 IVF1024_HNSW32 IVF4096_HNSW32 IVF16384_HNSW32
|
||
|
do
|
||
|
|
||
|
for indexkey in \
|
||
|
OPQ8_64,$coarse,PQ8 \
|
||
|
PCAR16,$coarse,SQ4 \
|
||
|
OPQ16_64,$coarse,PQ16 \
|
||
|
PCAR32,$coarse,SQ4 \
|
||
|
PCAR16,$coarse,SQ8 \
|
||
|
OPQ32_128,$coarse,PQ32 \
|
||
|
PCAR64,$coarse,SQ4 \
|
||
|
PCAR32,$coarse,SQ8 \
|
||
|
PCAR16,$coarse,SQfp16 \
|
||
|
PCAR64,$coarse,SQ8 \
|
||
|
PCAR32,$coarse,SQfp16 \
|
||
|
PCAR128,$coarse,SQ4
|
||
|
do
|
||
|
key=autotune.db$db.${indexkey//,/_}
|
||
|
run_on_1machine $key \
|
||
|
python -u bench_all_ivf.py \
|
||
|
--db $db \
|
||
|
--indexkey $indexkey \
|
||
|
--maxtrain 0 \
|
||
|
--indexfile $indexdir/$key.faissindex
|
||
|
|
||
|
done
|
||
|
done
|
||
|
done
|
||
|
|
||
|
|
||
|
|
||
|
############################### 10M experiments
|
||
|
|
||
|
|
||
|
for db in deep10M bigann10M; do
|
||
|
|
||
|
for coarse in \
|
||
|
IMI2x10 IMI2x11 IMI2x12 IMI2x13 IVF4096_HNSW32 \
|
||
|
IVF16384_HNSW32 IVF65536_HNSW32 IVF262144_HNSW32
|
||
|
do
|
||
|
|
||
|
for indexkey in \
|
||
|
OPQ8_64,$coarse,PQ8 \
|
||
|
PCAR16,$coarse,SQ4 \
|
||
|
OPQ16_64,$coarse,PQ16 \
|
||
|
PCAR32,$coarse,SQ4 \
|
||
|
PCAR16,$coarse,SQ8 \
|
||
|
OPQ32_128,$coarse,PQ32 \
|
||
|
PCAR64,$coarse,SQ4 \
|
||
|
PCAR32,$coarse,SQ8 \
|
||
|
PCAR16,$coarse,SQfp16 \
|
||
|
PCAR64,$coarse,SQ8 \
|
||
|
PCAR32,$coarse,SQfp16 \
|
||
|
PCAR128,$coarse,SQ4 \
|
||
|
OPQ64_128,$coarse,PQ64
|
||
|
do
|
||
|
key=autotune.db$db.${indexkey//,/_}
|
||
|
run_on_1machine $key \
|
||
|
python -u bench_all_ivf.py \
|
||
|
--db $db \
|
||
|
--indexkey $indexkey \
|
||
|
--maxtrain 0 \
|
||
|
--indexfile $indexdir/$key.faissindex \
|
||
|
--searchthreads 16 \
|
||
|
--min_test_duration 3 \
|
||
|
|
||
|
done
|
||
|
done
|
||
|
done
|
||
|
|
||
|
|
||
|
############################### 100M experiments
|
||
|
|
||
|
for db in deep100M bigann100M; do
|
||
|
|
||
|
for coarse in IMI2x11 IMI2x12 IVF65536_HNSW32 IVF262144_HNSW32
|
||
|
do
|
||
|
|
||
|
for indexkey in \
|
||
|
OPQ8_64,$coarse,PQ8 \
|
||
|
OPQ16_64,$coarse,PQ16 \
|
||
|
PCAR32,$coarse,SQ4 \
|
||
|
OPQ32_128,$coarse,PQ32 \
|
||
|
PCAR64,$coarse,SQ4 \
|
||
|
PCAR32,$coarse,SQ8 \
|
||
|
PCAR64,$coarse,SQ8 \
|
||
|
PCAR32,$coarse,SQfp16 \
|
||
|
PCAR128,$coarse,SQ4 \
|
||
|
OPQ64_128,$coarse,PQ64
|
||
|
do
|
||
|
key=autotune.db$db.${indexkey//,/_}
|
||
|
run_on_1machine $key \
|
||
|
python -u bench_all_ivf.py \
|
||
|
--db $db \
|
||
|
--indexkey $indexkey \
|
||
|
--maxtrain 0 \
|
||
|
--indexfile $indexdir/$key.faissindex \
|
||
|
--searchthreads 16 \
|
||
|
--min_test_duration 3 \
|
||
|
--add_bs 1000000
|
||
|
|
||
|
done
|
||
|
done
|
||
|
done
|
||
|
|
||
|
|
||
|
############################### 1B experiments
|
||
|
|
||
|
for db in deep1B bigann1B; do
|
||
|
|
||
|
for coarse in IMI2x12 IMI2x13 IVF262144_HNSW32
|
||
|
do
|
||
|
|
||
|
for indexkey in \
|
||
|
OPQ8_64,$coarse,PQ8 \
|
||
|
OPQ16_64,$coarse,PQ16 \
|
||
|
PCAR32,$coarse,SQ4 \
|
||
|
OPQ32_128,$coarse,PQ32 \
|
||
|
PCAR64,$coarse,SQ4 \
|
||
|
PCAR32,$coarse,SQ8 \
|
||
|
PCAR64,$coarse,SQ8 \
|
||
|
PCAR32,$coarse,SQfp16 \
|
||
|
PCAR128,$coarse,SQ4 \
|
||
|
PQ64_128,$coarse,PQ64 \
|
||
|
RR128,$coarse,SQ4
|
||
|
do
|
||
|
key=autotune.db$db.${indexkey//,/_}
|
||
|
run_on_1machine $key \
|
||
|
python -u bench_all_ivf.py \
|
||
|
--db $db \
|
||
|
--indexkey $indexkey \
|
||
|
--maxtrain 0 \
|
||
|
--indexfile $indexdir/$key.faissindex \
|
||
|
--searchthreads 16 \
|
||
|
--min_test_duration 3 \
|
||
|
--add_bs 1000000
|
||
|
|
||
|
done
|
||
|
done
|
||
|
|
||
|
done
|
||
|
|
||
|
############################################
|
||
|
# precompute centroids on GPU for large vocabularies
|
||
|
|
||
|
|
||
|
for db in deep1M bigann1M; do
|
||
|
|
||
|
for ncent in 1048576 4194304; do
|
||
|
|
||
|
key=clustering.db$db.IVF$ncent
|
||
|
run_on_8gpu $key \
|
||
|
python -u bench_all_ivf.py \
|
||
|
--db $db \
|
||
|
--indexkey IVF$ncent,SQ8 \
|
||
|
--maxtrain 100000000 \
|
||
|
--indexfile $indexdir/$key.faissindex \
|
||
|
--searchthreads 16 \
|
||
|
--min_test_duration 3 \
|
||
|
--add_bs 1000000 \
|
||
|
--train_on_gpu
|
||
|
|
||
|
done
|
||
|
done
|
||
|
|
||
|
|
||
|
#################################
|
||
|
# Run actual experiment
|
||
|
|
||
|
for db in deep1B bigann1B; do
|
||
|
|
||
|
for ncent in 1048576 4194304; do
|
||
|
coarse=IVF${ncent}_HNSW32
|
||
|
centroidsname=clustering.db${db/1B/1M}.IVF${ncent}.faissindex
|
||
|
|
||
|
for indexkey in \
|
||
|
OPQ8_64,$coarse,PQ8 \
|
||
|
OPQ16_64,$coarse,PQ16 \
|
||
|
PCAR32,$coarse,SQ4 \
|
||
|
OPQ32_128,$coarse,PQ32 \
|
||
|
PCAR64,$coarse,SQ4 \
|
||
|
PCAR32,$coarse,SQ8 \
|
||
|
PCAR64,$coarse,SQ8 \
|
||
|
PCAR32,$coarse,SQfp16 \
|
||
|
OPQ64_128,$coarse,PQ64 \
|
||
|
RR128,$coarse,SQ4 \
|
||
|
OPQ64_128,$coarse,PQ64 \
|
||
|
RR128,$coarse,SQ4
|
||
|
do
|
||
|
key=autotune.db$db.${indexkey//,/_}
|
||
|
|
||
|
run_on_1machine $key.c $key \
|
||
|
python -u bench_all_ivf.py \
|
||
|
--db $db \
|
||
|
--indexkey $indexkey \
|
||
|
--maxtrain 256000 \
|
||
|
--indexfile $indexdir/$key.faissindex \
|
||
|
--get_centroids_from $indexdir/$centroidsname \
|
||
|
--searchthreads 16 \
|
||
|
--min_test_duration 3 \
|
||
|
--add_bs 1000000
|
||
|
|
||
|
done
|
||
|
done
|
||
|
|
||
|
done
|