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:
benchmarkebenchmark-macsono 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
benchmarkobenchmark-macsono necessari i permessi di esecuzione.Gli utenti Mac devono fidarsi del file
benchmark-macconfigurando 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.logper 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-macsu 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.lognella 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


