NVIDIA Merlin과 Milvus를 활용한 추천 워크플로의 효율적인 벡터 유사도 검색
이 게시물은 NVIDIA Merlin의 Medium 채널에 처음 게시되었으며, 허가를 받아 여기에서 편집 및 재게시되었습니다. NVIDIA의 Burcin Bozkaya와 William Hicks, 그리고 Zilliz의 Filip Haltmayer와 Li Liu가 공동으로 작성했습니다.
소개
최신 추천 시스템(Recsys)은 관련 아이템의 검색, 필터링, 랭킹, 스코어링을 위한 데이터 수집, 데이터 전처리, 모델 학습, 하이퍼파라미터 튜닝의 여러 단계를 포함하는 학습/추론 파이프라인으로 구성됩니다. 추천 시스템 파이프라인의 핵심 구성 요소는 사용자에게 가장 관련성이 높은 항목을 검색하거나 발견하는 것이며, 특히 대규모 아이템 카탈로그가 있는 경우 더욱 중요합니다. 이 단계는 일반적으로 사용자와 제품/서비스 간의 상호작용을 학습하는 딥러닝 모델에서 생성된 제품 및 사용자 속성의 저차원 벡터 표현(즉, 임베딩)으로 구성된 인덱싱된 데이터베이스에 대해 근사 최근접 이웃(ANN) 검색을 수행하는 것을 포함합니다.
NVIDIA Merlin은 어떤 규모에서도 추천을 수행하기 위한 엔드투엔드 모델 학습용으로 개발된 오픈 소스 프레임워크로, 효율적인 벡터 데이터베이스 인덱스 및 검색 프레임워크와 통합됩니다. 최근 많은 주목을 받은 이러한 프레임워크 중 하나는 Zilliz가 만든 오픈 소스 벡터 데이터베이스인 Milvus입니다. Milvus는 빠른 인덱스 및 쿼리 기능을 제공합니다. Milvus는 최근 AI 워크플로를 유지하기 위해 NVIDIA GPU를 사용하는 GPU 가속 지원을 추가했습니다. GPU 가속 지원은 좋은 소식입니다. 가속화된 벡터 검색 라이브러리를 통해 빠른 동시 쿼리가 가능해져, 개발자들이 많은 동시 요청을 예상하는 오늘날의 추천 시스템에서 지연 시간 요구사항에 긍정적인 영향을 미치기 때문입니다. Milvus는 500만 건 이상의 docker pull, GitHub에서 약 23k개의 스타(2023년 9월 기준), 5,000개 이상의 엔터프라이즈 고객을 보유하고 있으며, 많은 애플리케이션의 핵심 구성 요소입니다(사용 사례 참조).
이 블로그에서는 Milvus가 학습 및 추론 시점에 Merlin Recsys 프레임워크와 어떻게 작동하는지 보여줍니다. Milvus가 매우 효율적인 top-k 벡터 임베딩 검색을 통해 아이템 검색 단계에서 Merlin을 어떻게 보완하는지, 그리고 추론 시점에 NVIDIA Triton Inference Server(TIS)와 함께 어떻게 사용될 수 있는지 보여줍니다(그림 1 참조). 벤치마크 결과에 따르면 Merlin Models가 생성한 벡터 임베딩과 함께 NVIDIA RAFT를 사용하는 GPU 가속 Milvus에서 37배에서 91배에 이르는 인상적인 속도 향상을 보였습니다. Merlin-Milvus 통합과 자세한 벤치마크 결과를 보여주는 데 사용한 코드와, 벤치마크 연구를 용이하게 한 라이브러리는 여기에서 확인할 수 있습니다.
그림 1. 검색 단계에 기여하는 Milvus 프레임워크를 포함한 다단계 추천 시스템. 원본 다단계 그림의 출처: 이 블로그 게시물.
추천 시스템이 직면한 과제
추천 시스템의 다단계 특성과 통합된 다양한 구성 요소 및 라이브러리의 가용성을 고려할 때, 중요한 과제는 모든 구성 요소를 엔드투엔드 파이프라인에 매끄럽게 통합하는 것입니다. 우리는 예제 노트북에서 통합이 더 적은 노력으로 수행될 수 있음을 보여주고자 합니다.
추천 시스템 워크플로의 또 다른 과제는 특정 파이프라인 부분을 가속화하는 것입니다. GPU는 대규모 신경망 학습에서 큰 역할을 하는 것으로 알려져 있지만, 벡터 데이터베이스와 ANN 검색에는 비교적 최근에야 추가되었습니다. 전자상거래 제품 인벤토리나 스트리밍 미디어 데이터베이스의 규모가 커지고 이러한 서비스를 사용하는 사용자 수가 증가함에 따라, CPU는 성능이 우수한 Recsys 워크플로에서 수백만 명의 사용자에게 서비스를 제공하는 데 필요한 성능을 제공해야 합니다. 이 과제를 해결하기 위해 다른 파이프라인 부분에서의 GPU 가속이 필요해졌습니다. 이 블로그의 솔루션은 GPU를 사용할 때 ANN 검색이 효율적임을 보여줌으로써 이 과제를 해결합니다.
솔루션을 위한 기술 스택
먼저 우리의 작업을 수행하는 데 필요한 몇 가지 기본 사항을 검토하는 것부터 시작하겠습니다.
NVIDIA Merlin: NVIDIA GPU에서 추천 시스템을 가속화하는 고수준 API를 갖춘 오픈 소스 라이브러리입니다.
NVTabular: 입력 테이블 형식 데이터의 전처리 및 특징 엔지니어링을 위한 것입니다.
Merlin Models: 딥러닝 모델을 학습하고, 이 경우 사용자 상호작용 데이터로부터 사용자 및 아이템 임베딩 벡터를 학습하기 위한 것입니다.
Merlin Systems: TensorFlow 기반 추천 모델을 다른 요소(예: 특징 저장소, Milvus를 사용한 ANN 검색)와 결합하여 TIS로 제공하기 위한 것입니다.
Triton Inference Server: 사용자 특징 벡터가 전달되고 제품 추천이 생성되는 추론 단계를 위한 것입니다.
컨테이너화: 위의 모든 것은 NVIDIA가 NGC catalog에서 제공하는 컨테이너를 통해 사용할 수 있습니다. 우리는 Merlin TensorFlow 23.06 container를 사용했습니다.
Milvus 2.3: GPU 가속 벡터 인덱싱 및 쿼리를 수행하기 위한 것입니다.
Milvus 2.2.11: 위와 동일하지만 CPU에서 수행하기 위한 것입니다.
Pymilvus SDK: Milvus 서버에 연결하고, 벡터 데이터베이스 인덱스를 생성하며, Python 인터페이스를 통해 쿼리를 실행하기 위한 것입니다.
Feast: 엔드투엔드 RecSys 파이프라인의 일부로 (오픈 소스) 특징 저장소에 사용자 및 아이템 속성을 저장하고 검색하기 위한 것입니다.
여러 기반 라이브러리와 프레임워크도 내부적으로 사용됩니다. 예를 들어, Merlin은 cuDF와 Dask 같은 다른 NVIDIA 라이브러리에 의존하며, 둘 다 RAPIDS cuDF에서 사용할 수 있습니다. 마찬가지로, Milvus는 GPU 가속의 프리미티브를 위해 NVIDIA RAFT에 의존하고, 검색을 위해 HNSW 및 FAISS와 같은 수정된 라이브러리에 의존합니다.
벡터 데이터베이스와 Milvus 이해하기
근사 최근접 이웃(ANN)은 관계형 데이터베이스가 처리할 수 없는 기능입니다. 관계형 DB는 미리 정의된 구조와 직접 비교 가능한 값을 가진 표 형식 데이터를 처리하도록 설계되었습니다. 관계형 데이터베이스 인덱스는 이를 기반으로 데이터를 비교하고, 각 값이 다른 값보다 작은지 큰지를 알 수 있다는 점을 활용하는 구조를 생성합니다. 임베딩 벡터는 이러한 방식으로 서로 직접 비교할 수 없는데, 벡터의 각 값이 무엇을 나타내는지 알아야 하기 때문입니다. 한 벡터가 다른 벡터보다 반드시 작다고 말할 수 없습니다. 우리가 할 수 있는 유일한 일은 두 벡터 간의 거리를 계산하는 것입니다. 두 벡터 간의 거리가 작다면, 그들이 나타내는 특징이 유사하다고 가정할 수 있고, 거리가 크다면 그들이 나타내는 데이터가 더 다르다고 가정할 수 있습니다. 그러나 이러한 효율적인 인덱스에는 비용이 따릅니다. 두 벡터 간의 거리를 계산하는 것은 계산 비용이 많이 들며, 벡터 인덱스는 쉽게 적응할 수 없고 때로는 수정할 수 없습니다. 이 두 가지 한계로 인해 관계형 데이터베이스에 이러한 인덱스를 통합하는 것은 더 복잡하며, 이것이 목적에 맞게 구축된 벡터 데이터베이스가 필요한 이유입니다.
Milvus는 관계형 데이터베이스가 벡터에서 직면하는 문제를 해결하기 위해 만들어졌으며, 이러한 임베딩 벡터와 그 인덱스를 대규모로 처리하도록 처음부터 설계되었습니다. 클라우드 네이티브라는 요건을 충족하기 위해 Milvus는 컴퓨팅과 스토리지, 그리고 쿼리, 데이터 랭글링, 인덱싱이라는 서로 다른 컴퓨팅 작업을 분리합니다. 사용자는 데이터 삽입이 많은 경우든 검색이 많은 경우든 다른 사용 사례를 처리하기 위해 각 데이터베이스 부분을 확장할 수 있습니다. 삽입 요청이 대량으로 유입되면 사용자는 수집을 처리하기 위해 인덱스 노드를 일시적으로 수평 및 수직으로 확장할 수 있습니다. 마찬가지로 데이터가 수집되고 있지는 않지만 검색이 많은 경우, 사용자는 인덱스 노드를 줄이고 대신 더 많은 처리량을 위해 쿼리 노드를 확장할 수 있습니다. 이 시스템 설계(그림 2 참조)는 우리가 병렬 컴퓨팅 사고방식으로 생각하도록 요구했으며, 그 결과 추가 최적화를 위한 많은 가능성이 열린 컴퓨팅 최적화 시스템이 되었습니다.
그림 2. Milvus 시스템 설계
Milvus는 또한 사용자에게 시스템을 최대한 사용자 정의할 수 있도록 많은 최첨단 인덱싱 라이브러리를 사용합니다. CRUD 작업, 스트리밍 데이터, 필터링을 처리할 수 있는 기능을 추가하여 이를 개선합니다. 나중에 이러한 인덱스가 어떻게 다른지, 각각의 장단점이 무엇인지 논의하겠습니다.
예시 솔루션: Milvus와 Merlin의 통합
여기에서 제시하는 예시 솔루션은 아이템 검색 단계(k개의 가장 관련성 높은 아이템이 ANN 검색을 통해 검색되는 시점)에서 Milvus와 Merlin의 통합을 보여줍니다. 아래에 설명된 RecSys challenge의 실제 데이터셋을 사용합니다. 사용자와 아이템에 대한 벡터 임베딩을 학습하는 Two-Tower 딥러닝 모델을 훈련합니다. 이 섹션은 또한 수집하는 메트릭과 사용하는 매개변수 범위를 포함하여 벤치마킹 작업의 청사진을 제공합니다.
우리의 접근 방식은 다음을 포함합니다.
데이터 수집 및 전처리
Two-Tower 딥러닝 모델 훈련
Milvus 인덱스 구축
Milvus 유사도 검색
각 단계를 간략히 설명하고 자세한 내용은 notebooks를 참조하시기 바랍니다.
데이터셋
YOOCHOOSE GmbH는 RecSys 2015 challenge를 위한 이 통합 및 벤치마크 연구에서 우리가 사용하는 데이터셋을 제공하며, Kaggle에서 이용할 수 있습니다. 이 데이터셋에는 yoochoose-clicks.dat 파일에서 제공되는 세션 ID, 타임스탬프, 클릭/구매와 관련된 아이템 ID, 아이템 카테고리와 같은 속성을 가진 유럽 온라인 리테일러의 사용자 클릭/구매 이벤트가 포함되어 있습니다. 세션은 독립적이며 재방문 사용자에 대한 힌트가 없으므로, 각 세션을 고유한 사용자에 속하는 것으로 간주합니다. 이 데이터셋에는 9,249,729개의 고유 세션(사용자)과 52,739개의 고유 아이템이 있습니다.
데이터 수집 및 전처리
데이터 전처리에 사용하는 도구는 Merlin의 GPU 가속, 고확장성 피처 엔지니어링 및 전처리 컴포넌트인 NVTabular입니다. NVTabular를 사용하여 데이터를 GPU 메모리로 읽어들이고, 필요에 따라 피처를 재배열하며, parquet 파일로 내보내고, 학습을 위한 train-validation 분할을 생성합니다. 그 결과 학습에 사용할 7,305,761명의 고유 사용자와 49,008개의 고유 아이템이 생성됩니다. 또한 각 열과 해당 값을 정수 값으로 범주화합니다. 이제 데이터셋은 Two-Tower 모델로 학습할 준비가 되었습니다.
모델 학습
Two-Tower 딥러닝 모델을 사용하여 사용자 및 아이템 임베딩을 학습하고 생성하며, 이는 이후 벡터 인덱싱과 쿼리에 사용됩니다. 모델 학습 후에는 학습된 사용자 및 아이템 임베딩을 추출할 수 있습니다.
다음 두 단계는 선택 사항입니다. 추천을 위해 검색된 아이템의 순위를 매기도록 학습된 DLRM 모델과 사용자 및 아이템 피처를 저장하고 검색하는 데 사용되는 피처 스토어(이 경우 Feast)입니다. 다단계 워크플로의 완전성을 위해 이를 포함합니다.
마지막으로, 사용자 및 아이템 임베딩을 parquet 파일로 내보내며, 이는 나중에 Milvus 벡터 인덱스를 생성하기 위해 다시 로드할 수 있습니다.
Milvus 인덱스 구축 및 쿼리
Milvus는 추론 머신에서 실행되는 “server”를 통해 벡터 인덱싱과 유사도 검색을 용이하게 합니다. notebook #2에서는 Milvus server와 Pymilvus를 pip로 설치한 다음, 기본 수신 포트로 server를 시작하여 이를 설정합니다. 다음으로, 각각 setup_milvus 및 query_milvus 함수를 사용하여 간단한 인덱스(IVF_FLAT)를 구축하고 이에 대해 쿼리하는 방법을 보여줍니다.
벤치마킹
Milvus와 같은 빠르고 효율적인 벡터 인덱싱/검색 라이브러리를 사용하는 사례를 보여주기 위해 두 가지 벤치마크를 설계했습니다.
우리가 생성한 두 세트의 임베딩으로 벡터 인덱스를 구축하는 데 Milvus를 사용합니다: 1) 730만 명의 고유 사용자에 대한 사용자 임베딩, 85% train set(인덱싱용)과 15% test set(쿼리용)으로 분할, 그리고 2) 49K개 제품에 대한 아이템 임베딩(50–50 train-test 분할). 이 벤치마크는 각 벡터 데이터셋에 대해 독립적으로 수행되며, 결과는 별도로 보고됩니다.
49K개 아이템 임베딩 데이터셋에 대한 벡터 인덱스를 구축하고 유사도 검색을 위해 이 인덱스에 대해 730만 명의 고유 사용자를 쿼리하는 데 Milvus를 사용합니다.
이 벤치마크에서는 다양한 매개변수 조합과 함께 GPU 및 CPU에서 실행되는 IVFPQ 및 HNSW 인덱싱 알고리즘을 사용했습니다. 자세한 내용은 GitHub 페이지에서 확인할 수 있습니다.
검색 품질-처리량 트레이드오프는 특히 프로덕션 환경에서 중요한 성능 고려 사항입니다. Milvus는 주어진 사용 사례에서 이 트레이드오프를 탐색하여 정답 데이터(ground truth)를 기준으로 더 나은 검색 결과를 얻을 수 있도록 인덱싱 파라미터에 대한 완전한 제어를 허용합니다. 이는 처리량 감소 또는 초당 쿼리 수(QPS) 형태의 계산 비용 증가를 의미할 수 있습니다. 우리는 recall 메트릭으로 ANN 검색의 품질을 측정하고, 이 트레이드오프를 보여주는 QPS-recall 곡선을 제공합니다. 그러면 비즈니스 사례의 컴퓨팅 리소스 또는 지연 시간/처리량 요구 사항을 고려하여 허용 가능한 검색 품질 수준을 결정할 수 있습니다.
또한, 벤치마크에서 사용한 쿼리 배치 크기(nq)에 주목하세요. 이는 여러 동시 요청이 추론으로 전송되는 워크플로(예: 오프라인 추천이 요청되어 이메일 수신자 목록으로 전송되거나, 도착하는 동시 요청을 모아 한 번에 처리하여 생성되는 온라인 추천)에서 유용합니다. 사용 사례에 따라 TIS는 이러한 요청을 배치로 처리하는 데도 도움이 될 수 있습니다.
결과
이제 Milvus가 구현한 HNSW(CPU 전용) 및 IVF_PQ(CPU 및 GPU) 인덱스 유형을 사용하여 CPU와 GPU 모두에서 수행한 세 가지 벤치마크 세트의 결과를 보고합니다.
아이템 vs. 아이템 벡터 유사도 검색
이 가장 작은 데이터셋에서는 주어진 파라미터 조합에 대한 각 실행이 아이템 벡터의 50%를 쿼리 벡터로 사용하고, 나머지에서 상위 100개의 유사 벡터를 쿼리합니다. HNSW와 IVF_PQ는 테스트한 파라미터 설정에서 각각 0.958–1.0 및 0.665–0.997 범위의 높은 recall을 생성합니다. 이 결과는 HNSW가 recall 측면에서 더 우수하지만, 작은 nlist 설정의 IVF_PQ도 매우 유사한 수준의 recall을 생성한다는 것을 시사합니다. 또한 recall 값은 인덱싱 및 쿼리 파라미터에 따라 크게 달라질 수 있다는 점도 유의해야 합니다. 우리가 보고하는 값은 일반적인 파라미터 범위에 대한 예비 실험 후 선택된 일부 하위 집합으로 더 좁혀 얻은 것입니다.
주어진 파라미터 조합에 대해 HNSW로 CPU에서 모든 쿼리를 실행하는 총 시간은 5.22초에서 5.33초 사이(m이 커질수록 더 빠르고, ef에 따라서는 비교적 변하지 않음)이며, IVF_PQ의 경우 13.67초에서 14.67초 사이(nlist와 nprobe가 커질수록 더 느림)입니다. Figure 3에서 볼 수 있듯이 GPU 가속은 눈에 띄는 효과가 있습니다.
Figure 3은 IVF_PQ를 사용하여 이 작은 데이터셋으로 CPU와 GPU에서 완료한 모든 실행에 대한 recall-throughput 트레이드오프를 보여줍니다. 테스트한 모든 파라미터 조합에서 GPU가 4배에서 15배의 속도 향상을 제공한다는 것을 확인했습니다(nprobe가 커질수록 속도 향상이 더 큼). 이는 각 파라미터 조합에 대해 GPU 실행의 QPS를 CPU 실행의 QPS로 나눈 비율을 계산하여 산출한 것입니다. 전반적으로 이 세트는 CPU 또는 GPU에 큰 부담을 주지 않으며, 아래에서 논의하듯 더 큰 데이터셋에서 추가 속도 향상의 가능성을 보여줍니다.
Figure 3. NVIDIA A100 GPU에서 실행되는 Milvus IVF_PQ 알고리즘의 GPU 속도 향상(아이템-아이템 유사도 검색)
사용자 vs. 사용자 벡터 유사도 검색
훨씬 더 큰 두 번째 데이터셋(730만 명의 사용자)에서는 벡터의 85%(~620만)를 “train”(인덱싱할 벡터 집합)으로 따로 두고, 나머지 15%(~110만)를 “test” 또는 쿼리 벡터 집합으로 설정했습니다. 이 경우 HNSW와 IVF_PQ는 각각 0.884–1.0 및 0.922–0.999의 recall 값으로 매우 뛰어난 성능을 보입니다. 그러나 특히 CPU에서 IVF_PQ를 사용할 때 계산 요구량이 훨씬 더 큽니다. CPU에서 모든 쿼리를 실행하는 총 시간은 HNSW의 경우 279.89초에서 295.56초, IVF_PQ의 경우 3082.67초에서 10932.33초 범위입니다. 이러한 쿼리 시간은 쿼리된 110만 개 벡터에 대한 누적 시간이라는 점에 유의하세요. 따라서 인덱스에 대한 단일 쿼리는 여전히 매우 빠르다고 말할 수 있습니다.
그러나 추론 서버가 수백만 개의 아이템 인벤토리에 대해 쿼리를 실행하기 위해 수천 건의 동시 요청을 예상한다면, CPU 기반 쿼리는 실행 가능하지 않을 수 있습니다.
A100 GPU는 그림 4에 표시된 것처럼 IVF_PQ를 사용한 처리량(QPS) 측면에서 모든 파라미터 조합 전반에 걸쳐 37배에서 91배(평균 76.1배)의 엄청난 속도 향상을 제공합니다. 이는 소규모 데이터셋에서 관찰한 결과와 일치하며, 수백만 개의 임베딩 벡터가 있는 Milvus를 사용할 때 GPU 성능이 상당히 잘 확장됨을 시사합니다.
그림 4. NVIDIA A100 GPU에서 실행되는 Milvus IVF_PQ 알고리즘의 GPU 속도 향상(사용자-사용자 유사도 검색)
다음의 상세한 그림 5는 IVF_PQ를 사용하여 CPU와 GPU에서 테스트한 모든 파라미터 조합에 대한 recall-QPS 트레이드오프를 보여줍니다. 이 차트의 각 포인트 세트(위쪽은 GPU, 아래쪽은 CPU)는 더 높은 recall을 달성하기 위해 벡터 인덱싱/쿼리 파라미터를 변경할 때 더 낮은 처리량을 감수해야 하는 트레이드오프를 나타냅니다. GPU의 경우 더 높은 recall 수준을 달성하려고 할 때 QPS가 상당히 손실된다는 점에 유의하세요.
그림 5. IVF_PQ를 사용하여 CPU와 GPU에서 테스트한 모든 파라미터 조합에 대한 recall-처리량 트레이드오프(사용자 vs. 사용자)
사용자 vs. 아이템 벡터 유사도 검색
마지막으로, 사용자 벡터를 아이템 벡터에 대해 쿼리하는 또 다른 현실적인 사용 사례를 고려합니다(위의 Notebook 01에서 시연한 것처럼). 이 경우 49K개의 아이템 벡터가 인덱싱되고, 7.3M개의 사용자 벡터 각각에 대해 가장 유사한 상위 100개 아이템을 쿼리합니다.
여기서 흥미로운 점이 나타납니다. 49K개 아이템의 인덱스를 대상으로 7.3M개를 1000개씩 배치로 쿼리하는 것은 HNSW와 IVF_PQ 모두에서 CPU로는 시간이 많이 걸리는 것으로 보입니다. GPU는 이 경우를 더 잘 처리하는 것 같습니다(그림 6 참조). nlist = 100일 때 CPU에서 IVF_PQ로 얻은 최고 정확도 수준은 평균 약 86분에 계산되지만, nprobe 값이 증가함에 따라 크게 달라집니다(nprobe = 5일 때 51분 vs. nprobe = 20일 때 128분). NVIDIA A100 GPU는 성능을 4배에서 17배까지 상당히 향상시킵니다(nprobe가 커질수록 더 높은 속도 향상). IVF_PQ 알고리즘은 양자화 기법을 통해 메모리 사용량도 줄이고, GPU 가속과 결합되어 계산적으로 실행 가능한 ANN 검색 솔루션을 제공한다는 점을 기억하세요.
그림 6. NVIDIA A100 GPU에서 실행되는 Milvus IVF_PQ 알고리즘의 GPU 속도 향상(사용자-아이템 유사도 검색)
그림 5와 유사하게, IVF_PQ로 테스트한 모든 파라미터 조합에 대한 recall-처리량 트레이드오프가 그림 7에 표시되어 있습니다. 여기서도 처리량 증가를 위해 ANN 검색에서 약간의 정확도를 포기해야 할 수 있음을 여전히 볼 수 있지만, 특히 GPU 실행의 경우 그 차이는 훨씬 덜 두드러집니다. 이는 높은 recall을 달성하면서도 GPU를 통해 비교적 일관되게 높은 수준의 계산 성능을 기대할 수 있음을 시사합니다.
그림 7. IVF_PQ를 사용하여 CPU와 GPU에서 테스트한 모든 파라미터 조합에 대한 recall-처리량 트레이드오프(사용자 vs. 아이템)
결론
여기까지 읽으셨다면 기꺼이 몇 가지 결론을 공유하겠습니다. 최신 Recsys의 복잡성과 다단계 특성으로 인해 모든 단계에서 성능과 효율성이 필요하다는 점을 상기시켜 드리고 싶습니다. 이 블로그가 RecSys 파이프라인에서 다음 두 가지 핵심 기능을 사용하는 것을 고려해야 할 설득력 있는 이유를 제공했기를 바랍니다.
NVIDIA Merlin의 Merlin Systems 라이브러리를 사용하면 효율적인 GPU 가속 벡터 검색 엔진인 Milvus를 쉽게 연결할 수 있습니다.
GPU를 사용하여 벡터 데이터베이스 인덱싱을 위한 계산과 RAPIDS RAFT와 같은 기술을 통한 ANN 검색을 가속화하세요.
이러한 결과는 제시된 Merlin-Milvus 통합이 학습 및 추론을 위한 다른 옵션들보다 성능이 매우 뛰어나고 훨씬 덜 복잡하다는 것을 시사합니다. 또한 두 프레임워크 모두 활발히 개발되고 있으며, Milvus의 새로운 GPU 가속 벡터 데이터베이스 인덱스와 같은 많은 새로운 기능이 매 릴리스마다 추가되고 있습니다. 벡터 유사도 검색이 컴퓨터 비전, 대규모 언어 모델링, 추천 시스템과 같은 다양한 워크플로에서 핵심 구성 요소라는 사실은 이러한 노력을 더욱 가치 있게 만듭니다.
마지막으로, 이 작업과 블로그 게시물을 만드는 데 기여해 주신 Zilliz/Milvus, Merlin, RAFT 팀의 모든 분들께 감사드립니다. 여러분이 recsys 또는 기타 워크플로에서 Merlin과 Milvus를 구현해 볼 기회가 있다면, 여러분의 소식을 듣기를 기대하겠습니다.
계속 읽기

Milvus 2.6.x Now Generally Available on Zilliz Cloud, Making Vector Search Faster, Smarter, and More Cost-Efficient for Production AI
Milvus 2.6.x is now GA on Zilliz Cloud, delivering faster vector search, smarter hybrid queries, and lower costs for production RAG and AI applications.

DeepSeek-OCR Explained: Optical Compression for Scalable Long-Context and RAG Systems
Discover how DeepSeek-OCR uses visual tokens and Contexts Optical Compression to boost long-context LLM efficiency and reshape RAG performance.

What is the K-Nearest Neighbors (KNN) Algorithm in Machine Learning?
KNN is a supervised machine learning technique and algorithm for classification and regression. This post is the ultimate guide to KNN.



