Guida rapida al benchmarking di Milvus 2.1
Copertina
Di recente, abbiamo aggiornato il rapporto di benchmark di Milvus 2.1. I test con un set di dati di 1 milione di vettori hanno dimostrato che il QPS può essere aumentato drasticamente unendo query di piccole dimensioni.
Ecco alcuni semplici script per riprodurre facilmente i test.
Procedure
Distribuire un Milvus standalone o un cluster. In questo caso, l'indirizzo IP del server Milvus è 10.100.31.105.
Distribuire un client. In questo caso, utilizziamo Ubuntu 18.04 e Python 3.8.13 per la distribuzione. Eseguire il seguente codice per installare PyMilvus 2.1.1.
pip install pymilvus==2.1.1
Scaricare e copiare i seguenti file nella stessa directory di lavoro del client. In questo caso, la directory di lavoro è
/go_ben
.benchmark
(per Ubuntu) obenchmark-mac
(per macOS)
Nota:
benchmark
ebenchmark-mac
sono file eseguibili sviluppati e compilati usando Go SDK 2.1.1. Vengono utilizzati solo per condurre una ricerca concorrente.Per gli utenti di Ubuntu, scaricare
benchmark
; per gli utenti di macOS, scaricarebenchmark-mac
.Per accedere a
benchmark
obenchmark-mac
sono necessari i permessi di esecuzione.Gli utenti Mac devono fidarsi del file
benchmark-mac
configurando Sicurezza e privacy nelle Preferenze di sistema.Le impostazioni sulla ricerca concorrente possono essere trovate e modificate nel codice sorgente di
go_benchmark.py
.
- Creare una collezione e inserire i dati vettoriali.
root@milvus-pytest:/go_ben# python collection_prepare.py 10.100.31.105
- Aprire
/tmp/collection_prepare.log
per verificare il risultato dell'esecuzione.
...
08/11/2022 17:33:34 PM - INFO - Build index costs 263.626
08/11/2022 17:33:54 PM - INFO - Collection prepared completed
- Chiamare
benchmark
(obenchmark-mac
su macOS) per eseguire una ricerca concorrente.
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': ''}
- Aprire il file
go_log_file.log
nella directory corrente per controllare il log dettagliato della ricerca. Di seguito sono riportate le informazioni sulla ricerca che si possono trovare nel registro di ricerca.reqs: numero di richieste di ricerca dal momento in cui si verifica la concomitanza al momento attuale (l'arco di tempo corrente)
fails: numero di richieste non riuscite come percentuale delle richieste nell'intervallo di tempo corrente
Avg: tempo medio di risposta della richiesta nell'intervallo di tempo corrente (unità : millisecondi)
Min: tempo minimo di risposta alla richiesta nell'intervallo di tempo corrente (unità : millisecondi)
Max: tempo massimo di risposta alla richiesta nell'intervallo di tempo corrente (unità : millisecondi)
Mediana: tempo di risposta mediano della richiesta nell'intervallo di tempo corrente (unità : millisecondi)
req/s: numero di richieste al secondo, ovvero QPS
failures/s: numero medio di richieste fallite al secondo nell'intervallo di tempo corrente.
Scaricare gli script e i file eseguibili
benchmark per Ubuntu
benchmark-mac per macOS
Il prossimo passo
Con il rilascio ufficiale di Milvus 2.1, abbiamo preparato una serie di blog che introducono le nuove funzionalità . Per saperne di più, leggete questa serie di blog:
- Come utilizzare i dati delle stringhe per potenziare le applicazioni di ricerca per similaritÃ
- Utilizzo di Milvus incorporato per installare ed eseguire immediatamente Milvus con Python
- Aumentare la velocità di lettura del database vettoriale con le repliche in memoria
- Capire il livello di consistenza nel database vettoriale Milvus
- In che modo il database vettoriale Milvus garantisce la sicurezza dei dati?
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word