*Fabian Groh, Lukas Ruppert, Patrick Wieschollek, Hendrik PA Lensch
Die ungefähre Suche nach dem nächsten Nachbarn (ANN) in hohen Dimensionen ist ein wesentlicher Bestandteil mehrerer Computer -Vision -Systeme und gewinnt im Deep -Lernen mit expliziten Speicherdarstellungen Bedeutung. Da PQT und Faiss begannen, die massive Parallelität von GPUs zu nutzen, sind GPU-basierte Implementierungen eine entscheidende Ressource für die heutigen hochmodernen Ann-Methoden. Während die meisten dieser Methoden schnellere Abfragen ermöglichen, wird weniger Wert darauf gelegt, die Konstruktion der zugrunde liegenden Indexstrukturen zu beschleunigen. In diesem Artikel schlagen wir eine neuartige Suchstruktur vor, die auf Graphen der nächsten Nachbarn und Informationsausbreitung in Diagramme basiert. Unsere Methode soll GPU -Architekturen nutzen, um das hierarchische Gebäude der Indexstruktur und zur Ausführung der Abfrage zu beschleunigen. Die empirische Bewertung zeigt, dass GGNN die hochmodernen GPU- und CPU-basierten Systeme in Bezug auf Build-Zeit, Genauigkeit und Suchgeschwindigkeit erheblich übertreffen.
Diese Arbeit wird derzeit überprüft. Wir haben den Code aktualisiert. Einige neue Ergebnisse sind unten aufgeführt.
# 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 25Anforderungen:
sudo apt install libgflags-dev )Eine Alternative zum nativen Build besteht darin, Nvidia-Docker zu verwenden. Befolgen Sie die Anweisungen unter https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#installing-docker-ce
Bereiten Sie das Docker -Bild vor
cd docker
make
cd ../Stellen Sie sicher, dass Sie rennen können
sudo docker run --gpus all cgtuebingen/ggnn:v1 nvidia-smiErstellen Sie nun den Code über
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