GPU_CAGRA
L'index GPU_CAGRA est un index basé sur des graphes et optimisé pour les GPU. L'utilisation de GPU de type « inférence » pour exécuter la version GPU de Milvus peut s'avérer plus rentable que l'utilisation de GPU de type « entraînement », plus coûteux.
Créer un index
Pour créer un index « GPU_CAGRA » sur un champ vectoriel dans Milvus, utilisez la méthode ` add_index() ` en spécifiant les paramètres ` index_type`, ` metric_type` et les paramètres supplémentaires de l’index.
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
)
Dans cette configuration :
index_type: Le type d’index à créer. Dans cet exemple, définissez la valeur sur `GPU_CAGRA`.metric_type: Méthode utilisée pour calculer la distance entre les vecteurs. Pour plus de détails, consultez la section Types de métriques.params: Options de configuration supplémentaires pour la création de l’index. Pour en savoir plus sur les paramètres de création disponibles pour l’index «GPU_CAGRA», consultez la section « Paramètres de création d’index ».
Une fois les paramètres de l'index configurés, vous pouvez créer l'index en utilisant directement la méthode ` create_index() ` ou en transmettant les paramètres de l'index à la méthode ` create_collection `. Pour plus de détails, consultez la section Créer une collection.
Recherche dans l’index
Une fois l’index créé et les entités insérées, vous pouvez effectuer des recherches de similarité sur l’index.
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
)
Dans cette configuration :
params: Options de configuration supplémentaires pour la recherche sur l’index. Pour en savoir plus sur les paramètres de recherche disponibles pour l’index «GPU_CAGRA», consultez la section « Paramètres de recherche spécifiques à l’index ».
Activer la recherche CPU au moment du chargementCompatible with Milvus 2.6.4+
Pour activer dynamiquement la recherche CPU au moment du chargement, modifiez la configuration suivante dans milvus.yaml:
# milvus.yaml
knowhere:
GPU_CAGRA:
load:
adapt_for_cpu: true
Comportement
Lorsque l’option «
load.adapt_for_cpu» est définie sur «true», Milvus convertit l’index GPU_CAGRA en un format exécutable sur CPU (de type HNSW) lors du chargement.Les opérations de recherche suivantes sont exécutées sur le CPU, même si l’index a été initialement construit pour le GPU.
Si cette option est omise ou définie sur « false », l’index reste sur le GPU et les recherches s’exécutent sur le GPU.
Utilisez l’adaptation au CPU au moment du chargement dans des environnements hybrides ou sensibles aux coûts, où les ressources du GPU sont réservées à la création d’index mais où les recherches s’exécutent sur le CPU.
Paramètres d’index
Cette section présente une vue d’ensemble des paramètres utilisés pour la construction d’un index et l’exécution de recherches sur celui-ci.
Paramètres de création d’index
Le tableau suivant répertorie les paramètres pouvant être configurés dans params lors de la création d’un index.
Paramètre |
Description |
Valeur par défaut |
|---|---|---|
|
Influence le rappel et le temps de création en déterminant le degré du graphe avant l'élagage. Les valeurs recommandées sont |
|
|
Influence les performances de recherche et le taux de rappel en définissant le degré du graphe après élagage. Une différence importante entre ces deux degrés entraîne un temps de création plus long. Sa valeur doit être inférieure à celle de |
|
|
Sélectionne l’algorithme de génération du graphe avant l’élagage. Valeurs possibles :
|
|
|
Détermine s’il faut mettre en cache l’ensemble de données d’origine dans la mémoire du GPU. Valeurs possibles :
|
|
|
Détermine s’il faut utiliser le GPU pour la création d’index et le CPU pour la recherche. La configuration de ce paramètre sur « |
|
Paramètres de recherche spécifiques à l’index
Le tableau suivant répertorie les paramètres pouvant être configurés dans « search_params.params » lors d’une recherche sur l’index.
Paramètre |
Description |
Valeur par défaut |
|---|---|---|
|
Détermine la taille des résultats intermédiaires conservés pendant la recherche. Une valeur plus élevée peut améliorer le taux de rappel au détriment des performances de recherche. Elle doit être au moins égale à la valeur finale « top-k » (limite) et correspond généralement à une puissance de 2 (par exemple, 16, 32, 64, 128). |
Vide |
|
Spécifie le nombre de points d’entrée dans le graphe CAGRA pendant la recherche. Augmenter cette valeur peut améliorer le rappel mais peut avoir un impact sur les performances de recherche (par exemple : 1, 2, 4, 8, 16, 32). |
Vide |
|
Contrôle l’ampleur de l’échantillonnage aléatoire effectué par CAGRA lors du choix des points d’entrée initiaux pour la recherche dans le graphe. Une valeur plus élevée donne à CAGRA davantage de chances de partir de meilleurs points, ce qui améliore le rappel au prix d’une latence de recherche accrue. La valeur doit être au moins égale à |
|
|
Contrôle le processus d’itération de la recherche. Par défaut, ces paramètres sont définis sur |
|
|
Spécifie le nombre de threads CUDA utilisés pour calculer la distance métrique sur le GPU. Les valeurs courantes sont des puissances de 2 allant jusqu’à 32 (par exemple 2, 4, 8, 16, 32). Cela a un impact mineur sur les performances de recherche. La valeur par défaut est |
|
|
Définit le compromis entre temps de requête et précision. Une valeur plus élevée de « Ce paramètre est obligatoire si vous définissez |
|