Alibaba Cloud AISearch for Milvus (Milvus) ofrece distintos tipos de Compute Unit (CU) y una cantidad flexible de nodos de cómputo (Query Node). Use esta referencia para elegir un tipo de instancia que se ajuste a su escenario de negocio.
Tipos de CU
Los nodos de cómputo de Milvus admiten los siguientes tipos de CU:
Optimizado para cómputo: ideal para cargas de trabajo con QPS alto y baja latencia, como búsquedas, sistemas de recomendación, IA generativa y chatbots.
-
Optimizado para almacenamiento: más indicado para grandes volúmenes de datos con requisitos moderados de rendimiento en las búsquedas. Las instancias optimizadas para almacenamiento ofrecen cuatro veces la capacidad de almacenamiento de las instancias optimizadas para cómputo. Además, entregan un rendimiento excelente que cubre las necesidades de la mayoría de los escenarios. Son ideales para la recuperación de datos no estructurados a gran escala, la detección de derechos de autor y la preparación de datos de modelos.
ImportanteActualmente, las CU optimizadas para almacenamiento presentan las siguientes limitaciones:
Solo se admite el escalado horizontal (scale-out y scale-in). No se admiten las actualizaciones ni reducciones verticales. Confirme cuidadosamente las especificaciones de la CU antes de la compra.
Se recomienda únicamente el índice DiskANN. Este tipo de índice solo admite datos vectoriales de tipo float. Para medir la distancia entre vectores, solo se admite la distancia euclidiana (L2), el producto interno (IP) o la similitud del coseno (COSINE).
Comparación de capacidad de almacenamiento
|
Tipo de CU |
Tipo de índice |
Especificaciones de la CU |
Referencia de capacidad de datos vectoriales (basada en datos vectoriales SIFT de 128 dimensiones) |
Referencia de capacidad de datos vectoriales (basada en datos vectoriales GIST de 960 dimensiones) |
|
Optimizado para cómputo |
HNSW M:30 efConstruction:360 |
4 vCPU 16 GiB (4 CUs) |
16 millones |
3 millones |
|
8 vCPU 32 GiB (8 CUs) |
32 millones |
6 millones |
||
|
16 vCPU 64 GiB (16 CUs) |
64 millones |
12 millones |
||
|
32 vCPU 128 GiB (32 CUs) |
128 millones |
24 millones |
||
|
Optimizado para almacenamiento |
DiskANN |
8 vCPU 32 GiB (8 CUs) |
120 millones |
23 millones |
|
16 vCPU 64 GiB (16 CUs) |
240 millones |
46 millones |
||
|
32 vCPU 128 GiB (32 CUs) |
480 millones |
92 millones |
Los datos de la tabla provienen de pruebas de rendimiento y sirven como referencia para evaluar la capacidad.
El conjunto de datos de prueba contiene únicamente claves primarias y datos vectoriales, sin campos escalares. Las claves primarias son números enteros positivos autoincrementales que comienzan en cero y se convierten a cadenas de texto. Dado que los campos escalares son esenciales en la mayoría de los entornos de producción y también consumen almacenamiento, la cantidad real de vectores que puede almacenar será menor que los valores de la tabla.
Comparación de rendimiento de recuperación
|
Tipo de CU |
Especificaciones de la CU |
Tipo de índice |
topk=50 |
topk=100 |
topk=250 |
topk=1000 |
||||
|
QPS |
RT_p99 |
QPS |
RT_p99 |
QPS |
RT_p99 |
QPS |
RT_p99 |
|||
|
Optimizado para cómputo |
16 vCPU 64 GiB (16 CUs) |
HNSW M:30 efConstruction:360 |
2000 |
< 10 ms |
1200 |
< 10 ms |
550 |
< 15 ms |
150 |
< 30 ms |
|
Optimizado para almacenamiento |
16 vCPU 64 GiB (16 CUs) |
DiskANN |
700 |
< 15 ms |
550 |
< 20 ms |
200 |
< 30 ms |
60 |
< 50 ms |
Los datos se basan en los resultados de las pruebas del conjunto de datos Cohere (10 millones de vectores, 768 dimensiones). El rendimiento real varía según la distribución de datos de cada conjunto.
RT_p99 se mide al ejecutar 1,000 consultas de forma secuencial y tomar el percentil 99 del tiempo de respuesta.
Los datos de prueba contienen únicamente claves primarias y datos vectoriales, sin campos escalares. Las claves primarias son números enteros positivos autoincrementales que comienzan en cero. Se utiliza HNSW para las instancias optimizadas para cómputo y DiskANN para las optimizadas para almacenamiento.
Milvus optimiza periódicamente los índices vectoriales en segundo plano. Este proceso suele completarse en un plazo de 3 horas después de escribir los datos. Una vez finalizado, el sistema alcanza su rendimiento óptimo.
Cantidad de nodos de cómputo
Puede escalar la cantidad de nodos de cómputo (Query Nodes) de 1 a 50. El QPS aumenta de forma lineal conforme crece el número de nodos. Contar con más nodos también mejora la disponibilidad del servicio, por lo que, en entornos de producción que requieren alta disponibilidad, utilice como mínimo 2 nodos.
Análisis de escenarios
Suponga que está construyendo un sistema de recuperación de imágenes que contiene 20 millones de imágenes. Cada imagen se representa mediante un vector de 768 dimensiones. Su objetivo es procesar 2,000 solicitudes de búsqueda por segundo y devolver los 100 mejores resultados en menos de 10 milisegundos. Evalúe sus opciones de la siguiente manera:
Evaluación de latencia: elija un tipo de CU según sus requisitos de latencia. Por ejemplo, si necesita una latencia inferior a 10 milisegundos, la CU optimizada para cómputo es el único tipo que cumple este requisito.
Consideración de capacidad: calcule la cantidad de CU necesarias según el volumen de datos y las dimensiones. Una sola CU optimizada para cómputo de 16 vCPU 64 GiB (16 CUs) procesa 12 millones de vectores de 960 dimensiones. Para alojar 20 millones de vectores de 768 dimensiones, debe configurar como mínimo dos CU de este tipo, lo que suma un total de 32 CU.
Validación de rendimiento: compruebe el throughput de cada nodo para el valor top-k especificado. Por ejemplo, con top-k configurado en 100, un nodo optimizado para cómputo entrega un QPS de 1,200. Para alcanzar un rendimiento sostenido de 2,000 QPS, es necesario duplicar la cantidad de nodos.
Con base en este análisis, elija CU optimizadas para cómputo y configure cuatro nodos, cada uno con especificaciones de 16 vCPU 64 GiB (16 CUs).