🚀 Prova Zilliz Cloud, la versione completamente gestita di Milvus, gratuitamente—sperimenta prestazioni 10 volte più veloci! Prova Ora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Guida rapida al benchmarking di Milvus 2.1

Guida rapida al benchmarking di Milvus 2.1

  • Engineering
August 16, 2022
Yanliang Qiao

Cover 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

  1. Distribuire un Milvus standalone o un cluster. In questo caso, l'indirizzo IP del server Milvus è 10.100.31.105.

  2. 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
  1. Scaricare e copiare i seguenti file nella stessa directory di lavoro del client. In questo caso, la directory di lavoro è /go_ben.

    Nota:

    • benchmark e benchmark-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, scaricare benchmark-mac.

    • Per accedere a benchmark o benchmark-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.

  1. Creare una collezione e inserire i dati vettoriali.
root@milvus-pytest:/go_ben# python collection_prepare.py 10.100.31.105 
  1. 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
  1. Chiamare benchmark (o benchmark-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': ''} 
  1. 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

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:

Try Managed Milvus for Free

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

Get Started

Like the article? Spread the word

Continua a Leggere