Premiers pas avec Milvus accéléré par GPU : débloquer des performances 10 fois supérieures
Êtes-vous prêt à améliorer votre recherche vectorielle grâce à l’accélération GPU ? Milvus 2.3, la dernière version de Milvus, prend officiellement en charge les GPU NVIDIA A100, offrant une augmentation de 10x du débit et des réductions significatives de la latence. Cet article de blog examinera les motivations derrière cette innovation stratégique et vous montrera comment démarrer avec la version GPU de Milvus.
Pourquoi Milvus introduit-il la prise en charge des GPU ?
Les bases de données vectorielles jouent un rôle crucial dans la récupération de données à grande échelle et la recherche par similarité. Cependant, les stratégies d’indexation traditionnelles basées sur le CPU peinent à suivre la demande croissante de hautes performances et de faible latence, en particulier avec l’essor des grands modèles de langage (LLM) comme GPT-3. Reconnaissant la synergie potentielle entre Milvus et les GPU NVIDIA, l’équipe Milvus a décidé d’introduire la prise en charge des GPU dans Milvus 2.3.
Grâce au soutien de l’équipe NVIDIA (remerciements particuliers à @wphicks et @cjnolet de NVIDIA pour leurs précieuses contributions au code RAFT), la prise en charge des GPU dans Milvus est devenue une réalité, permettant de rechercher rapidement et efficacement dans des jeux de données massifs et d’élargir le paysage de l’IA.
Bien démarrer avec la version GPU de Milvus
Plongeons dans les étapes pour commencer votre parcours avec la version GPU de Milvus.
Installation du pilote CUDA
Avant tout, assurez-vous que votre machine hôte reconnaît votre GPU NVIDIA. Vous pouvez le vérifier en exécutant la commande suivante :
lspci
Vous êtes prêt à continuer si vous voyez le champ "NVIDIA" dans la sortie du périphérique. Ci-dessous se trouve le résultat de mon périphérique, qui reconnaît une carte graphique 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
Ensuite, installez les pilotes CUDA nécessaires. Vous pouvez trouver le pilote approprié pour votre système sur le site web de NVIDIA.
Par exemple, si vous utilisez le système d’exploitation (OS) Ubuntu Linux 20.04, vous pouvez télécharger et installer le pilote en exécutant les commandes suivantes :
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
Remarque :
Vous pouvez ignorer l’étape d’installation de CUDA si votre machine hôte ne nécessite pas de pilotes CUDA.
La version minimale du pilote requise dépend de votre type de GPU :
GPU professionnels de la série NVIDIA Tesla : >=450.80.02
GPU gaming : >=520.61.05
Après avoir installé le pilote, vous devez redémarrer le système pour qu’il prenne effet. Une fois le redémarrage terminé, vous pouvez poursuivre en saisissant la commande suivante :
nvidia-smi
Remarque : L’image GPU de Milvus prend en charge les cartes graphiques NVIDIA avec une Compute Capability de 6.1, 7.0, 7.5 et 8.0.
Pour connaître la Compute Capability de votre GPU, consultez NVIDIA GPU Compute Capability.
Pour obtenir des instructions sur l’installation de NVIDIA Container Toolkit, reportez-vous à la documentation NVIDIA.
Configuration GPU de Milvus
La version GPU de Milvus ne prend en charge par défaut qu’un seul processus Milvus et un seul GPU. Vous pouvez exécuter plusieurs processus ou conteneurs Milvus et définir la variable d’environnement CUDA_VISIBLE_DEVICES pour utiliser plusieurs GPU.
- Dans un conteneur, vous pouvez définir cette variable d’environnement à l’aide de
-e:
sudo docker run --rm -e NVIDIA_VISIBLE_DEVICES=3 milvusdb/milvus:v2.3.0-gpu-beta
- Vous pouvez définir cette variable d’environnement dans un Docker Compose à l’aide du champ
device_ids. Consultez l’accès au GPU avec la documentation Docker Compose pour plus d’informations.
Remarque:
Même si vous configurez plusieurs cartes graphiques pour un seul processus ou conteneur Milvus, Milvus ne peut en utiliser qu’une seule.
Vous pouvez affiner les performances en ajustant des variables d’environnement comme
KNOWHERE_STREAMS_PER_GPU(pour la concurrence des flux CUDA) etKNOWHERE_GPU_MEM_POOL_SIZE(pour la taille du pool de mémoire GPU).Nous recommandons fortement d’ajuster votre variable d’environnement si vous déployez deux processus Milvus sur une seule carte graphique. Sinon, Milvus peut subir des plantages en raison de la concurrence pour la mémoire.
Compiler la version GPU de Milvus localement
Avant de compiler Milvus localement, assurez-vous d’avoir installé les dépendances nécessaires.
- CUDA Toolkit
sudo apt install --no-install-recommends cuda-toolkit
- Python 3, pip, libopenblas-dev, libtbb-dev et pkg-config:
sudo apt install python3-pip libopenblas-dev libtbb-dev pkg-config
- Conan, un gestionnaire de paquets C/C++:
pip3 install conan==1.59.0 --userexpoprt PATH=$PATH:~/.local/bin
CMake (>=3.23): consultez le dépôt APT Kitware pour plus de détails.
Golang: consultez la documentation Go pour plus de détails.
Après avoir installé tous les outils nécessaires, compilez la version GPU de Milvus à l’aide de la commande suivante:
make milvus-gpu
Exécuter Milvus
Démarrez Milvus en mode autonome en exécutant la commande suivante:
cd binsudo ./milvus run standalone
Si vous préférez la conteneurisation, vous pouvez utiliser le fichier docker-compose.yml fourni pour le déploiement.
docker-compose up -d
Conclusion
L’introduction de la prise en charge des GPU dans Milvus 2.3 ouvre des possibilités enthousiasmantes pour accélérer les performances des bases de données vectorielles. Avec des GPU NVIDIA A100 à votre disposition, vous pouvez obtenir des gains remarquables à la fois en débit et en latence, ce qui en fait un choix convaincant pour les applications gourmandes en données et les charges de travail d’IA.
Continuer à lire

Will Amazon S3 Vectors Kill Vector Databases—or Save Them?
AWS S3 Vectors aims for 90% cost savings for vector storage. But will it kill vectordbs like Milvus? A deep dive into costs, limits, and the future of tiered storage.

How to Build RAG with Milvus, QwQ-32B and Ollama
Hands-on tutorial on how to create a streamlined, powerful RAG pipeline that balances efficiency, accuracy, and scalability using the QwQ-32B and Milvus.

Introducing DeepSearcher: A Local Open Source Deep Research
In contrast to OpenAI’s Deep Research, this example ran locally, using only open-source models and tools like Milvus and LangChain.



