#Backend

CPU 뼛속까지 써먹고, Milvus 사이징 기준을 만들기까지

CPU 뼛속까지 써먹고, Milvus 사이징 기준을 만들기까지
01

Summary

CPU 연산 한계까지 끌어올려 Milvus 검색 처리량 41% 향상시킨 토스증권의 기술 노하우

NUMA 바인딩부터 인덱스 최적화까지, 온프레미스 Vector DB 인프라 사이징 및 성능 최적화 실전 가이드

토스증권 Data Infra 팀이 대규모 벡터 검색 서비스를 위해 Milvus를 도입하면서 진행한 하드웨어 사이징 및 성능 최적화 경험을 다룹니다. 검색 품질(Recall)을 손상시키지 않고 CPU 연산 및 NUMA 메모리 구조를 최적화하여 처리량을 41% 높인 실전 튜닝 과정을 상세히 설명합니다.

  • 01검색 품질(recall@10 >= 0.95)을 보장하는 명확한 벤치마크 평가 기준 수립
  • 02Milvus 분산 아키텍처 및 검색 담당 QueryNode 자원 사용 특성 집중 분석
  • 03CPU 코어 바인딩 및 NUMA 노드 최적 배치를 통한 원격 메모리 접근 병목 해결로 QPS 41% 증대
  • 04HNSW 및 HNSW_SQ8 등 인덱스 타입별 메모리 점유율과 검색 성능 간의 트레이드오프 검증

RECOMMENDATION

Vector DB 도입을 검토 중이거나, 대규모 벡터 검색 환경에서 서버 자원 산정 및 CPU/메모리 성능 병목으로 고민하는 인프라 및 백엔드 엔지니어에게 일독을 권합니다.

The Problem

토스증권에서 벡터 검색 워크로드를 위한 Milvus 인프라 구축 시, 임베딩 모델 차원, 검색 품질 목표, 데이터 갱신 빈도 등 서비스별 다양한 조건에 맞춘 적정 물리 서버 자원(CPU/메모리) 규모 산정 기준이 필요했습니다.

The Solution

LAION-100M 데이터셋을 활용하여 다양한 인덱스(HNSW, SQ8 등)의 성능을 비교하고, 검색을 담당하는 QueryNode의 CPU thread affinity 및 NUMA(Non-Uniform Memory Access) 메모리 배치를 최적화하였습니다.

The Result

recall@10 0.95 이상의 검색 품질 기준을 유지하면서, CPU 및 메모리 배치 개선만으로 동일 서버 자원 내 검색 처리량(QPS)을 41% 향상시키고 정밀한 인프라 사이징 기준을 수립했습니다.

Trade-off

SQ8 양자화 적용 시 메모리 사용량은 대폭 절감되나 오차로 인한 결과 정확도 저하 가능성이 존재하며, CPU 및 NUMA 고정 배치는 서버 하드웨어 구조에 의존적인 세밀한 설정 관리가 요구됩니다.

03

Key Concepts

Concept · 01

Vector Search & ANN

임베딩 모델이 생성한 고차원 벡터 간의 거리를 측정하여 유사한 의미를 지닌 데이터를 탐색하는 기술입니다. 데이터 수량이 많을 때는 근사 최근접 이웃(ANN) 알고리즘을 사용해 탐색 범위를 줄임으로써 정밀도를 유지하며 빠르게 결과를 반환합니다.

  • 토스증권은 recall@10 0.95 이상을 만족하는 조건에서 QPS 및 지연시간을 평가함
Concept · 02

HNSW & SQ8

HNSW는 계층적 그래프 구조로 벡터를 연결해 빠른 ANN 검색을 가능하게 하는 대표적인 인덱스 알고리즘입니다. SQ8(Scalar Quantization)은 32비트 부동소수점 벡터 데이터를 8비트로 압축하여 메모리 점유율을 대폭 낮춰주는 양자화 기법입니다.

  • 대용량 1억 건 벡터 인덱싱 시 메모리 부담을 줄이기 위해 HNSW와 HNSW_SQ8 성능 및 메모리 점유율을 비교함
Concept · 03

NUMA & Thread Affinity

NUMA는 프로세서마다 독립된 메모리 버스를 할당하는 멀티소켓 CPU 아키텍처입니다. Thread Affinity(CPU 바인딩)는 프로세스나 쓰레드를 특정 CPU 코어에 고정하여 L1/L2/L3 캐시 히트율을 극대화하고 소켓 간 원격 메모리 접근으로 인한 지연을 최소화합니다.

  • Milvus QueryNode의 연산 프로세스를 특정 CPU 코어 및 NUMA 노드에 바인딩하여 41%의 QPS 향상을 달성함