Introdução ao Milvus com GPU: desbloqueando desempenho 10x maior

Sep 29, 20234 min read

Você está pronto para aprimorar sua busca vetorial com aceleração por GPU? Milvus 2.3, a versão mais recente do Milvus, oferece suporte oficial a GPUs NVIDIA A100, proporcionando um aumento de 10x na taxa de transferência e reduções significativas na latência. Esta postagem do blog vai se aprofundar nas motivações por trás dessa inovação estratégica e mostrar como começar com a versão GPU do Milvus.

Por que o Milvus introduz suporte a GPU?

Bancos de dados vetoriais desempenham um papel crucial na recuperação de dados em larga escala e na busca por similaridade. No entanto, estratégias tradicionais de indexação baseadas em CPU precisam de ajuda para acompanhar a crescente demanda por alto desempenho e baixa latência, particularmente com a ascensão de Grandes Modelos de Linguagem (LLMs), como o GPT-3. Reconhecendo a potencial sinergia entre o Milvus e as GPUs NVIDIA, a equipe do Milvus decidiu introduzir suporte a GPU no Milvus 2.3.

Graças ao suporte da equipe da NVIDIA (agradecimentos especiais a @wphicks e @cjnolet da NVIDIA por suas valiosas contribuições ao código RAFT), o suporte a GPU no Milvus se tornou uma realidade, tornando possível pesquisar de forma rápida e eficiente em enormes conjuntos de dados e expandir o cenário da IA.

Começando com a versão GPU do Milvus

Vamos nos aprofundar nas etapas para iniciar sua jornada com a versão GPU do Milvus.

Instalando o driver CUDA

Em primeiro lugar, certifique-se de que sua máquina host reconhece sua GPU NVIDIA. Você pode verificar isso executando o seguinte comando:

lspci

Você está pronto para prosseguir se vir o campo "NVIDIA" na saída do dispositivo. Abaixo está o resultado do meu dispositivo, que reconhece uma placa de vídeo NVIDIA T4.

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]00:01.3 Non-VGA unclassified device: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)00:03.0 VGA compatible controller: Amazon.com, Inc. Device 111100:04.0 Non-Volatile memory controller: Amazon.com, Inc. Device 806100:05.0 Ethernet controller: Amazon.com, Inc. Elastic Network Adapter (ENA)00:1e.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)00:1f.0 Non-Volatile memory controller: Amazon.com, Inc. NVMe SSD Controller 

Em seguida, instale os drivers CUDA necessários. Você pode encontrar o driver apropriado para seu sistema no site da NVIDIA.

Por exemplo, se você usa o sistema operacional (SO) Ubuntu Linux 20.04, pode baixar e instalar o driver executando os seguintes comandos:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.debsudo dpkg -i cuda-keyring_1.1-1_all.debsudo apt-get update

Observação:

  1. Você pode pular a etapa de instalação do CUDA se sua máquina host não exigir drivers CUDA.

  2. A versão mínima do driver necessária depende do tipo da sua GPU:

  • GPUs profissionais da série NVIDIA Tesla: >=450.80.02

  • GPUs para jogos: >=520.61.05

Após instalar o driver, você deve reiniciar o sistema para que ele entre em vigor. Assim que a reinicialização for concluída, você pode prosseguir inserindo o seguinte comando:

nvidia-smi

Observação: A imagem GPU do Milvus oferece suporte a placas de vídeo NVIDIA com Compute Capability 6.1, 7.0, 7.5 e 8.0.

Configuração de GPU do Milvus

A versão GPU do Milvus oferece suporte apenas a um único processo Milvus e a uma única GPU por padrão. Você pode executar vários processos ou contêineres Milvus e definir a variável de ambiente CUDA_VISIBLE_DEVICES para utilizar várias GPUs.

  • Em um Contêiner, você pode definir essa variável de ambiente usando -e:
sudo docker run --rm -e NVIDIA_VISIBLE_DEVICES=3 milvusdb/milvus:v2.3.0-gpu-beta
  • Você pode definir essa variável de ambiente em um Docker Compose usando o campo device_ids. Consulte o acesso à GPU com a Documentação do Docker Compose para obter mais informações.

Observação:

  1. Mesmo que você configure várias placas gráficas para um único processo ou contêiner Milvus, o Milvus só pode utilizar uma.

  2. Você pode ajustar o desempenho ajustando variáveis de ambiente como KNOWHERE_STREAMS_PER_GPU (para simultaneidade de fluxos CUDA) e KNOWHERE_GPU_MEM_POOL_SIZE (para o tamanho do pool de memória da GPU).

  3. Recomendamos fortemente ajustar sua variável de ambiente se você implantar dois processos Milvus em uma única placa gráfica. Caso contrário, o Milvus pode sofrer falhas devido à competição por memória.

Criando a versão GPU do Milvus localmente

Antes de criar o Milvus localmente, certifique-se de ter instalado as dependências necessárias.

  • CUDA Toolkit
sudo apt install --no-install-recommends cuda-toolkit
  • Python 3, pip, libopenblas-dev, libtbb-dev e pkg-config:
sudo apt install python3-pip libopenblas-dev libtbb-dev pkg-config
  • Conan, um gerenciador de pacotes C/C++:
pip3 install conan==1.59.0 --userexpoprt PATH=$PATH:~/.local/bin

Depois de instalar todas as ferramentas necessárias, crie a versão GPU do Milvus usando o seguinte comando:

make milvus-gpu

Executando o Milvus

Inicie o Milvus no modo autônomo executando o seguinte comando:

cd binsudo ./milvus run standalone

Se você preferir a conteinerização, pode usar o arquivo docker-compose.yml fornecido para implantação.

docker-compose up -d

Conclusão

A introdução do suporte a GPU no Milvus 2.3 abre possibilidades empolgantes para acelerar o desempenho de bancos de dados vetoriais. Com GPUs NVIDIA A100 à sua disposição, você pode obter ganhos notáveis tanto em throughput quanto em latência, tornando-o uma escolha atraente para aplicações com uso intensivo de dados e cargas de trabalho de IA.

Atualizado em Jul 09, 2026