Eine Kurzanleitung zum Benchmarking von Milvus 2.1
Umschlag
Vor kurzem haben wir den Benchmark-Bericht von Milvus 2.1 aktualisiert. Tests mit einem Datensatz von 1 Million Vektoren haben gezeigt, dass die QPS durch das Zusammenführen von small-nq-Abfragen drastisch erhöht werden kann.
Hier finden Sie einige einfache Skripte, mit denen Sie die Tests leicht reproduzieren können.
Vorgehensweisen
Setzen Sie einen Milvus-Einzelplatz oder -Cluster ein. In diesem Fall lautet die IP-Adresse des Milvus-Servers 10.100.31.105.
Stellen Sie einen Client bereit. In diesem Fall verwenden wir Ubuntu 18.04 und Python 3.8.13 für den Einsatz. Führen Sie den folgenden Code aus, um PyMilvus 2.1.1 zu installieren.
pip install pymilvus==2.1.1
Laden Sie die folgenden Dateien herunter und kopieren Sie sie in dasselbe Arbeitsverzeichnis wie den Client. In diesem Fall ist das Arbeitsverzeichnis
/go_ben
.benchmark
(für Ubuntu) oderbenchmark-mac
(für macOS)
Anmerkung:
benchmark
undbenchmark-mac
sind ausführbare Dateien, die mit Go SDK 2.1.1 entwickelt und kompiliert wurden. Sie werden nur verwendet, um eine gleichzeitige Suche durchzuführen.Für Ubuntu-Benutzer laden Sie bitte
benchmark
herunter; für macOS-Benutzer laden Sie bittebenchmark-mac
herunter.Für den Zugriff auf
benchmark
oderbenchmark-mac
sind Ausführungsberechtigungen erforderlich.Mac-Benutzer müssen der Datei
benchmark-mac
vertrauen, indem sie Sicherheit und Datenschutz in den Systemeinstellungen konfigurieren.Die Einstellungen für die gleichzeitige Suche können im Quellcode von
go_benchmark.py
gefunden und geändert werden.
- Erstellen Sie eine Sammlung und fügen Sie Vektordaten ein.
root@milvus-pytest:/go_ben# python collection_prepare.py 10.100.31.105
- Öffnen Sie
/tmp/collection_prepare.log
, um das laufende Ergebnis zu überprüfen.
...
08/11/2022 17:33:34 PM - INFO - Build index costs 263.626
08/11/2022 17:33:54 PM - INFO - Collection prepared completed
- Rufen Sie
benchmark
(oderbenchmark-mac
unter macOS) auf, um eine gleichzeitige Suche durchzuführen.
root@milvus-pytest:/go_ben# python go_benchmark.py 10.100.31.105 ./benchmark
[write_json_file] Remove file(search_vector_file.json).
[write_json_file] Write json file:search_vector_file.json done.
Params of go_benchmark: ['./benchmark', 'locust', '-u', '10.100.31.105:19530', '-q', 'search_vector_file.json', '-s', '{\n "collection_name": "random_1m",\n "partition_names": [],\n "fieldName": "embedding",\n "index_type": "HNSW",\n "metric_type": "L2",\n "params": {\n "sp_value": 64,\n "dim": 128\n },\n "limit": 1,\n "expr": null,\n "output_fields": [],\n "timeout": 600\n}', '-p', '10', '-f', 'json', '-t', '60', '-i', '20', '-l', 'go_log_file.log']
[2022-08-11 11:37:39.811][ INFO] - Name # reqs # fails | Avg Min Max Median | req/s failures/s (benchmark_run.go:212:sample)
[2022-08-11 11:37:39.811][ INFO] - go search 9665 0(0.00%) | 20.679 6.499 81.761 12.810 | 483.25 0.00 (benchmark_run.go:213:sample)
[2022-08-11 11:37:59.811][ INFO] - Name # reqs # fails | Avg Min Max Median | req/s failures/s (benchmark_run.go:212:sample)
[2022-08-11 11:37:59.811][ INFO] - go search 19448 0(0.00%) | 20.443 6.549 78.121 13.401 | 489.22 0.00 (benchmark_run.go:213:sample)
[2022-08-11 11:38:19.811][ INFO] - Name # reqs # fails | Avg Min Max Median | req/s failures/s (benchmark_run.go:212:sample)
[2022-08-11 11:38:19.811][ INFO] - go search 29170 0(0.00%) | 20.568 6.398 76.887 12.828 | 486.15 0.00 (benchmark_run.go:213:sample)
[2022-08-11 11:38:19.811][ DEBUG] - go search run finished, parallel: 10(benchmark_run.go:95:benchmark)
[2022-08-11 11:38:19.811][ INFO] - Name # reqs # fails | Avg Min Max Median | req/s failures/s (benchmark_run.go:159:samplingLoop)
[2022-08-11 11:38:19.811][ INFO] - go search 29180 0(0.00%) | 20.560 6.398 81.761 13.014 | 486.25 0.00 (benchmark_run.go:160:samplingLoop)
Result of go_benchmark: {'response': True, 'err_code': 0, 'err_message': ''}
- Öffnen Sie die Datei
go_log_file.log
im aktuellen Verzeichnis, um das detaillierte Suchprotokoll zu prüfen. Im Folgenden finden Sie die Suchinformationen, die Sie im Suchprotokoll finden können.reqs: Anzahl der Suchanfragen von dem Zeitpunkt, an dem die Gleichzeitigkeit eintritt, bis zum aktuellen Zeitpunkt (die aktuelle Zeitspanne)
Fails: Anzahl der fehlgeschlagenen Suchanfragen als Prozentsatz der Suchanfragen in der aktuellen Zeitspanne
Avg: durchschnittliche Antwortzeit der Anfrage in der aktuellen Zeitspanne (Einheit: Millisekunden)
Min: minimale Antwortzeit der Anfrage in der aktuellen Zeitspanne (Einheit: Millisekunden)
Max: maximale Antwortzeit der Anfrage in der aktuellen Zeitspanne (Einheit: Millisekunden)
Median: mittlere Anfrage-Antwortzeit in der aktuellen Zeitspanne (Einheit: Millisekunden)
req/s: Anzahl der Anfragen pro Sekunde, d. h. QPS
failures/s: durchschnittliche Anzahl der fehlgeschlagenen Anfragen pro Sekunde in der aktuellen Zeitspanne
Herunterladen von Skripten und ausführbaren Dateien
benchmark für Ubuntu
benchmark-mac für macOS
Was kommt als Nächstes?
Mit der offiziellen Veröffentlichung von Milvus 2.1 haben wir eine Reihe von Blogs vorbereitet, in denen die neuen Funktionen vorgestellt werden. Lesen Sie mehr in dieser Blogserie:
- Wie Sie String-Daten für Ihre Anwendungen zur Ähnlichkeitssuche nutzen können
- Verwendung von Embedded Milvus zur sofortigen Installation und Ausführung von Milvus mit Python
- Erhöhen Sie den Lesedurchsatz Ihrer Vektordatenbank mit In-Memory-Replikaten
- Verstehen der Konsistenzebene in der Milvus-Vektordatenbank
- Wie gewährleistet die Milvus-Vektor-Datenbank die Datensicherheit?
- Vorgehensweisen
- Herunterladen von Skripten und ausführbaren Dateien
- Was kommt als Nächstes?
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word