🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Revelando o Milvus 2.3: uma versão histórica que oferece suporte para GPU, Arm64, CDC e muitos outros recursos altamente esperados

Revelando o Milvus 2.3: uma versão histórica que oferece suporte para GPU, Arm64, CDC e muitos outros recursos altamente esperados

  • News
August 28, 2023
Owen Jiao, Fendy Feng

Notícias empolgantes! Depois de oito meses de esforços concertados, temos o prazer de anunciar o lançamento do Milvus 2.3, uma versão histórica que traz inúmeras funcionalidades altamente antecipadas, incluindo suporte para GPU, Arm64, upsert, captura de dados de alteração, índice ScaNN e tecnologia MMap. O Milvus 2.3 também apresenta melhor desempenho de consulta, balanceamento de carga e agendamento mais robustos, além de melhor observabilidade e operabilidade.

Junte-se a mim para analisar estas novas funcionalidades e melhorias e saiba como pode beneficiar desta versão.

Suporte para índice GPU que leva a 3-10 vezes mais rápido em QPS

O índice GPU é uma funcionalidade muito aguardada pela comunidade Milvus. Graças a uma grande colaboração com os engenheiros da Nvidia, o Milvus 2.3 suportou a indexação GPU com o robusto algoritmo RAFT adicionado ao Knowhere, o motor de indexação do Milvus. Com o suporte a GPU, o Milvus 2.3 é mais de três vezes mais rápido em QPS do que as versões anteriores que usam o índice HNSW da CPU e quase dez vezes mais rápido para conjuntos de dados específicos que exigem computação pesada.

Suporte Arm64 para acomodar a crescente procura dos utilizadores

As CPUs Arm estão a tornar-se cada vez mais populares entre os fornecedores e os programadores de nuvens. Para atender a essa demanda crescente, o Milvus agora fornece imagens Docker para a arquitetura ARM64. Com este novo suporte de CPU, os utilizadores de MacOS podem construir as suas aplicações com o Milvus de forma mais simples.

Suporte Upsert para uma melhor experiência do utilizador

O Milvus 2.3 introduz uma melhoria notável ao suportar a operação upsert. Esta nova funcionalidade permite aos utilizadores atualizar ou inserir dados sem problemas e permite-lhes realizar ambas as operações num único pedido através da interface Upsert. Esta funcionalidade simplifica a gestão de dados e traz eficiência para a mesa.

Nota:

  • A funcionalidade de upsert não se aplica a IDs de incremento automático.
  • Upsert é implementado como uma combinação de delete e insert, o que pode resultar em alguma perda de desempenho. Recomendamos a utilização de insert se utilizar o Milvus em cenários de escrita intensa.

Pesquisa por intervalo para resultados mais precisos

O Milvus 2.3 permite aos utilizadores especificar a distância entre o vetor de entrada e os vectores armazenados no Milvus durante uma consulta. Milvus então retorna todos os resultados correspondentes dentro do intervalo definido. Abaixo está um exemplo de especificação da distância de pesquisa usando o recurso de pesquisa de intervalo.

// add radius and range_filter to params in search_params
search_params = {"params": {"nprobe": 10, "radius": 10, "range_filter" : 20}, "metric_type": "L2"}
res = collection.search(
vectors, "float_vector", search_params, topK,
"int64 > 100", output_fields=["int64", "float"]
)

Neste exemplo, o utilizador requer que o Milvus devolva vectores a uma distância de 10 a 20 unidades do vetor de entrada.

Nota: As diferentes métricas de distância variam na forma como calculam as distâncias, resultando em intervalos de valores e estratégias de ordenação distintos. Por conseguinte, é essencial compreender as suas caraterísticas antes de utilizar a funcionalidade de pesquisa de intervalos.

Índice ScaNN para maior velocidade de consulta

O Milvus 2.3 agora suporta o índice ScaNN, um índice de vizinho mais próximo aproximado (ANN) de código aberto desenvolvido pelo Google. O índice ScaNN demonstrou um desempenho superior em vários benchmarks, superando o HNSW em cerca de 20% e sendo aproximadamente sete vezes mais rápido que o IVFFlat. Com o suporte para o índice ScaNN, o Milvus atinge uma velocidade de consulta muito mais rápida em comparação com versões anteriores.

Índice crescente para um desempenho de consulta estável e melhor

O Milvus inclui duas categorias de dados: dados indexados e dados em fluxo contínuo. O Milvus pode usar índices para pesquisar rapidamente dados indexados, mas só pode pesquisar brutalmente dados de streaming linha a linha, o que pode afetar o desempenho. O Milvus 2.3 introduz o Growing Index, que cria automaticamente índices em tempo real para dados de fluxo contínuo para melhorar o desempenho da consulta.

Iterador para recuperação de dados em lotes

No Milvus 2.3, a Pymilvus introduziu uma interface iteradora que permite aos utilizadores recuperar mais de 16.384 entidades numa pesquisa ou numa pesquisa de intervalo. Esta funcionalidade é útil quando os utilizadores necessitam de exportar dezenas de milhares ou mesmo mais vectores em lotes.

Suporte para MMap para aumentar a capacidade

MMap é uma chamada do sistema UNIX usada para mapear arquivos e outros objetos na memória. O Milvus 2.3 suporta MMap, que permite aos utilizadores carregar dados em discos locais e mapeá-los para a memória, aumentando assim a capacidade de uma única máquina.

Os resultados dos nossos testes indicam que, utilizando a tecnologia MMap, o Milvus pode duplicar a sua capacidade de dados, limitando a degradação do desempenho a 20%. Esta abordagem reduz significativamente os custos globais, tornando-a particularmente vantajosa para os utilizadores com um orçamento apertado que não se importam de comprometer o desempenho.

Suporte CDC para uma maior disponibilidade do sistema

O Change Data Capture (CDC) é uma funcionalidade comummente utilizada nos sistemas de bases de dados que captura e replica as alterações de dados para um destino designado. Com a funcionalidade CDC, o Milvus 2.3 permite aos utilizadores sincronizar dados entre centros de dados, fazer cópias de segurança de dados incrementais e migrar dados sem problemas, tornando o sistema mais disponível.

Além dos recursos acima, o Milvus 2.3 introduz uma interface de contagem para calcular com precisão o número de linhas de dados armazenados em uma coleção em tempo real, suporta a métrica Cosine para medir a distância do vetor e mais operações em matrizes JSON. Para mais funcionalidades e informações detalhadas, consulte as notas de lançamento do Milvus 2.3.

Melhorias e correcções de erros

Para além das novas funcionalidades, o Milvus 2.3 inclui muitos melhoramentos e correcções de erros das versões anteriores.

Melhoria do desempenho da filtragem de dados

O Milvus executa a filtragem escalar antes da pesquisa vetorial em consultas de dados híbridas escalares e vectoriais para obter resultados mais precisos. No entanto, o desempenho da indexação pode diminuir se o utilizador tiver filtrado demasiados dados após a filtragem escalar. No Milvus 2.3, optimizámos a estratégia de filtragem do HNSW para resolver este problema, resultando num melhor desempenho das consultas.

Aumento do uso de CPU multi-core

A busca aproximada mais próxima (ANN) é uma tarefa computacionalmente intensiva que requer recursos massivos de CPU. Em versões anteriores, o Milvus só podia utilizar cerca de 70% dos recursos disponíveis da CPU multi-core. No entanto, com a última versão, o Milvus superou essa limitação e pode utilizar todos os recursos disponíveis da CPU multi-core, resultando em melhor desempenho da consulta e redução do desperdício de recursos.

QueryNode refatorado

O QueryNode é um componente crucial no Milvus que é responsável pela pesquisa vetorial. No entanto, em versões anteriores, o QueryNode tinha estados complexos, filas de mensagens duplicadas, uma estrutura de código desorganizada e mensagens de erro não intuitivas.

No Milvus 2.3, actualizámos o QueryNode introduzindo uma estrutura de código sem estado e removendo a fila de mensagens para apagar dados. Estas actualizações resultam num menor desperdício de recursos e numa pesquisa vetorial mais rápida e estável.

Filas de mensagens melhoradas baseadas em NATS

Construímos o Milvus numa arquitetura baseada em registos e, em versões anteriores, utilizámos o Pulsar e o Kafka como os principais corretores de registos. No entanto, essa combinação enfrentou três desafios principais:

  • Era instável em situações de múltiplos tópicos.
  • Consumia recursos quando estava ocioso e tinha dificuldades para deduplicar mensagens.
  • O Pulsar e o Kafka estão intimamente ligados ao ecossistema Java, pelo que a sua comunidade raramente mantém e actualiza os seus SDKs Go.

Para resolver estes problemas, combinámos o NATS e o Bookeeper como o nosso novo corretor de registos para o Milvus, que se adapta melhor às necessidades dos utilizadores.

Balanceador de carga otimizado

O Milvus 2.3 adoptou um algoritmo de balanceamento de carga mais flexível baseado nas cargas reais do sistema. Este algoritmo optimizado permite aos utilizadores detetar rapidamente falhas de nós e cargas desequilibradas e ajustar os agendamentos em conformidade. De acordo com os resultados dos nossos testes, o Milvus 2.3 consegue detetar falhas, cargas desequilibradas, estados anormais dos nós e outros eventos em segundos e fazer ajustes prontamente.

Para mais informações sobre o Milvus 2.3, consulte as notas de lançamento do Milvus 2.3.

Actualizações de ferramentas

Também actualizámos o Birdwatcher e o Attu, duas ferramentas valiosas para operar e manter o Milvus, juntamente com o Milvus 2.3.

Atualização do Birdwatcher

Actualizámos o Birdwatcher, a ferramenta de depuração do Milvus, introduzindo inúmeras funcionalidades e melhorias, incluindo:

  • API RESTful para uma integração perfeita com outros sistemas de diagnóstico.
  • Suporte ao comando PProf para facilitar a integração com a ferramenta Go pprof.
  • Recursos de análise de uso de armazenamento.
  • Funcionalidade de análise de registo eficiente.
  • Suporte para visualização e modificação de configurações no etcd.

Atualização do Attu

Lançámos uma interface totalmente nova para o Attu, uma ferramenta de administração de bases de dados vectoriais tudo-em-um. A nova interface tem um design mais simples e é mais fácil de compreender.

Para mais pormenores, consulte as notas de lançamento do Milvus 2.3.

Vamos manter-nos em contacto!

Se tiver perguntas ou comentários sobre o Milvus, não hesite em contactar-nos através do Twitter ou do LinkedIn. Também pode juntar-se ao nosso canal Slack para conversar diretamente com os nossos engenheiros e a comunidade ou visitar o nosso horário de expediente às terças-feiras!

Like the article? Spread the word

Continue Lendo