GPU_CAGRA
O índice GPU_CAGRA é um índice baseado em gráficos optimizado para GPUs. A utilização de GPUs de grau de inferência para executar a versão GPU do Milvus pode ser mais económica em comparação com a utilização de GPUs de grau de treino dispendiosas.
Criar índice
Para construir um índice GPU_CAGRA num campo vetorial em Milvus, utilize o método add_index(), especificando os parâmetros index_type, metric_type, e parâmetros adicionais para o í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
)
Nesta configuração:
index_type: O tipo de índice a construir. Neste exemplo, defina o valor paraGPU_CAGRA.metric_type: O método utilizado para calcular a distância entre vectores. Para obter detalhes, consulte Tipos de métricas.params: Opções de configuração adicionais para criar o índice. Para saber mais sobre os parâmetros de construção disponíveis para o índiceGPU_CAGRA, consulte Parâmetros de construção do índice.
Assim que os parâmetros do índice estiverem configurados, pode criar o índice utilizando diretamente o método create_index() ou passando os parâmetros do índice no método create_collection. Para obter detalhes, consulte Criar coleção.
Pesquisar no índice
Depois de o índice ser criado e as entidades serem inseridas, pode efetuar pesquisas de semelhança no í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
)
Nesta configuração:
params: Opções de configuração adicionais para pesquisar no índice. Para saber mais sobre os parâmetros de pesquisa disponíveis para o índiceGPU_CAGRA, consulte Parâmetros de pesquisa específicos do índice.
Ativar a pesquisa da CPU no momento do carregamentoCompatible with Milvus 2.6.4+
Para ativar a pesquisa da CPU dinamicamente em tempo de carregamento, edite a seguinte configuração em milvus.yaml:
# milvus.yaml
knowhere:
GPU_CAGRA:
load:
adapt_for_cpu: true
Comportamento
Quando
load.adapt_for_cpué definido comotrue, Milvus converte o índice GPU_CAGRA em um formato executável pela CPU (semelhante a HNSW) durante o carregamento.As operações de pesquisa subsequentes são executadas na CPU, mesmo que o índice tenha sido originalmente construído para GPU.
Se omitido ou falso, o índice permanece na GPU e as pesquisas são executadas na GPU.
Use a adaptação de CPU em tempo de carga em ambientes híbridos ou sensíveis a custos em que os recursos de GPU são reservados para a criação de índices, mas as pesquisas são executadas na CPU.
Parâmetros de índice
Esta secção fornece uma visão geral dos parâmetros utilizados para criar um índice e efetuar pesquisas no índice.
Parâmetros de criação de índice
A tabela a seguir lista os parâmetros que podem ser configurados em params ao criar um índice.
Parâmetro |
Descrição |
Valor predefinido |
|---|---|---|
|
Afecta a chamada e o tempo de construção ao determinar o grau do gráfico antes da poda. Os valores recomendados são |
|
|
Afeta o desempenho da pesquisa e a recuperação ao definir o grau do gráfico após a poda. Uma diferença maior entre esses dois graus resulta em um tempo de construção mais longo. Seu valor deve ser menor que o valor de |
|
|
Seleciona o algoritmo de geração de gráficos antes da poda. Valores possíveis:
|
|
|
Decide se o conjunto de dados original deve ser armazenado em cache na memória da GPU. Valores possíveis:
|
|
|
Decide se a GPU deve ser usada para construção de índice e a CPU para pesquisa. A definição deste parâmetro para |
|
Parâmetros de pesquisa específicos do índice
A tabela a seguir lista os parâmetros que podem ser configurados em search_params.params ao pesquisar no índice.
Parâmetro |
Descrição |
Valor por defeito |
|---|---|---|
|
Determina o tamanho dos resultados intermédios mantidos durante a pesquisa. Um valor maior pode melhorar a recuperação à custa do desempenho da pesquisa. Deve ser pelo menos igual ao valor final do top-k (limite) e é tipicamente uma potência de 2 (por exemplo, 16, 32, 64, 128). |
Vazio |
|
Especifica o número de pontos de entrada no gráfico CAGRA durante a pesquisa. Aumentar este valor pode melhorar a recordação, mas pode afetar o desempenho da pesquisa (por exemplo, 1, 2, 4, 8, 16, 32). |
Vazio |
|
Controla o processo de iteração da pesquisa. Por defeito, estão definidos para |
|
|
Especifica o número de threads CUDA usadas para calcular a distância métrica na GPU. Os valores comuns são uma potência de 2 até 32 (por exemplo, 2, 4, 8, 16, 32). Tem um impacto menor no desempenho da pesquisa. O valor predefinido é |
|
|
Especifica o compromisso tempo de consulta/precisão. Um valor Este parâmetro é obrigatório se definir |
|