Erste Schritte mit GPU-betriebenem Milvus: 10-mal höhere Leistung freischalten
Sind Sie bereit, Ihre Vektorsuche mit GPU-Beschleunigung zu verbessern? Milvus 2.3, die neueste Version von Milvus, unterstützt offiziell NVIDIA A100 GPUs und bietet eine 10-fache Steigerung des Durchsatzes sowie erhebliche Reduzierungen der Latenz. Dieser Blogbeitrag wird die Beweggründe hinter dieser strategischen Innovation beleuchten und Ihnen zeigen, wie Sie mit der Milvus GPU-Version beginnen.
Warum führt Milvus GPU-Unterstützung ein?
Vektordatenbanken spielen eine entscheidende Rolle beim groß angelegten Datenabruf und bei der Ähnlichkeitssuche. Herkömmliche CPU-basierte Indexierungsstrategien haben jedoch Schwierigkeiten, mit der steigenden Nachfrage nach hoher Leistung und niedriger Latenz Schritt zu halten, insbesondere mit dem Aufkommen von Large Language Models (LLMs) wie GPT-3. Das Milvus-Team erkannte die potenzielle Synergie zwischen Milvus und NVIDIA GPUs und beschloss, GPU-Unterstützung in Milvus 2.3 einzuführen.
Dank der Unterstützung des NVIDIA-Teams (Besonderer Dank gilt @wphicks und @cjnolet von NVIDIA für ihre wertvollen Beiträge zum RAFT-Code) ist GPU-Unterstützung in Milvus Realität geworden, wodurch es möglich ist, riesige Datensätze schnell und effizient zu durchsuchen und die KI-Landschaft zu erweitern.
Erste Schritte mit der Milvus GPU-Version
Tauchen wir in die Schritte ein, um Ihre Reise mit der Milvus GPU-Version zu starten.
CUDA-Treiber installieren
Stellen Sie zuallererst sicher, dass Ihr Host-Rechner Ihre NVIDIA GPU erkennt. Sie können dies überprüfen, indem Sie den folgenden Befehl ausführen:
lspci
Sie können loslegen, wenn Sie das Feld "NVIDIA" in der Geräteausgabe sehen. Unten ist das Ergebnis meines Geräts, das eine NVIDIA T4-Grafikkarte erkennt.
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
Installieren Sie als Nächstes die erforderlichen CUDA-Treiber. Den passenden Treiber für Ihr System finden Sie auf der NVIDIA-Website.
Wenn Sie beispielsweise das Betriebssystem (OS) Ubuntu Linux 20.04 verwenden, können Sie den Treiber herunterladen und installieren, indem Sie die folgenden Befehle ausführen:
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
Hinweis:
Sie können den CUDA-Installationsschritt überspringen, wenn Ihr Host-Rechner keine CUDA-Treiber benötigt.
Die erforderliche Mindesttreiberversion hängt von Ihrem GPU-Typ ab:
Professionelle GPUs der NVIDIA Tesla-Serie: >=450.80.02
Gaming-GPUs: >=520.61.05
Nach der Installation des Treibers müssen Sie das System neu starten, damit er wirksam wird. Sobald der Neustart abgeschlossen ist, können Sie fortfahren, indem Sie den folgenden Befehl eingeben:
nvidia-smi
Hinweis: Das Milvus GPU-Image unterstützt NVIDIA-Grafikkarten mit Compute Capability 6.1, 7.0, 7.5 und 8.0.
Um die Compute Capability Ihrer GPU zu erfahren, besuchen Sie NVIDIA GPU Compute Capability.
Anweisungen zur Installation des NVIDIA Container Toolkit finden Sie in der NVIDIA-Dokumentation.
Milvus GPU-Konfiguration
Die Milvus-GPU-Version unterstützt standardmäßig nur einen einzelnen Milvus-Prozess und eine einzelne GPU. Sie können mehrere Milvus-Prozesse oder Container ausführen und die Umgebungsvariable CUDA_VISIBLE_DEVICES setzen, um mehrere GPUs zu nutzen.
- In einem Container können Sie diese Umgebungsvariable mit
-esetzen:
sudo docker run --rm -e NVIDIA_VISIBLE_DEVICES=3 milvusdb/milvus:v2.3.0-gpu-beta
- Sie können diese Umgebungsvariable in Docker Compose mithilfe des Felds
device_idssetzen. Weitere Informationen finden Sie unter GPU-Zugriff mit der Docker Compose Documentation.
Hinweis:
Selbst wenn Sie mehrere Grafikkarten für einen einzelnen Milvus-Prozess oder Container konfigurieren, kann Milvus nur eine davon nutzen.
Sie können die Leistung durch Anpassen von Umgebungsvariablen wie
KNOWHERE_STREAMS_PER_GPU(für CUDA-Stream-Parallelität) undKNOWHERE_GPU_MEM_POOL_SIZE(für die Größe des GPU-Speicherpools) feinabstimmen.Wir empfehlen dringend, Ihre Umgebungsvariable anzupassen, wenn Sie zwei Milvus-Prozesse auf einer einzelnen Grafikkarte bereitstellen. Andernfalls kann es bei Milvus aufgrund von Speicherkonkurrenz zu Abstürzen kommen.
Milvus-GPU-Version lokal erstellen
Bevor Sie Milvus lokal erstellen, stellen Sie sicher, dass Sie die erforderlichen Abhängigkeiten installiert haben.
- CUDA Toolkit
sudo apt install --no-install-recommends cuda-toolkit
- Python 3, pip, libopenblas-dev, libtbb-dev und pkg-config:
sudo apt install python3-pip libopenblas-dev libtbb-dev pkg-config
- Conan, ein C/C++-Paketmanager:
pip3 install conan==1.59.0 --userexpoprt PATH=$PATH:~/.local/bin
CMake (>=3.23): Weitere Details finden Sie im Kitware APT Repository.
Golang: Weitere Details finden Sie in der Go documentation.
Nachdem Sie alle erforderlichen Tools installiert haben, erstellen Sie die Milvus-GPU-Version mit dem folgenden Befehl:
make milvus-gpu
Milvus ausführen
Starten Sie Milvus im Standalone-Modus, indem Sie den folgenden Befehl ausführen:
cd binsudo ./milvus run standalone
Wenn Sie Containerisierung bevorzugen, können Sie die bereitgestellte Datei docker-compose.yml für die Bereitstellung verwenden.
docker-compose up -d
Fazit
Die Einführung der GPU-Unterstützung in Milvus 2.3 eröffnet spannende Möglichkeiten zur Beschleunigung der Leistung von Vektordatenbanken. Mit NVIDIA A100 GPUs, die Ihnen zur Verfügung stehen, können Sie bemerkenswerte Verbesserungen sowohl beim Durchsatz als auch bei der Latenz erzielen, was es zu einer überzeugenden Wahl für datenintensive Anwendungen und KI-Workloads macht.
Weiterlesen

Announcing VDBBench 1.0: Open-Source VectorDB Benchmarking with Your Real-World Production Workloads
Discover VDBBench 1.0, an open-source tool for benchmarking vector databases with real-world production data, streaming ingestion, and concurrent workloads.

Announcing the General Availability of Zilliz Cloud BYOC on Google Cloud Platform
Zilliz Cloud BYOC on GCP offers enterprise vector search with full data sovereignty and seamless integration.

AI Agents Are Quietly Transforming E-Commerce — Here’s How
Discover how AI agents transform e-commerce with autonomous decision-making, enhanced product discovery, and vector search capabilities for today's retailers.



