Guide rapide de l'évaluation comparative de Milvus 2.1
Couverture
Nous avons récemment mis à jour le rapport de benchmarking de Milvus 2.1. Des tests avec un ensemble de données d'un million de vecteurs ont prouvé que le QPS peut être considérablement augmenté en fusionnant des requêtes de petite taille.
Voici quelques scripts simples qui vous permettront de reproduire facilement ces tests.
Procédures
Déployez un Milvus autonome ou en grappe. Dans ce cas, l'adresse IP du serveur Milvus est 10.100.31.105.
Déployer un client. Dans ce cas, nous utilisons Ubuntu 18.04 et Python 3.8.13 pour le déploiement. Exécutez le code suivant pour installer PyMilvus 2.1.1.
pip install pymilvus==2.1.1
Téléchargez et copiez les fichiers suivants dans le même répertoire de travail que le client. Dans ce cas, le répertoire de travail est
/go_ben
.benchmark
(pour Ubuntu) oubenchmark-mac
(pour macOS)
Remarque :
benchmark
etbenchmark-mac
sont des fichiers exécutables développés et compilés à l'aide de Go SDK 2.1.1. Ils ne sont utilisés que pour effectuer une recherche simultanée.Pour les utilisateurs d'Ubuntu, veuillez télécharger
benchmark
; pour les utilisateurs de macOS, veuillez téléchargerbenchmark-mac
.Des autorisations d'exécution sont requises pour accéder à
benchmark
oubenchmark-mac
.Les utilisateurs de Mac doivent faire confiance au fichier
benchmark-mac
en configurant Sécurité et confidentialité dans les Préférences système.Les paramètres relatifs à la recherche simultanée peuvent être trouvés et modifiés dans le code source de
go_benchmark.py
.
- Créez une collection et insérez des données vectorielles.
root@milvus-pytest:/go_ben# python collection_prepare.py 10.100.31.105
- Ouvrez
/tmp/collection_prepare.log
pour vérifier le résultat de l'exécution.
...
08/11/2022 17:33:34 PM - INFO - Build index costs 263.626
08/11/2022 17:33:54 PM - INFO - Collection prepared completed
- Appelez
benchmark
(oubenchmark-mac
sur macOS) pour effectuer une recherche simultanée.
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': ''}
- Ouvrez le fichier
go_log_file.log
dans le répertoire actuel pour vérifier le journal détaillé de la recherche. Voici les informations de recherche que vous pouvez trouver dans le journal de recherche.reqs : nombre de demandes de recherche entre le moment où la concurrence se produit et le moment présent (la période actuelle)
fails : nombre de demandes ayant échoué, exprimé en pourcentage du nombre de demandes dans l'intervalle de temps en cours.
Avg : temps de réponse moyen de la requête dans l'intervalle de temps actuel (unité : millisecondes)
Min : temps de réponse minimal de la demande dans l'intervalle de temps actuel (unité : millisecondes)
Max : temps de réponse maximal de la demande dans l'intervalle de temps actuel (unité : millisecondes)
Median : temps médian de réponse à une demande dans l'intervalle de temps actuel (unité : millisecondes)
req/s : nombre de demandes par seconde, c'est-à-dire QPS
failures/s : nombre moyen de requêtes échouées par seconde dans l'intervalle de temps actuel.
Téléchargement de scripts et de fichiers exécutables
benchmark pour Ubuntu
benchmark-mac pour macOS
Prochaines étapes
Avec la sortie officielle de Milvus 2.1, nous avons préparé une série de blogs présentant les nouvelles fonctionnalités. En savoir plus dans cette série de blogs :
- Comment utiliser les données de chaînes de caractères pour renforcer vos applications de recherche de similarité
- Utilisation de Milvus embarqué pour installer et exécuter instantanément Milvus avec Python
- Augmenter le débit de lecture de votre base de données vectorielle avec des répliques en mémoire
- Comprendre le niveau de cohérence dans la base de données vectorielle Milvus
- Comment la base de données vectorielle Milvus assure-t-elle la sécurité des données ?
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word