GPU 기반 Milvus 시작하기: 10배 더 높은 성능 활용하기

Sep 29, 20234 min read

벡터 검색을 GPU 가속으로 향상시킬 준비가 되셨나요? Milvus의 최신 릴리스인 Milvus 2.3은 NVIDIA A100 GPU를 공식 지원하여 처리량을 10배 증가시키고 지연 시간을 크게 줄입니다. 이 블로그 게시물에서는 이러한 전략적 혁신의 동기를 자세히 살펴보고 Milvus GPU 버전을 시작하는 방법을 보여드립니다.

Milvus가 GPU 지원을 도입하는 이유는 무엇인가요?

벡터 데이터베이스는 대규모 데이터 검색 및 유사도 검색에서 중요한 역할을 합니다. 그러나 기존 CPU 기반 인덱싱 전략은 특히 GPT-3와 같은 대규모 언어 모델(LLM)의 부상으로 인해 고성능과 낮은 지연 시간에 대한 수요가 증가하는 상황을 따라잡는 데 어려움이 있습니다. Milvus와 NVIDIA GPU 간의 잠재적 시너지를 인식한 Milvus 팀은 Milvus 2.3에 GPU 지원을 도입하기로 결정했습니다.

NVIDIA 팀의 지원 덕분에(RAFT 코드에 귀중한 기여를 해주신 NVIDIA의 @wphicks와 @cjnolet에게 특별히 감사드립니다), Milvus의 GPU 지원이 현실이 되었으며, 대규모 데이터셋을 빠르고 효율적으로 검색하고 AI 환경을 확장할 수 있게 되었습니다.

Milvus GPU 버전 시작하기

Milvus GPU 버전으로 여정을 시작하는 단계를 살펴보겠습니다.

CUDA 드라이버 설치

무엇보다 먼저 호스트 머신이 NVIDIA GPU를 인식하는지 확인하세요. 다음 명령을 실행하여 이를 확인할 수 있습니다:

lspci

장치 출력에 "NVIDIA" 필드가 보이면 준비가 된 것입니다. 아래는 NVIDIA T4 그래픽 카드를 인식한 제 장치의 결과입니다.

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]00:01.3 Non-VGA unclassified device: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)00:03.0 VGA compatible controller: Amazon.com, Inc. Device 111100:04.0 Non-Volatile memory controller: Amazon.com, Inc. Device 806100:05.0 Ethernet controller: Amazon.com, Inc. Elastic Network Adapter (ENA)00:1e.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)00:1f.0 Non-Volatile memory controller: Amazon.com, Inc. NVMe SSD Controller 

다음으로, 필요한 CUDA 드라이버를 설치합니다. 시스템에 적합한 드라이버는 NVIDIA 웹사이트에서 찾을 수 있습니다.

예를 들어 Ubuntu Linux 20.04 운영 체제(OS)를 사용하는 경우, 다음 명령을 실행하여 드라이버를 다운로드하고 설치할 수 있습니다:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.debsudo dpkg -i cuda-keyring_1.1-1_all.debsudo apt-get update

참고:

  1. 호스트 머신에 CUDA 드라이버가 필요하지 않은 경우 CUDA 설치 단계를 건너뛸 수 있습니다.

  2. 필요한 최소 드라이버 버전은 GPU 유형에 따라 다릅니다:

  • NVIDIA Tesla 시리즈 전문가용 GPU: >=450.80.02

  • 게이밍 GPU: >=520.61.05

드라이버를 설치한 후에는 적용을 위해 시스템을 재시작해야 합니다. 재시작이 완료되면 다음 명령을 입력하여 진행할 수 있습니다:

nvidia-smi

참고: Milvus GPU 이미지는 Compute Capability 6.1, 7.0, 7.5 및 8.0을 갖춘 NVIDIA 그래픽 카드를 지원합니다.

Milvus GPU 구성

Milvus GPU 버전은 기본적으로 단일 Milvus 프로세스와 단일 GPU만 지원합니다. 여러 Milvus 프로세스 또는 컨테이너를 실행하고 CUDA_VISIBLE_DEVICES 환경 변수를 설정하여 여러 GPU를 활용할 수 있습니다.

  • 컨테이너에서는 -e를 사용하여 이 환경 변수를 설정할 수 있습니다:
sudo docker run --rm -e NVIDIA_VISIBLE_DEVICES=3 milvusdb/milvus:v2.3.0-gpu-beta
  • Docker Compose에서는 device_ids 필드를 사용하여 이 환경 변수를 설정할 수 있습니다. 자세한 내용은 Docker Compose Documentation의 GPU access를 참조하세요.

참고:

  1. 단일 Milvus 프로세스 또는 컨테이너에 여러 그래픽 카드를 구성하더라도 Milvus는 하나만 활용할 수 있습니다.

  2. KNOWHERE_STREAMS_PER_GPU(CUDA 스트림 동시성용) 및 KNOWHERE_GPU_MEM_POOL_SIZE(GPU 메모리 풀 크기용)와 같은 환경 변수를 조정하여 성능을 세부적으로 조정할 수 있습니다.

  3. 단일 그래픽 카드에 두 개의 Milvus 프로세스를 배포하는 경우 환경 변수를 조정할 것을 강력히 권장합니다. 그렇지 않으면 메모리 경쟁으로 인해 Milvus가 충돌할 수 있습니다.

Milvus GPU 버전 로컬 빌드

Milvus를 로컬에서 빌드하기 전에 필요한 종속성을 설치했는지 확인하세요.

  • CUDA Toolkit
sudo apt install --no-install-recommends cuda-toolkit
  • Python 3, pip, libopenblas-dev, libtbb-dev 및 pkg-config:
sudo apt install python3-pip libopenblas-dev libtbb-dev pkg-config
  • C/C++ 패키지 관리자인 Conan:
pip3 install conan==1.59.0 --userexpoprt PATH=$PATH:~/.local/bin

필요한 모든 도구를 설치한 후 다음 명령을 사용하여 Milvus GPU 버전을 빌드하세요:

make milvus-gpu

Milvus 실행

다음 명령을 실행하여 standalone 모드로 Milvus를 시작하세요:

cd binsudo ./milvus run standalone

컨테이너화를 선호하는 경우 제공된 docker-compose.yml 파일을 사용하여 배포할 수 있습니다.

docker-compose up -d

결론

Milvus 2.3에 GPU 지원이 도입되면서 벡터 데이터베이스 성능을 가속화할 수 있는 흥미로운 가능성이 열렸습니다. NVIDIA A100 GPU를 활용하면 처리량과 지연 시간 모두에서 놀라운 향상을 달성할 수 있어, 데이터 집약적 애플리케이션과 AI 워크로드에 매력적인 선택이 됩니다.

Jul 09, 2026에 업데이트됨