Um guia rápido para a avaliação comparativa do Milvus 2.1
Cobertura
Recentemente, actualizámos o relatório de benchmark do Milvus 2.1. Testes com um conjunto de dados de 1 milhão de vectores provaram que o QPS pode ser dramaticamente aumentado através da fusão de consultas small-nq.
Aqui estão alguns scripts simples para que possa reproduzir facilmente os testes.
Procedimentos
Implementar um Milvus autónomo ou em cluster. Neste caso, o endereço IP do servidor Milvus é 10.100.31.105.
Implantar um cliente. Neste caso, usamos o Ubuntu 18.04 e o Python 3.8.13 para a implantação. Execute o seguinte código para instalar o PyMilvus 2.1.1.
pip install pymilvus==2.1.1
Descarregue e copie os seguintes ficheiros para o mesmo diretório de trabalho que o cliente. Neste caso, o diretório de trabalho é
/go_ben
.benchmark
(para Ubuntu) oubenchmark-mac
(para macOS)
Nota:
benchmark
ebenchmark-mac
são arquivos executáveis desenvolvidos e compilados usando o Go SDK 2.1.1. Eles são usados apenas para realizar uma pesquisa simultânea.Para utilizadores do Ubuntu, transfira
benchmark
; para utilizadores do macOS, transfirabenchmark-mac
.São necessárias permissões de executável para aceder a
benchmark
oubenchmark-mac
.Os utilizadores de Mac precisam de confiar no ficheiro
benchmark-mac
configurando Segurança e Privacidade nas Preferências do Sistema.As configurações da pesquisa simultânea podem ser encontradas e modificadas no código-fonte
go_benchmark.py
.
- Crie uma coleção e insira dados vectoriais.
root@milvus-pytest:/go_ben# python collection_prepare.py 10.100.31.105
- Abra
/tmp/collection_prepare.log
para verificar o resultado da execução.
...
08/11/2022 17:33:34 PM - INFO - Build index costs 263.626
08/11/2022 17:33:54 PM - INFO - Collection prepared completed
- Chame
benchmark
(oubenchmark-mac
no macOS) para realizar uma pesquisa simultânea.
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': ''}
- Abra o ficheiro
go_log_file.log
no diretório atual para verificar o registo de pesquisa detalhado. Segue-se a informação de pesquisa que pode encontrar no registo de pesquisa.reqs: número de pedidos de pesquisa desde o momento em que a simultaneidade ocorre até ao momento atual (o intervalo de tempo atual)
fails: número de pedidos falhados como uma percentagem de reqs no intervalo de tempo atual
Avg: tempo médio de resposta do pedido no intervalo de tempo atual (unidade: milissegundos)
Min: tempo mínimo de resposta do pedido no intervalo de tempo atual (unidade: milissegundos)
Max: tempo máximo de resposta do pedido no intervalo de tempo atual (unidade: milissegundos)
Median: tempo mediano de resposta do pedido no intervalo de tempo atual (unidade: milissegundos)
req/s: número de pedidos por segundo, ou seja, QPS
failures/s: número médio de pedidos falhados por segundo no intervalo de tempo atual
Descarregar scripts e ficheiros executáveis
benchmark para Ubuntu
benchmark-mac para macOS
O que vem a seguir
Com o lançamento oficial do Milvus 2.1, preparámos uma série de blogues que apresentam as novas funcionalidades. Leia mais nesta série de blogues:
- Como utilizar dados de cadeias de caracteres para potenciar as suas aplicações de pesquisa de semelhanças
- Usando o Embedded Milvus para instalar e executar instantaneamente o Milvus com Python
- Aumente a taxa de transferência de leitura do seu banco de dados vetorial com réplicas na memória
- Entendendo o nível de consistência no banco de dados vetorial do Milvus
- Como o banco de dados vetorial do Milvus garante a segurança dos dados?
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word