Rapport sur les tests d'évaluation comparative de Milvus 2.2
Ce rapport présente les principaux résultats des tests de Milvus 2.2.0. Il vise à fournir une image des performances de recherche de Milvus 2.2.0, en particulier en ce qui concerne la capacité de mise à l'échelle et d'extension.
Nous avons récemment effectué une analyse comparative avec Milvus 2.2.3 et avons obtenu les résultats clés suivants :
- Une réduction de 2,5 fois de la latence de recherche
- Augmentation de 4,5 fois du QPS
- Recherche de similarités à l'échelle du milliard avec une faible dégradation des performances
- Évolutivité linéaire lors de l'utilisation de répliques multiples
Pour plus de détails, nous vous invitons à consulter ce livre blanc et le code de test de référence correspondant.
Résumé
- Par rapport à Milvus 2.1, le QPS de Milvus 2.2.0 augmente de plus de 48 % en mode cluster et de plus de 75 % en mode autonome.
- Milvus 2.2.0 a une capacité impressionnante de mise à l'échelle et d'extension :
- Le QPS augmente de façon linéaire lorsque le nombre de cœurs de CPU passe de 8 à 32.
- Le QPS augmente linéairement lorsque les répliques Querynode passent de 1 à 8.
Terminologie
Cliquez pour voir les détails des termes utilisés dans le test.
Terme
Description
nq
Nombre de vecteurs à rechercher dans une demande de recherche
topk
Nombre de vecteurs les plus proches à récupérer pour chaque vecteur (dans nq) dans une requête de recherche
ef
Paramètre de recherche spécifique à l'index HNSW
RT
Temps de réponse entre l'envoi de la demande et la réception de la réponse
QPS
Nombre de demandes de recherche traitées avec succès par seconde
Environnement de test
Tous les tests sont effectués dans les environnements suivants.
Environnement matériel
Matériel | Spécification |
---|---|
UNITÉ CENTRALE | Intel® Xeon® Gold 6226R CPU @ 2.90GHz |
Mémoire | 16*\32 Go RDIMM, 3200 MT/s |
SSD | SATA 6 Gbps |
Environnement logiciel
Logiciel | Version du logiciel |
---|---|
Milvus | v2.2.0 |
Milvus GO SDK | v2.2.0 |
Schéma de déploiement
- Les instances Milvus (autonomes ou en cluster) sont déployées via Helm sur un cluster Kubernetes basé sur des machines physiques ou virtuelles.
- Les différents tests varient simplement dans le nombre de cœurs de CPU, la taille de la mémoire et le nombre de répliques (nœuds de travail), ce qui ne s'applique qu'aux clusters Milvus.
- Les configurations non spécifiées sont identiques aux configurations par défaut.
- Les dépendances Milvus (MinIO, Pulsar et Etcd) stockent les données sur le disque SSD local de chaque nœud.
- Les demandes de recherche sont envoyées aux instances Milvus via le SDK Milvus GO.
Ensembles de données
Le test utilise l'ensemble de données open-source SIFT (128 dimensions) de ANN-Benchmarks.
Pipeline de test
- Démarrer une instance Milvus par Helm avec les configurations de serveur respectives comme indiqué dans chaque test.
- Se connecter à l'instance Milvus via Milvus GO SDK et obtenir les résultats des tests correspondants.
- Créer une collection.
- Insérer 1 million de vecteurs SIFT. Construire un index HNSW et configurer les paramètres de l'index en définissant
M
sur8
etefConstruction
sur200
. - Chargez la collection.
- Effectuez une recherche avec différents nombres simultanés avec les paramètres de recherche
nq=1, topk=1, ef=64
, la durée de chaque concurrence est d'au moins 1 heure.
Résultats des tests
Milvus 2.2.0 v.s. Milvus 2.1.0
Cluster
Configurations de serveur (cluster)
yaml queryNode: replicas: 1 resources: limits: cpu: "12.0" memory: 8Gi requests: cpu: "12.0" memory: 8Gi
Performances de recherche
Milvus | QPS | RT(TP99) / ms | RT(TP50) / ms | échec/s |
---|---|---|---|---|
2.1.0 | 6904 | 59 | 28 | 0 |
2.2.0 | 10248 | 63 | 24 | 0 |
Performances de la recherche en grappe
Autonome
Configurations de serveurs (autonomes)
yaml standalone: replicas: 1 resources: limits: cpu: "12.0" memory: 16Gi requests: cpu: "12.0" memory: 16Gi
Performances de recherche
Milvus | QPS | RT(TP99) / ms | RT(TP50) / ms | échec/s |
---|---|---|---|---|
2.1.0 | 4287 | 104 | 76 | 0 |
2.2.0 | 7522 | 127 | 79 | 0 |
Performances de la recherche autonome
Milvus 2.2.0 Mise à l'échelle
Augmenter le nombre de cœurs de CPU dans un Querynode pour vérifier la capacité de montée en charge.
Configurations de serveur (cluster)
yaml queryNode: replicas: 1 resources: limits: cpu: "8.0" /"12.0" /"16.0" /"32.0" memory: 8Gi requests: cpu: "8.0" /"12.0" /"16.0" /"32.0" memory: 8Gi
Performances de recherche
Cœurs de CPU | Nombre simultané | QPS | RT(TP99) / ms | RT(TP50) / ms | fail/s |
---|---|---|---|---|---|
8 | 500 | 7153 | 127 | 83 | 0 |
12 | 300 | 10248 | 63 | 24 | 0 |
16 | 600 | 14135 | 85 | 42 | 0 |
32 | 600 | 20281 | 63 | 28 | 0 |
Performances de recherche par cœur d'unité centrale Querynode
Milvus 2.2.0 Scale-out
Développez plus de répliques avec plus de Querynodes pour vérifier la capacité de mise à l'échelle.
Remarque : le nombre de Querynodes est égal à replica_number
lors du chargement de la collection.
Configurations de serveur (cluster)
yaml queryNode: replicas: 1 / 2 / 4 / 8 resources: limits: cpu: "8.0" memory: 8Gi requests: cpu: "8.0" memory: 8Gi
Répliques | Nombre simultané | QPS | RT(TP99) / ms | RT(TP50) / ms | fail/s |
---|---|---|---|---|---|
1 | 500 | 7153 | 127 | 83 | 0 |
2 | 500 | 15903 | 105 | 27 | 0 |
4 | 800 | 19281 | 109 | 40 | 0 |
8 | 1200 | 30655 | 93 | 38 | 0 |
Performances de recherche par réplicas Querynode
Prochaine étape
- Essayez d'effectuer les tests de référence de Milvus 2.2.0 par vous-même en vous référant à ce guide, sauf que vous devez utiliser Milvus 2.2 et Pymilvus 2.2 dans ce guide.