O que são Extensões Vectoriais Avançadas?
Máquinas conscientes e inteligentes que querem dominar o mundo são uma constante na ficção científica, mas na realidade os computadores modernos são muito obedientes. Sem que lhes seja dito, raramente sabem o que fazer com eles próprios. Os computadores executam tarefas com base em instruções, ou ordens, enviadas de um programa para um processador. No seu nível mais baixo, cada instrução é uma sequência de uns e zeros que descreve uma operação a executar por um computador. Tipicamente, nas linguagens de montagem dos computadores, cada instrução em linguagem de máquina corresponde a uma instrução do processador. A unidade central de processamento (CPU) baseia-se em instruções para efetuar cálculos e sistemas de controlo. Além disso, o desempenho da CPU é frequentemente medido em termos de capacidade de execução de instruções (por exemplo, tempo de execução).
O que são Extensões Vectoriais Avançadas?
As Extensões Vectoriais Avançadas (AVX) são um conjunto de instruções para microprocessadores que se baseiam na família x86 de arquitecturas de conjuntos de instruções. Proposto pela primeira vez pela Intel em março de 2008, o AVX obteve um amplo apoio três anos mais tarde com o lançamento da Sandy Bridge - uma microarquitectura utilizada na segunda geração de processadores Intel Core (por exemplo, Core i7, i5, i3) - e da microarquitectura concorrente da AMD também lançada em 2011, a Bulldozer.
O AVX introduziu um novo esquema de codificação, novas funcionalidades e novas instruções. O AVX2 expande a maioria das operações com números inteiros para 256 bits e introduz operações de multiplicação-acumulação fundidas (FMA). O AVX-512 expande o AVX para operações de 512 bits utilizando uma nova codificação de prefixo de extensão vetorial melhorada (EVEX).
Milvus é uma base de dados vetorial de código aberto concebida para pesquisa de semelhanças e aplicações de inteligência artificial (IA). A plataforma suporta o conjunto de instruções AVX-512, o que significa que pode ser usada com todas as CPUs que incluem as instruções AVX-512. O Milvus tem amplas aplicações que abrangem sistemas de recomendação, visão computacional, processamento de linguagem natural (PNL) e muito mais. Este artigo apresenta resultados de desempenho e análise de uma base de dados vetorial Milvus em AVX-512 e AVX2.
Desempenho do Milvus em AVX-512 vs. AVX2
Configuração do sistema
- CPU: CPU Intel® Platinum 8163 a 2,50 GHz24 núcleos 48 threads
- Número de CPU: 2
- Placa gráfica, GeForce RTX 2080Ti 11GB 4 placas
- Memória: 768 GB
- Disco: SSD de 2TB
Parâmetros do Milvus
- cahce.cahe_size: 25, O tamanho da memória da CPU utilizada para armazenar dados em cache para uma consulta mais rápida.
- nlist: 4096
- nprobe: 128
Nota: nlist
é o parâmetro de indexação a criar a partir do cliente; nprobe
o parâmetro de pesquisa. Tanto o IVF_FLAT como o IVF_SQ8 utilizam um algoritmo de agrupamento para particionar um grande número de vectores em intervalos, sendo nlist
o número total de intervalos a particionar durante o agrupamento. O primeiro passo de uma consulta consiste em encontrar o número de intervalos mais próximos do vetor alvo e o segundo passo consiste em encontrar os vectores top-k nesses intervalos, comparando a distância dos vectores. nprobe
refere-se ao número de intervalos no primeiro passo.
Conjunto de dados: Conjunto de dados SIFT10M
Estes testes utilizam o conjunto de dados SIFT10M, que contém um milhão de vectores de 128 dimensões e é frequentemente utilizado para analisar o desempenho dos métodos de pesquisa do vizinho mais próximo correspondentes. O tempo de pesquisa top-1 para nq = [1, 10, 100, 500, 1000] será comparado entre os dois conjuntos de instruções.
Resultados por tipo de índice vetorial
Os índices vectoriais são estruturas de dados eficientes em termos de tempo e espaço, construídas no campo vetorial de uma coleção utilizando vários modelos matemáticos. A indexação vetorial permite pesquisar eficientemente grandes conjuntos de dados quando se tenta identificar vectores semelhantes a um vetor de entrada. Devido à natureza demorada da recuperação exacta, a maioria dos tipos de índices suportados pelo Milvus utiliza a pesquisa aproximada do vizinho mais próximo (ANN).
Para estes testes, foram utilizados três índices com o AVX-512 e o AVX2: IVF_FLAT, IVF_SQ8 e HNSW.
IVF_FLAT
O ficheiro invertido (IVF_FLAT) é um tipo de índice baseado na quantização. É o índice IVF mais básico e os dados codificados armazenados em cada unidade são consistentes com os dados originais. O índice divide os dados vectoriais num número de unidades de cluster (nlist) e, em seguida, compara as distâncias entre o vetor de entrada alvo e o centro de cada cluster. Dependendo do número de clusters que o sistema está definido para consultar (nprobe), os resultados da pesquisa de semelhança são devolvidos com base em comparações entre a entrada de destino e os vectores apenas no(s) cluster(s) mais semelhante(s) - reduzindo drasticamente o tempo de consulta. Ao ajustar nprobe, é possível encontrar um equilíbrio ideal entre precisão e velocidade para um determinado cenário.
Resultados de desempenho IVF_FLAT.png
IVF_SQ8
O IVF_FLAT não executa nenhuma compactação, de modo que os arquivos de índice que ele produz têm aproximadamente o mesmo tamanho que os dados vetoriais originais, brutos e não indexados. Quando os recursos de memória do disco, da CPU ou da GPU são limitados, o IVF_SQ8 é uma opção melhor do que o IVF_FLAT. Esse tipo de índice pode converter cada dimensão do vetor original de um número de ponto flutuante de quatro bytes para um inteiro sem sinal de um byte executando a quantização escalar. Isso reduz o consumo de memória do disco, da CPU e da GPU em 70-75%.
Resultados de desempenho IVF_SQ8.png
HNSW
O Hierarchical Small World Graph (HNSW) é um algoritmo de indexação baseado em gráficos. As consultas começam na camada mais alta, encontrando o nó mais próximo do objetivo, descendo depois para a camada seguinte para outra ronda de pesquisa. Após várias iterações, pode aproximar-se rapidamente da posição de destino.
Resultados de desempenho HNSW.png
Comparação de índices vectoriais
A recuperação de vectores é consistentemente mais rápida no conjunto de instruções AVX-512 do que no AVX2. Isto deve-se ao facto de o AVX-512 suportar computação de 512 bits, em comparação com a computação de apenas 256 bits no AVX2. Teoricamente, o AVX-512 deveria ser duas vezes mais rápido do que o AVX2. No entanto, o Milvus executa outras tarefas morosas para além dos cálculos de semelhança de vectores. É pouco provável que o tempo total de recuperação do AVX-512 seja duas vezes mais curto do que o do AVX2 em cenários do mundo real. comparison.png
A recuperação é significativamente mais rápida no índice HNSW do que nos outros dois índices, enquanto a recuperação IVF_SQ8 é ligeiramente mais rápida do que IVF_FLAT em ambos os conjuntos de instruções. Isto deve-se provavelmente ao facto de o IVF_SQ8 necessitar apenas de 25% da memória necessária para o IVF_FLAT. O IVF_SQ8 carrega 1 byte por cada dimensão do vetor, enquanto o IVF_FLAT carrega 4 bytes por dimensão do vetor. O tempo necessário para o cálculo é muito provavelmente limitado pela largura de banda da memória. Como resultado, o IVF_SQ8 não só ocupa menos espaço, como também requer menos tempo para recuperar os vectores.
O Milvus é uma base de dados vetorial versátil e de elevado desempenho
Os testes apresentados neste artigo demonstram que o Milvus oferece excelente desempenho nos conjuntos de instruções AVX-512 e AVX2 usando diferentes índices. Independentemente do tipo de índice, o Milvus tem melhor desempenho no AVX-512.
O Milvus é compatível com uma variedade de plataformas de aprendizagem profunda e é utilizado em diversas aplicações de IA. O Milvus 2.0, uma versão reimaginada do banco de dados vetorial mais popular do mundo, foi lançado sob uma licença de código aberto em julho de 2021. Para mais informações sobre o projeto, consulte os seguintes recursos:
- Desempenho do Milvus em AVX-512 vs. AVX2
- Comparação de índices vectoriais
- O Milvus é uma base de dados vetorial versátil e de elevado desempenho
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word