*Fabian Groh, Lukas Ruppert, Patrick Wieschollek, Hendrik PA Lensch
높은 차원에서 가장 가까운 이웃 (ANN) 검색은 여러 컴퓨터 비전 시스템의 필수 요소이며 명백한 메모리 표현으로 딥 러닝에서 중요성을 얻습니다. PQT와 FAISS는 GPU가 제공하는 대규모 병렬 처리를 활용하기 시작했기 때문에 GPU 기반 구현은 오늘날의 최첨단 ANN 방법에 중요한 리소스입니다. 이러한 방법의 대부분은 더 빠른 쿼리를 허용하지만, 기본 색인 구조의 구성을 가속화하는 데 강조가 적습니다. 이 논문에서는 가장 가까운 이웃 그래프 및 그래프의 정보 전파를 기반으로 새로운 검색 구조를 제안합니다. 우리의 방법은 인덱스 구조의 계층 구조를 가속화하고 쿼리를 수행하기 위해 GPU 아키텍처를 활용하도록 설계되었습니다. 경험적 평가에 따르면 GGNN은 빌드 타임, 정확도 및 검색 속도 측면에서 최첨단 GPU 및 CPU 기반 시스템을 크게 능가합니다.
이 작업은 현재 검토 중입니다. 코드를 업데이트했습니다. 몇 가지 새로운 결과가 아래에 나와 있습니다.
# 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