Relatório de testes de referência do Milvus 2.2
Este relatório mostra os principais resultados dos testes do Milvus 2.2.0. O seu objetivo é fornecer uma imagem do desempenho de pesquisa do Milvus 2.2.0, especialmente no que diz respeito à capacidade de aumentar e diminuir a escala.
Recentemente, efectuámos um teste de referência em relação ao Milvus 2.2.3 e obtivemos os seguintes resultados principais:
- Uma redução de 2,5x na latência de pesquisa
- Um aumento de 4,5x no QPS
- Pesquisa de similaridade em escala de bilhões com pouca degradação de desempenho
- Escalabilidade linear ao usar várias réplicas
Para obter detalhes, consulte este whitepaper e o código de teste de benchmark relacionado.
Resumo
- Em comparação com o Milvus 2.1, o QPS do Milvus 2.2.0 aumenta mais de 48% no modo de cluster e mais de 75% no modo autónomo.
- O Milvus 2.2.0 tem uma capacidade impressionante de escalar para cima e para fora:
- O QPS aumenta linearmente ao expandir os núcleos da CPU de 8 para 32.
- O QPS aumenta linearmente quando se expandem as réplicas Querynode de 1 para 8.
Terminologia
Clique para ver os detalhes dos termos usados no teste
Termo
Descrição
nq
Número de vectores a pesquisar num pedido de pesquisa
topk
Número de vectores mais próximos a obter para cada vetor (em nq) num pedido de pesquisa
ef
Um parâmetro de pesquisa específico do índice HNSW
RT
Tempo de resposta desde o envio do pedido até à receção da resposta
QPS
Número de pedidos de pesquisa que são processados com êxito por segundo
Ambiente de teste
Todos os testes são efectuados nos seguintes ambientes.
Ambiente de hardware
Hardware | Especificação |
---|---|
CPU | CPU Intel® Xeon® Gold 6226R a 2,90GHz |
Memória | 16*\32 GB RDIMM, 3200 MT/s |
SSD | SATA 6 Gbps |
Ambiente de software
Software | Versão do software |
---|---|
Milvus | v2.2.0 |
Milvus GO SDK | v2.2.0 |
Esquema de implantação
- As instâncias do Milvus (autónomas ou em cluster) são implementadas através do Helm num cluster Kubernetes baseado em máquinas físicas ou virtuais.
- Os diferentes testes variam apenas no número de núcleos de CPU, no tamanho da memória e no número de réplicas (nós de trabalho), o que só se aplica aos clusters Milvus.
- As configurações não especificadas são idênticas às configurações padrão.
- As dependências do Milvus (MinIO, Pulsar e Etcd) armazenam dados no SSD local em cada nó.
- Os pedidos de pesquisa são enviados para as instâncias do Milvus através do Milvus GO SDK.
Conjuntos de dados
O teste usa o conjunto de dados de código aberto SIFT (128 dimensões) do ANN-Benchmarks.
Pipeline de teste
- Inicie uma instância do Milvus pelo Helm com as respectivas configurações de servidor, conforme listado em cada teste.
- Ligue-se à instância do Milvus através do Milvus GO SDK e obtenha os resultados dos testes correspondentes.
- Criar uma coleção.
- Inserir 1 milhão de vectores SIFT. Crie um índice HNSW e configure os parâmetros do índice, definindo
M
para8
eefConstruction
para200
. - Carregue a coleção.
- Pesquise com diferentes números concorrentes com os parâmetros de pesquisa
nq=1, topk=1, ef=64
, a duração de cada concorrência é de, pelo menos, 1 hora.
Resultados do teste
Milvus 2.2.0 v.s. Milvus 2.1.0
Cluster
Configurações do servidor (cluster)
yaml queryNode: replicas: 1 resources: limits: cpu: "12.0" memory: 8Gi requests: cpu: "12.0" memory: 8Gi
Desempenho da pesquisa
Milvus | QPS | RT(TP99) / ms | RT(TP50) / ms | falha/s |
---|---|---|---|---|
2.1.0 | 6904 | 59 | 28 | 0 |
2.2.0 | 10248 | 63 | 24 | 0 |
Desempenho da pesquisa em cluster
Autónomo
Configurações de servidor (autónomo)
yaml standalone: replicas: 1 resources: limits: cpu: "12.0" memory: 16Gi requests: cpu: "12.0" memory: 16Gi
Desempenho da pesquisa
Milvus | QPS | RT(TP99) / ms | RT(TP50) / ms | falha/s |
---|---|---|---|---|
2.1.0 | 4287 | 104 | 76 | 0 |
2.2.0 | 7522 | 127 | 79 | 0 |
Desempenho da pesquisa autónoma
Milvus 2.2.0 Aumento de escala
Expanda os núcleos de CPU num Querynode para verificar a capacidade de aumento de escala.
Configurações 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
Desempenho da pesquisa
Núcleos de CPU | Número simultâneo | QPS | RT(TP99) / ms | RT(TP50) / ms | falha/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 |
Desempenho de pesquisa por núcleos de CPU Querynode
Milvus 2.2.0 Expansão
Expanda mais réplicas com mais Querynodes para verificar a capacidade de expansão.
Nota: o número de Querynodes é igual a replica_number
ao carregar a coleção.
Configurações do 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 simultâneo | QPS | RT(TP99) / ms | RT(TP50) / ms | falha/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 |
Desempenho da pesquisa por réplicas Querynode
O que vem a seguir
- Tente realizar os testes de benchmark do Milvus 2.2.0 por conta própria, consultando este guia, exceto que você deve usar o Milvus 2.2 e o Pymilvus 2.2 neste guia.