🚀 Testen Sie Zilliz Cloud, die vollständig verwaltete Milvus, kostenlos – erleben Sie 10x schnellere Leistung! Jetzt testen>>

milvus-logo
LFAI
  • Home
  • Blog
  • Eine Kurzanleitung zum Benchmarking von Milvus 2.1

Eine Kurzanleitung zum Benchmarking von Milvus 2.1

  • Engineering
August 16, 2022
Yanliang Qiao

Cover 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

  1. Setzen Sie einen Milvus-Einzelplatz oder -Cluster ein. In diesem Fall lautet die IP-Adresse des Milvus-Servers 10.100.31.105.

  2. 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
  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.

    Anmerkung:

    • benchmark und benchmark-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 bitte benchmark-mac herunter.

    • Für den Zugriff auf benchmark oder benchmark-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.

  1. Erstellen Sie eine Sammlung und fügen Sie Vektordaten ein.
root@milvus-pytest:/go_ben# python collection_prepare.py 10.100.31.105 
  1. Ö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
  1. Rufen Sie benchmark (oder benchmark-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': ''} 
  1. Ö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

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:

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Weiterlesen