GPU_CAGRA
El índice GPU_CAGRA es un índice basado en grafos optimizado para GPU. El uso de GPUs de grado inferencia para ejecutar la versión Milvus GPU puede ser más rentable en comparación con el uso de GPUs caras de grado entrenamiento.
Construir el índice
Para construir un índice GPU_CAGRA sobre un campo vectorial en Milvus, utilice el método add_index(), especificando el index_type, metric_type, y parámetros adicionales para el índice.
from pymilvus import MilvusClient
# Prepare index building params
index_params = MilvusClient.prepare_index_params()
index_params.add_index(
field_name="your_vector_field_name", # Name of the vector field to be indexed
index_type="GPU_CAGRA", # Type of the index to create
index_name="vector_index", # Name of the index to create
metric_type="L2", # Metric type used to measure similarity
params={
"intermediate_graph_degree": 64, # Affects recall and build time by determining the graph’s degree before pruning
"graph_degree": 32, # Affets search performance and recall by setting the graph’s degree after pruning
"build_algo": "IVF_PQ", # Selects the graph generation algorithm before pruning
"cache_dataset_on_device": "true", # Decides whether to cache the original dataset in GPU memory
"adapt_for_cpu": "false", # Decides whether to use GPU for index-building and CPU for search
} # Index building params
)
En esta configuración:
index_type: El tipo de índice a construir. En este ejemplo, establezca el valorGPU_CAGRA.metric_type: El método utilizado para calcular la distancia entre vectores. Para más detalles, consulte Tipos métricos.params: Opciones de configuración adicionales para construir el índice. Para conocer más parámetros de construcción disponibles para el índiceGPU_CAGRA, consulte Parámetros de construcción del índice.
Una vez configurados los parámetros del índice, puede crear el índice utilizando directamente el método create_index() o pasando los parámetros del índice en el método create_collection. Para más detalles, consulte Crear colección.
Búsqueda en el índice
Una vez creado el índice e insertadas las entidades, puede realizar búsquedas de similitud en el índice.
search_params = {
"params": {
"itopk_size": 16, # Determines the size of intermediate results kept during the search
"search_width": 8, # Specifies the number of entry points into the CAGRA graph during the search
}
}
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
anns_field="vector_field", # Vector field name
data=[[0.1, 0.2, 0.3, 0.4, 0.5]], # Query vector
limit=3, # TopK results to return
search_params=search_params
)
En esta configuración:
params: Opciones de configuración adicionales para la búsqueda en el índice. Para conocer más parámetros de búsqueda disponibles para el índiceGPU_CAGRA, consulte Parámetros de búsqueda específicos del índice.
Habilitar la búsqueda de CPU en tiempo de cargaCompatible with Milvus 2.6.4+
Para habilitar la búsqueda de CPU dinámicamente en tiempo de carga, edite la siguiente configuración en milvus.yaml:
# milvus.yaml
knowhere:
GPU_CAGRA:
load:
adapt_for_cpu: true
Comportamiento
Cuando
load.adapt_for_cpuse establece entrue, Milvus convierte el índice GPU_CAGRA en un formato ejecutable por la CPU (tipo HNSW) durante la carga.Las operaciones de búsqueda posteriores se ejecutan en la CPU, incluso si el índice se construyó originalmente para la GPU.
Si se omite o es falso, el índice permanece en la GPU y las búsquedas se ejecutan en la GPU.
Utilice la adaptación a la CPU durante la carga en entornos híbridos o sensibles a los costes en los que los recursos de la GPU se reservan para la creación de índices pero las búsquedas se ejecutan en la CPU.
Parámetros del índice
Esta sección proporciona una visión general de los parámetros utilizados para construir un índice y realizar búsquedas en él.
Parámetros de creación de índices
La siguiente tabla enumera los parámetros que pueden configurarse en params cuando se construye un índice.
Parámetro |
Descripción |
Valor predeterminado |
|---|---|---|
|
Afecta a la recuperación y al tiempo de construcción al determinar el grado del gráfico antes de la poda. Los valores recomendados son |
|
|
Afecta al rendimiento de la búsqueda y a la recuperación estableciendo el grado del gráfico después de la poda. Una mayor diferencia entre estos dos grados se traduce en un mayor tiempo de construcción. Su valor debe ser menor que el de |
|
|
Selecciona el algoritmo de generación del grafo antes de la poda. Valores posibles:
|
|
|
Decide si almacenar en caché el conjunto de datos original en la memoria de la GPU. Valores posibles:
|
|
|
Decide si se utiliza la GPU para la creación de índices y la CPU para la búsqueda. Si se establece este parámetro en |
|
Parámetros de búsqueda específicos del índice
La siguiente tabla enumera los parámetros que pueden configurarse en search_params.params cuando se realizan búsquedas en el índice.
Parámetro |
Descripción |
Valor por defecto |
|---|---|---|
|
Determina el tamaño de los resultados intermedios conservados durante la búsqueda. Un valor mayor puede mejorar la recuperación a expensas del rendimiento de la búsqueda. Debe ser al menos igual al valor final top-k (límite) y suele ser una potencia de 2 (por ejemplo, 16, 32, 64, 128). |
Vacío |
|
Especifica el número de puntos de entrada en el gráfico CAGRA durante la búsqueda. Aumentar este valor puede mejorar la recuperación, pero puede afectar al rendimiento de la búsqueda (por ejemplo, 1, 2, 4, 8, 16, 32). |
Vacío |
|
Controla el proceso de iteración de la búsqueda. Por defecto, se establecen en |
|
|
Especifica el número de subprocesos CUDA utilizados para calcular la distancia métrica en la GPU. Los valores habituales son una potencia de 2 hasta 32 (por ejemplo, 2, 4, 8, 16, 32). Tiene un impacto menor en el rendimiento de la búsqueda. El valor por defecto es |
|
|
Especifica el compromiso entre tiempo de búsqueda y precisión. Un valor más alto de Este parámetro es obligatorio si establece |
|