🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI
  • Home
  • Blog
  • Dévoilement de Milvus 2.3 : une version importante qui prend en charge les GPU, Arm64, CDC et de nombreuses autres fonctionnalités très attendues.

Dévoilement de Milvus 2.3 : une version importante qui prend en charge les GPU, Arm64, CDC et de nombreuses autres fonctionnalités très attendues.

  • News
August 28, 2023
Owen Jiao, Fendy Feng

Des nouvelles passionnantes ! Après huit mois d'efforts concertés, nous sommes ravis d'annoncer la sortie de Milvus 2.3, une version importante qui apporte de nombreuses fonctionnalités très attendues, notamment la prise en charge du GPU, de l'Arm64, de l'upsert, de la capture des données de modification, de l'index ScaNN et de la technologie MMap. Milvus 2.3 améliore également les performances des requêtes, l'équilibrage des charges et la planification, ainsi que l'observabilité et l'opérabilité.

Rejoignez-moi pour examiner ces nouvelles fonctionnalités et améliorations et apprendre comment vous pouvez bénéficier de cette version.

Prise en charge de l'index GPU qui permet de multiplier par 3 à 10 les performances en termes de QPS

L'index GPU est une fonctionnalité très attendue par la communauté Milvus. Grâce à une excellente collaboration avec les ingénieurs de Nvidia, Milvus 2.3 a pris en charge l'indexation GPU avec le robuste algorithme RAFT ajouté à Knowhere, le moteur d'indexation de Milvus. Avec la prise en charge du GPU, Milvus 2.3 est plus de trois fois plus rapide en QPS que les anciennes versions utilisant l'index HNSW du CPU et presque dix fois plus rapide pour des ensembles de données spécifiques qui nécessitent des calculs lourds.

Prise en charge d'Arm64 pour répondre à la demande croissante des utilisateurs

Les processeurs Arm sont de plus en plus populaires parmi les fournisseurs de cloud et les développeurs. Pour répondre à cette demande croissante, Milvus fournit désormais des images Docker pour l'architecture ARM64. Grâce à cette nouvelle prise en charge de l'unité centrale, les utilisateurs de MacOS peuvent créer leurs applications avec Milvus de manière plus transparente.

Prise en charge de l'Upsert pour une meilleure expérience utilisateur

Milvus 2.3 introduit une amélioration notable en prenant en charge l'opération upsert. Cette nouvelle fonctionnalité permet aux utilisateurs de mettre à jour ou d'insérer des données de manière transparente et leur donne la possibilité d'effectuer les deux opérations en une seule demande par le biais de l'interface Upsert. Cette fonctionnalité rationalise la gestion des données et apporte de l'efficacité.

Remarque:

  • La fonction Upsert ne s'applique pas aux ID auto-incrémentés.
  • Upsert est implémenté comme une combinaison de delete et insert, ce qui peut entraîner une perte de performance. Nous vous recommandons d'utiliser insert si vous utilisez Milvus dans des scénarios à forte densité d'écriture.

Recherche par plage pour des résultats plus précis

Milvus 2.3 permet aux utilisateurs de spécifier la distance entre le vecteur d'entrée et les vecteurs stockés dans Milvus lors d'une requête. Milvus renvoie alors tous les résultats correspondants dans la plage définie. Vous trouverez ci-dessous un exemple de spécification de la distance de recherche à l'aide de la fonction de recherche par plage.

// add radius and range_filter to params in search_params
search_params = {"params": {"nprobe": 10, "radius": 10, "range_filter" : 20}, "metric_type": "L2"}
res = collection.search(
vectors, "float_vector", search_params, topK,
"int64 > 100", output_fields=["int64", "float"]
)

Dans cet exemple, l'utilisateur demande à Milvus de renvoyer des vecteurs situés à une distance de 10 à 20 unités du vecteur d'entrée.

Remarque: Les différentes mesures de distance varient dans la manière dont elles calculent les distances, ce qui se traduit par des plages de valeurs et des stratégies de tri distinctes. Il est donc essentiel de comprendre leurs caractéristiques avant d'utiliser la fonction de recherche par plage.

Index ScaNN pour une vitesse de recherche plus rapide

Milvus 2.3 prend désormais en charge l'index ScaNN, un index de voisinage approximatif (ANN) open-source développé par Google. L'index ScaNN a démontré des performances supérieures dans divers benchmarks, surpassant HNSW d'environ 20 % et étant environ sept fois plus rapide que IVFFlat. Grâce à la prise en charge de l'index ScaNN, Milvus atteint une vitesse d'interrogation beaucoup plus rapide que les anciennes versions.

Index croissant pour des performances d'interrogation stables et meilleures

Milvus comprend deux catégories de données : les données indexées et les données en continu. Milvus peut utiliser des index pour rechercher rapidement des données indexées, mais il ne peut effectuer qu'une recherche brute ligne par ligne dans les données en continu, ce qui peut avoir un impact sur les performances. Milvus 2.3 introduit l'index croissant, qui crée automatiquement des index en temps réel pour les données en continu afin d'améliorer les performances des requêtes.

Itérateur pour l'extraction de données par lots

Dans Milvus 2.3, Pymilvus a introduit une interface d'itérateur qui permet aux utilisateurs de récupérer plus de 16 384 entités dans une recherche ou une plage de recherche. Cette fonctionnalité est pratique lorsque les utilisateurs doivent exporter des dizaines de milliers de vecteurs, voire plus, par lots.

Prise en charge de MMap pour une capacité accrue

MMap est un appel système UNIX utilisé pour mapper des fichiers et d'autres objets dans la mémoire. Milvus 2.3 prend en charge MMap, qui permet aux utilisateurs de charger des données sur des disques locaux et de les mapper en mémoire, augmentant ainsi la capacité d'une seule machine.

Les résultats de nos tests indiquent qu'en utilisant la technologie MMap, Milvus peut doubler sa capacité de données tout en limitant la dégradation des performances à moins de 20 %. Cette approche réduit considérablement les coûts globaux, ce qui la rend particulièrement avantageuse pour les utilisateurs disposant d'un budget serré et n'ayant pas peur de compromettre les performances.

Prise en charge du CDC pour une plus grande disponibilité du système

Change Data Capture (CDC) est une fonction couramment utilisée dans les systèmes de base de données qui capture et réplique les modifications de données vers une destination désignée. Grâce à la fonction CDC, Milvus 2.3 permet aux utilisateurs de synchroniser les données entre les centres de données, de sauvegarder les données incrémentielles et de migrer les données de manière transparente, ce qui rend le système plus disponible.

Outre les fonctionnalités ci-dessus, Milvus 2.3 introduit une interface de comptage pour calculer avec précision le nombre de lignes de données stockées dans une collection en temps réel, prend en charge la métrique Cosinus pour mesurer la distance vectorielle et davantage d'opérations sur les tableaux JSON. Pour plus de fonctionnalités et d'informations détaillées, consultez les notes de mise à jour de Milvus 2.3.

Améliorations et corrections de bogues

Outre les nouvelles fonctionnalités, Milvus 2.3 comprend de nombreuses améliorations et corrections de bogues pour les versions antérieures.

Amélioration des performances du filtrage des données

Milvus effectue un filtrage scalaire avant la recherche vectorielle dans les requêtes de données scalaires et vectorielles hybrides pour obtenir des résultats plus précis. Toutefois, les performances d'indexation peuvent diminuer si l'utilisateur a filtré trop de données après le filtrage scalaire. Dans Milvus 2.3, nous avons optimisé la stratégie de filtrage de HNSW pour résoudre ce problème, ce qui a permis d'améliorer les performances des requêtes.

Augmentation de l'utilisation de l'unité centrale multicœur

La recherche approximative la plus proche (ANN) est une tâche de calcul intensif qui nécessite des ressources CPU massives. Dans les versions précédentes, Milvus ne pouvait utiliser qu'environ 70 % des ressources CPU multicœurs disponibles. Toutefois, avec la dernière version, Milvus a surmonté cette limitation et peut utiliser pleinement toutes les ressources CPU multicœurs disponibles, ce qui améliore les performances des requêtes et réduit le gaspillage des ressources.

QueryNode remanié

QueryNode est un composant essentiel de Milvus qui est responsable de la recherche vectorielle. Cependant, dans les versions antérieures, QueryNode avait des états complexes, des files d'attente de messages en double, une structure de code non organisée et des messages d'erreur non intuitifs.

Dans Milvus 2.3, nous avons amélioré QueryNode en introduisant une structure de code sans état et en supprimant la file d'attente de messages pour la suppression des données. Ces mises à jour permettent de réduire le gaspillage de ressources et d'effectuer des recherches vectorielles plus rapides et plus stables.

Files d'attente de messages améliorées basées sur NATS

Nous avons construit Milvus sur une architecture basée sur les journaux et, dans les versions précédentes, nous avons utilisé Pulsar et Kafka comme principaux courtiers de journaux. Toutefois, cette combinaison s'est heurtée à trois problèmes majeurs :

  • Elle était instable dans les situations multi-sujets.
  • Elle consommait des ressources lorsqu'elle était inactive et peinait à dédupliquer les messages.
  • Pulsar et Kafka sont étroitement liés à l'écosystème Java, de sorte que leur communauté assure rarement la maintenance et la mise à jour de leurs SDK Go.

Pour résoudre ces problèmes, nous avons combiné NATS et Bookeeper dans notre nouveau log broker pour Milvus, qui répond mieux aux besoins des utilisateurs.

Équilibreur de charge optimisé

Milvus 2.3 a adopté un algorithme d'équilibrage de charge plus flexible basé sur les charges réelles du système. Cet algorithme optimisé permet aux utilisateurs de détecter rapidement les défaillances de nœuds et les charges déséquilibrées et d'ajuster les planifications en conséquence. D'après les résultats de nos tests, Milvus 2.3 peut détecter les pannes, les charges déséquilibrées, les états anormaux des nœuds et d'autres événements en quelques secondes et procéder rapidement à des ajustements.

Pour plus d'informations sur Milvus 2.3, voir les notes de mise à jour de Milvus 2.3.

Mises à jour des outils

Nous avons également mis à jour Birdwatcher et Attu, deux outils précieux pour l'exploitation et la maintenance de Milvus, avec Milvus 2.3.

Mise à jour de Birdwatcher

Nous avons mis à jour Birdwatcher, l'outil de débogage de Milvus, en introduisant de nombreuses fonctionnalités et améliorations, notamment :

  • API RESTful pour une intégration transparente avec d'autres systèmes de diagnostic.
  • Prise en charge de la commande PProf pour faciliter l'intégration avec l'outil Go pprof.
  • Capacités d'analyse de l'utilisation du stockage.
  • Fonctionnalité d'analyse efficace des journaux.
  • Prise en charge de la visualisation et de la modification des configurations dans etcd.

Mise à jour d'Attu

Nous avons lancé une toute nouvelle interface pour Attu, un outil d'administration de bases de données vectorielles tout-en-un. La nouvelle interface a un design plus direct et est plus facile à comprendre.

Pour plus de détails, consultez les notes de mise à jour de Milvus 2.3.

Restons en contact !

Si vous avez des questions ou des commentaires sur Milvus, n'hésitez pas à nous contacter via Twitter ou LinkedIn. Vous pouvez également rejoindre notre canal Slack pour discuter directement avec nos ingénieurs et la communauté ou vous rendre à nos heures de bureau du mardi!

Like the article? Spread the word

Continuer à Lire