Informe de pruebas comparativas de Milvus 2.2
Este informe muestra los principales resultados de las pruebas de Milvus 2.2.0. Su objetivo es proporcionar una imagen del rendimiento de búsqueda de Milvus 2.2.0, especialmente en la capacidad de ampliación y reducción.
Recientemente hemos realizado una prueba comparativa con Milvus 2.2.3 y hemos obtenido los siguientes resultados clave:
- Una reducción de 2,5 veces en la latencia de búsqueda
- Aumento de 4,5 veces en QPS
- Búsqueda de similitudes a escala de miles de millones con escasa degradación del rendimiento
- Escalabilidad lineal al utilizar múltiples réplicas
Para más detalles, consulte este documento técnico y el código de prueba de referencia relacionado.
Resumen
- En comparación con Milvus 2.1, el QPS de Milvus 2.2.0 aumenta más de un 48% en modo clúster y más de un 75% en modo autónomo.
- Milvus 2.2.0 tiene una impresionante capacidad de ampliación y reducción:
- QPS aumenta linealmente cuando se amplían los núcleos de CPU de 8 a 32.
- QPS aumenta linealmente cuando se amplían las réplicas Querynode de 1 a 8.
Terminología
Haz clic para ver los detalles de los términos utilizados en la prueba
Término
Descripción
nq
Número de vectores que se buscan en una petición de búsqueda
topk
Número de los vectores más cercanos que se recuperarán para cada vector (en nq) en una petición de búsqueda
ef
Parámetro de búsqueda específico del índice HNSW
RT
Tiempo de respuesta desde el envío de la solicitud hasta la recepción de la respuesta
QPS
Número de solicitudes de búsqueda procesadas con éxito por segundo
Entorno de prueba
Todas las pruebas se realizan en los siguientes entornos.
Entorno de hardware
Hardware | Especificación |
---|---|
CPU | CPU Intel® Xeon® Gold 6226R a 2,90 GHz |
Memoria | 16*32 GB RDIMM, 3200 MT/s |
SSD | SATA 6 Gbps |
Entorno de software
Software | Versión |
---|---|
Milvus | v2.2.0 |
Milvus GO SDK | v2.2.0 |
Esquema de despliegue
- Las instancias de Milvus (independientes o en clúster) se despliegan a través de Helm en un clúster Kubernetes basado en máquinas físicas o virtuales.
- Las diferentes pruebas simplemente varían en el número de núcleos de CPU, el tamaño de la memoria y el número de réplicas (nodos trabajadores), que sólo se aplica a los clústeres Milvus.
- Las configuraciones no especificadas son idénticas a las configuraciones por defecto.
- Las dependencias de Milvus (MinIO, Pulsar y Etcd) almacenan los datos en el SSD local de cada nodo.
- Las peticiones de búsqueda se envían a las instancias Milvus a través de Milvus GO SDK.
Conjuntos de datos
La prueba utiliza el conjunto de datos de código abierto SIFT (128 dimensiones) de ANN-Benchmarks.
Proceso de prueba
- Inicie una instancia de Milvus mediante Helm con las configuraciones de servidor respectivas que se indican en cada prueba.
- Conéctese a la instancia de Milvus mediante Milvus GO SDK y obtenga los resultados de las pruebas correspondientes.
- Cree una colección.
- Inserte 1 millón de vectores SIFT. Cree un índice HNSW y configure los parámetros del índice estableciendo
M
en8
yefConstruction
en200
. - Cargue la colección.
- Busque con diferentes números concurrentes con los parámetros de búsqueda
nq=1, topk=1, ef=64
, la duración de cada concurrencia es de al menos 1 hora.
Resultados de la prueba
Milvus 2.2.0 v.s. Milvus 2.1.0
Clúster
Configuraciones de servidor (cluster)
yaml queryNode: replicas: 1 resources: limits: cpu: "12.0" memory: 8Gi requests: cpu: "12.0" memory: 8Gi
Rendimiento de la búsqueda
Milvus | QPS | RT(TP99) / ms | RT(TP50) / ms | fallo/s |
---|---|---|---|---|
2.1.0 | 6904 | 59 | 28 | 0 |
2.2.0 | 10248 | 63 | 24 | 0 |
Rendimiento de la búsqueda en clúster
Independiente
Configuraciones de servidor (autónomo)
yaml standalone: replicas: 1 resources: limits: cpu: "12.0" memory: 16Gi requests: cpu: "12.0" memory: 16Gi
Rendimiento de búsqueda
Milvus | QPS | RT(TP99) / ms | RT(TP50) / ms | fallo/s |
---|---|---|---|---|
2.1.0 | 4287 | 104 | 76 | 0 |
2.2.0 | 7522 | 127 | 79 | 0 |
Rendimiento de la búsqueda autónoma
Milvus 2.2.0 Ampliación
Amplíe los núcleos de CPU en un Querynode para comprobar la capacidad de ampliación.
Configuraciones de servidor (cluster
)yaml queryNode: replicas: 1 resources: limits: cpu: "8.0" /"12.0" /"16.0" /"32.0" memory: 8Gi requests: cpu: "8.0" /"12.0" /"16.0" /"32.0" memory: 8Gi
Rendimiento de búsqueda
Núcleos CPU | Número concurrente | QPS | RT(TP99) / ms | RT(TP50) / ms | fallo/s |
---|---|---|---|---|---|
8 | 500 | 7153 | 127 | 83 | 0 |
12 | 300 | 10248 | 63 | 24 | 0 |
16 | 600 | 14135 | 85 | 42 | 0 |
32 | 600 | 20281 | 63 | 28 | 0 |
Rendimiento de búsqueda por núcleos de CPU Querynode
Milvus 2.2.0 Ampliación
Expanda más réplicas con más Querynodes para comprobar la capacidad de escalado.
Nota: el número de Querynodes es igual a replica_number
cuando se carga la colección.
Configuraciones de servidor (cluster)
yaml queryNode: replicas: 1 / 2 / 4 / 8 resources: limits: cpu: "8.0" memory: 8Gi requests: cpu: "8.0" memory: 8Gi
Réplicas | Número concurrente | QPS | RT(TP99) / ms | RT(TP50) / ms | fallo/s |
---|---|---|---|---|---|
1 | 500 | 7153 | 127 | 83 | 0 |
2 | 500 | 15903 | 105 | 27 | 0 |
4 | 800 | 19281 | 109 | 40 | 0 |
8 | 1200 | 30655 | 93 | 38 | 0 |
Rendimiento de la búsqueda por réplicas de Querynode
Lo que sigue
- Intente realizar las pruebas de referencia de Milvus 2.2.0 por su cuenta consultando esta guía, con la salvedad de que debería utilizar en su lugar Milvus 2.2 y Pymilvus 2.2 en esta guía.