Building vector indexes remotely using GPUs
출처: 문서
본문
GPU를 사용한 원격 벡터 인덱스 구축
도입됨 3.0 {: .label .label-purple }
OpenSearch는 GPU 가속 원격 인덱스 구축 서비스를 사용하여 벡터 인덱스를 구축하는 것을 지원해요. GPU를 사용하면 인덱스 구축 시간이 크게 단축되고 비용이 절감돼요. 벤치마킹 결과는 이 블로그 게시물을 참조하세요.
지원되는 구성
원격 인덱스 구축 서비스는 hnsw 메서드를 사용하는 Faiss 인덱스를 지원해요. 이 인덱스의 경우 서비스는 다음 벡터 유형을 지원해요:
- 기본 32비트 부동 소수점(
FP32) 벡터 - 16비트 부동 소수점(
FP16), 바이트 및 이진 벡터, 모든 압축 수준(2x,8x,16x,32x)에서 half_float벡터,1x및16x압축 수준에서
bf16 인코더 유형을 사용하여 양자화된 벡터는 지원되지 않아요, 그리고 해당 인코더를 사용하는 인덱스는 항상 로컬에서 구축돼요.
전제 조건
원격 인덱스 구축 설정을 구성하기 전에 다음 전제 조건을 충족하는지 확인하세요. 동적 설정 업데이트에 대한 자세한 내용은 동적 설정을 참조하세요.
1단계: 원격 인덱스 구축 서비스 활성화
OpenSearch는 클러스터 수준 설정 knn.remote_index_build.enabled와 인덱스 수준 설정 index.knn.remote_index_build.enabled가 모두 true인 경우에만 원격으로 인덱스를 구축해요. 클러스터 수준 설정은 기본적으로 false이므로 클러스터에 대해 활성화하세요:
PUT /_cluster/settings
{
"persistent": {
"knn.remote_index_build.enabled": true
}
}
{% include copy-curl.html %}
인덱스 수준 설정은 기본적으로 true이므로 개별 인덱스를 원격 인덱스 구축에서 제외하려는 경우에만 false로 설정하세요. 두 설정에 대한 설명은 원격 인덱스 구축 설정을 참조하세요.
2단계: 원격 벡터 리포지토리 생성 및 등록
원격 벡터 리포지토리는 OpenSearch 클러스터와 원격 구축 서비스 간의 중간 객체 저장소 역할을 해요. 클러스터는 벡터와 문서 ID를 리포지토리에 업로드해요. 원격 구축 서비스는 데이터를 검색하고 외부에서 인덱스를 구축한 후 완료된 결과를 다시 리포지토리에 업로드해요.
리포지토리를 생성하고 등록하려면 리포지토리 등록의 단계를 따르세요. 그런 다음 knn.remote_index_build.repository 동적 설정을 등록된 리포지토리 이름으로 설정하세요.
원격 구축 서비스는 Amazon Simple Storage Service(Amazon S3) 리포지토리만 지원해요. {: .note}
3단계: 원격 벡터 인덱스 빌더 설정
k-NN 설정에서 knn.remote_index_build.service.endpoint를 실행 중인 원격 벡터 인덱스 빌더 인스턴스로 설정하여 원격 엔드포인트를 구성하세요. 원격 서비스 설정에 대한 지침은 사용자 가이드를 참조하세요.
원격 인덱스 구축 설정 구성
원격 인덱스 구축 서비스는 몇 가지 추가적인 선택적 설정을 지원해요. 나머지 원격 인덱스 구축 설정 구성에 대한 자세한 내용은 원격 인덱스 구축 설정을 참조하세요.
원격 인덱스 구축 서비스 사용
원격 인덱스 구축 서비스가 구성되면 다음 요구 사항을 충족하는 모든 세그먼트 플러시 및 병합 작업이 투명하게 GPU 구축 경로를 사용해요:
- 인덱스가 지원되는 구성 중 하나를 사용하고 있어요.
- 세그먼트 크기가
index.knn.remote_index_build.size.min보다 크고knn.remote_index_build.size.max보다 작아요.
k-NN Stats API를 호출하고 원격 인덱스 구축 통계를 검토하여 원격 인덱스 구축 작업을 모니터링할 수 있어요.