*Фабиан Гро, Лукас Рупперт, Патрик Висшоллек, Хендрик П.А.
Приблизительный поиск ближайшего соседа (ANN) в высоких измерениях является неотъемлемой частью нескольких систем компьютерного зрения и приобретает значение в глубоком обучении с явными представлениями памяти. Поскольку PQT и Faiss начали использовать массовый параллелизм, предлагаемый графическими процессорами, реализации на основе графических процессоров являются важным ресурсом для современных современных методов ANN. В то время как большинство из этих методов допускают более быстрые вопросы, меньше внимания уделяется ускорению построения основных индексных конструкций. В этой статье мы предлагаем новую структуру поиска, основанную на графиках ближайших соседей и распространении информации на графиках. Наш метод предназначен для использования архитектур графических процессоров для ускорения иерархического строительства структуры индекса и для выполнения запроса. Эмпирическая оценка показывает, что GGNN значительно превосходит современные системы на основе графических и ЦП с точки зрения времени сборки, точности и скорости поиска.
Эта работа в настоящее время находится в рассмотрении. Мы обновили код. Некоторые новые результаты показаны ниже. 
# Get the repository and dependencies
git clone --recursive https://github.com/cgtuebingen/ggnn.git
cd ggnn
# get the SIFT1M data
cd data
./get_sift1m
cd ..
# Build the demo
mkdir build_local
cd build_local
cmake ..
make
# Example for SIFT1M on GPU 0:
./sift1m_multi --base_filename ../data/sift/sift_base.fvecs
--query_filename ../data/sift/sift_query.fvecs
--groundtruth_filename ../data/sift/sift_groundtruth.ivecs
--gpu_ids= " 0 "
# Example usage with 2 GPUs and 4 shards in total (4x250k = 1M):
./sift1m_multi --base_filename ../data/sift/sift_base.fvecs
--query_filename ../data/sift/sift_query.fvecs
--groundtruth_filename ../data/sift/sift_groundtruth.ivecs
--gpu_ids= " 0 1 "
--factor 10000
--base 100
--shard 25Требования:
sudo apt install libgflags-dev )Альтернативой нативной сборке является использование NVIDIA-Docker. Следуйте инструкциям на https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#installing-docker-ce
Подготовьте изображение Docker
cd docker
make
cd ../Убедитесь, что вы можете бежать
sudo docker run --gpus all cgtuebingen/ggnn:v1 nvidia-smiТеперь создайте код через
user@host $ sudo docker run --rm -it --user " $( id -u ) : $( id -g ) " -v ${PWD} :/ggnn:rw --gpus all cgtuebingen/ggnn:v1 bash
user@container $ ./build.sh
cd build_docker
make