Guía rápida para la evaluación comparativa de Milvus 2.1
Portada
Recientemente, hemos actualizado el informe de referencia de Milvus 2.1. Las pruebas con un conjunto de datos de 1 millón de vectores han demostrado que el QPS puede incrementarse drásticamente fusionando consultas de nq pequeño.
A continuación le ofrecemos algunos scripts sencillos para que pueda reproducir fácilmente las pruebas.
Procedimientos
Despliegue un Milvus independiente o en clúster. En este caso, la dirección IP del servidor Milvus es 10.100.31.105.
Despliegue un cliente. En este caso, utilizamos Ubuntu 18.04 y Python 3.8.13 para el despliegue. Ejecuta el siguiente código para instalar PyMilvus 2.1.1.
pip install pymilvus==2.1.1
Descarga y copia los siguientes archivos en el mismo directorio de trabajo que el cliente. En este caso, el directorio de trabajo es
/go_ben
.benchmark
(para Ubuntu) obenchmark-mac
(para macOS)
Nota:
benchmark
ybenchmark-mac
son archivos ejecutables desarrollados y compilados utilizando Go SDK 2.1.1. Sólo se utilizan para realizar una búsqueda concurrente.Para los usuarios de Ubuntu, descargue
benchmark
; para los usuarios de macOS, descarguebenchmark-mac
.Se requieren permisos de ejecutable para acceder a
benchmark
obenchmark-mac
.Los usuarios de Mac deben confiar en el archivo
benchmark-mac
configurando Seguridad y Privacidad en Preferencias del Sistema.La configuración de la búsqueda concurrente puede encontrarse y modificarse en el código fuente de
go_benchmark.py
.
- Cree una colección e inserte datos vectoriales.
root@milvus-pytest:/go_ben# python collection_prepare.py 10.100.31.105
- Abra
/tmp/collection_prepare.log
para comprobar el resultado en ejecución.
...
08/11/2022 17:33:34 PM - INFO - Build index costs 263.626
08/11/2022 17:33:54 PM - INFO - Collection prepared completed
- Llame a
benchmark
(obenchmark-mac
en macOS) para realizar una búsqueda concurrente.
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 el archivo
go_log_file.log
en el directorio actual para comprobar el registro detallado de la búsqueda. La siguiente es la información de búsqueda que puede encontrar en el registro de búsqueda.reqs: número de peticiones de búsqueda desde el momento en que se produce la concurrencia hasta el momento actual (periodo de tiempo actual)
Fallos: número de peticiones fallidas como porcentaje de las peticiones en el periodo de tiempo actual.
Avg: tiempo medio de respuesta de las peticiones en el periodo de tiempo actual (unidad: milisegundos)
Mín: tiempo mínimo de respuesta de la solicitud en el intervalo de tiempo actual (unidad: milisegundos)
Max: tiempo máximo de respuesta de la solicitud en el intervalo de tiempo actual (unidad: milisegundos)
Mediana: tiempo medio de respuesta de la solicitud en el periodo de tiempo actual (unidad: milisegundos)
req/s: número de peticiones por segundo, es decir, QPS
failures/s: número medio de peticiones fallidas por segundo en el periodo de tiempo actual.
Descarga de scripts y archivos ejecutables
benchmark para Ubuntu
benchmark-mac para macOS
Lo que viene a continuación
Con el lanzamiento oficial de Milvus 2.1, hemos preparado una serie de blogs presentando las nuevas características. Lea más en esta serie de blogs:
- Cómo utilizar datos de cadenas para potenciar sus aplicaciones de búsqueda por similitud
- Uso de Milvus integrado para instalar y ejecutar Milvus con Python de forma instantánea
- Aumente el rendimiento de lectura de su base de datos vectorial con réplicas en memoria
- Comprender el nivel de consistencia en la base de datos vectorial Milvus
- ¿Cómo garantiza la base de datos vectorial de Milvus la seguridad de los datos?
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word