Milvus 2.2 Benchmark-Testbericht
Dieser Bericht zeigt die wichtigsten Testergebnisse von Milvus 2.2.0. Er soll einen Überblick über die Suchleistung von Milvus 2.2.0 geben, insbesondere im Hinblick auf die Skalierbarkeit und Skalierbarkeit nach oben.
Wir haben kürzlich einen Benchmark mit Milvus 2.2.3 durchgeführt und sind zu folgenden Ergebnissen gekommen:
- Eine 2,5-fache Reduzierung der Suchlatenz
- Eine 4,5-fache Steigerung der QPS
- Ähnlichkeitssuche im Milliardenmaßstab mit geringen Leistungseinbußen
- Lineare Skalierbarkeit bei Verwendung mehrerer Replikate
Einzelheiten finden Sie in diesem Whitepaper und dem zugehörigen Benchmark-Testcode.
Zusammenfassung
- Im Vergleich zu Milvus 2.1 erhöht sich die QPS von Milvus 2.2.0 im Clustermodus um über 48% und im Einzelplatzmodus um über 75%.
- Milvus 2.2.0 verfügt über eine beeindruckende Fähigkeit zur Skalierung nach oben und nach unten:
- Die QPS steigt linear an, wenn die CPU-Kerne von 8 auf 32 erweitert werden.
- QPS nimmt linear zu, wenn die Anzahl der Querynode-Replikate von 1 auf 8 erhöht wird.
Terminologie
Klicken Sie hier, um die Details der im Test verwendeten Begriffe zu sehen
Begriff
Beschreibung
nq
Anzahl der zu durchsuchenden Vektoren in einer Suchanfrage
topk
Anzahl der nächstgelegenen Vektoren, die für jeden Vektor (in nq) in einer Suchanfrage abgerufen werden
ef
Ein für den HNSW-Index spezifischer Suchparameter
RT
Antwortzeit vom Senden der Anfrage bis zum Empfang der Antwort
QPS
Anzahl der Suchanfragen, die pro Sekunde erfolgreich bearbeitet werden
Testumgebung
Alle Tests werden unter den folgenden Bedingungen durchgeführt.
Hardware-Umgebung
Hardware | Spezifikation |
---|---|
CPU | Intel® Xeon® Gold 6226R CPU @ 2,90GHz |
Speicher | 16*\32 GB RDIMM, 3200 MT/s |
SSD | SATA 6 Gbit/s |
Software-Umgebung
Software | Version |
---|---|
Milvus | v2.2.0 |
Milvus GO SDK | v2.2.0 |
Bereitstellungsschema
- Milvus-Instanzen (Standalone oder Cluster) werden über Helm auf einem Kubernetes-Cluster basierend auf physischen oder virtuellen Maschinen bereitgestellt.
- Verschiedene Tests unterscheiden sich lediglich in der Anzahl der CPU-Kerne, der Größe des Speichers und der Anzahl der Replikate (Worker Nodes), was nur für Milvus-Cluster gilt.
- Nicht spezifizierte Konfigurationen sind mit den Standardkonfigurationen identisch.
- Milvus-Abhängigkeiten (MinIO, Pulsar und Etcd) speichern Daten auf der lokalen SSD in jedem Knoten.
- Suchanfragen werden über das Milvus GO SDK an die Milvus-Instanzen gesendet.
Datensätze
Der Test verwendet den Open-Source-Datensatz SIFT (128 Dimensionen) von ANN-Benchmarks.
Test-Pipeline
- Starten Sie eine Milvus-Instanz über Helm mit den entsprechenden Serverkonfigurationen, wie in jedem Test aufgeführt.
- Verbinden Sie sich mit der Milvus-Instanz über das Milvus GO SDK und rufen Sie die entsprechenden Testergebnisse ab.
- Erstellen Sie eine Sammlung.
- Fügen Sie 1 Million SIFT-Vektoren ein. Erstellen Sie einen HNSW-Index und konfigurieren Sie die Indexparameter, indem Sie
M
auf8
undefConstruction
auf200
setzen. - Laden Sie die Sammlung.
- Suchen Sie mit verschiedenen gleichzeitigen Nummern mit den Suchparametern
nq=1, topk=1, ef=64
, die Dauer jeder Gleichzeitigkeit beträgt mindestens 1 Stunde.
Testergebnisse
Milvus 2.2.0 vs. Milvus 2.1.0
Cluster
Serverkonfigurationen (Cluster)
yaml queryNode: replicas: 1 resources: limits: cpu: "12.0" memory: 8Gi requests: cpu: "12.0" memory: 8Gi
Suchleistung
Milvus | QPS | RT(TP99) / ms | RT(TP50) / ms | Ausfälle/s |
---|---|---|---|---|
2.1.0 | 6904 | 59 | 28 | 0 |
2.2.0 | 10248 | 63 | 24 | 0 |
Leistung der Clustersuche
Eigenständig
Serverkonfigurationen (Standalone)
yaml standalone: replicas: 1 resources: limits: cpu: "12.0" memory: 16Gi requests: cpu: "12.0" memory: 16Gi
Suchleistung
Milvus | QPS | RT(TP99) / ms | RT(TP50) / ms | Ausfälle/s |
---|---|---|---|---|
2.1.0 | 4287 | 104 | 76 | 0 |
2.2.0 | 7522 | 127 | 79 | 0 |
Eigenständige Suchleistung
Milvus 2.2.0 Hochskalierung
Erweitern Sie die CPU-Kerne in einem Querynode, um die Fähigkeit zur Skalierung zu prüfen.
Server-Konfigurationen (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
Suchleistung
CPU-Kerne | Gleichzeitige Anzahl | QPS | RT(TP99) / ms | RT(TP50) / ms | Ausfälle/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 |
Suchleistung nach Querynode CPU-Kernen
Milvus 2.2.0 Ausdehnung
Erweitern Sie weitere Replikate mit mehr Querynodes, um die Fähigkeit zur Skalierung zu prüfen.
Hinweis: Die Anzahl der Querynodes entspricht der replica_number
beim Laden der Sammlung.
Server-Konfigurationen (Cluster)
yaml queryNode: replicas: 1 / 2 / 4 / 8 resources: limits: cpu: "8.0" memory: 8Gi requests: cpu: "8.0" memory: 8Gi
Replikate | Gleichzeitige Anzahl | QPS | RT(TP99) / ms | RT(TP50) / ms | Ausfälle/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 |
Suchleistung nach Querynode-Replikaten
Wie geht es weiter?
- Versuchen Sie, Milvus 2.2.0-Benchmark-Tests selbst durchzuführen, indem Sie sich auf diesen Leitfaden beziehen, nur dass Sie stattdessen Milvus 2.2 und Pymilvus 2.2 in diesem Leitfaden verwenden sollten.