Introdução ao Milvus com GPU: desbloqueando desempenho 10x maior
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:
Você pode pular a etapa de instalação do CUDA se sua máquina host não exigir drivers CUDA.
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.
Para saber a Compute Capability da sua GPU, visite NVIDIA GPU Compute Capability.
Para obter instruções sobre como instalar o NVIDIA Container Toolkit, consulte a documentação da NVIDIA.
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:
Mesmo que você configure várias placas gráficas para um único processo ou contêiner Milvus, o Milvus só pode utilizar uma.
Você pode ajustar o desempenho ajustando variáveis de ambiente como
KNOWHERE_STREAMS_PER_GPU(para simultaneidade de fluxos CUDA) eKNOWHERE_GPU_MEM_POOL_SIZE(para o tamanho do pool de memória da GPU).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
CMake (>=3.23): consulte o Repositório APT da Kitware para obter mais detalhes.
Golang: consulte a documentação do Go para obter mais detalhes.
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.
Continue lendo
Stop Building AI Data Infra for the Wrong Stage
Learn how AI data infrastructure should evolve from prototype to enterprise scale, and when Vector Lakebase becomes the right architecture for AI apps.

Announcing the General Availability of Single Sign-On (SSO) on Zilliz Cloud
SSO is GA on Zilliz Cloud, delivering the enterprise-grade identity management capabilities your teams need to deploy vectorDB with confidence.

Zilliz Cloud Enterprise Vector Search Powers High-Performance AI on AWS
Zilliz Cloud on AWS powers secure, scalable, ultra-fast vector search for enterprise AI apps, with BYOC, sub-10ms latency, and zero-DevOps simplicity.



