Introduzione a Milvus con accelerazione GPU: sbloccare prestazioni 10 volte superiori
Sei pronto a potenziare la tua ricerca vettoriale con l'accelerazione GPU? Milvus 2.3, l'ultima versione di Milvus, supporta ufficialmente le GPU NVIDIA A100, offrendo un aumento di 10 volte del throughput e significative riduzioni della latenza. Questo post del blog approfondirà le motivazioni alla base di questa innovazione strategica e ti mostrerà come iniziare con la versione GPU di Milvus.
Perché Milvus introduce il supporto GPU?
I database vettoriali svolgono un ruolo cruciale nel recupero di dati su larga scala e nella ricerca di similarità. Tuttavia, le strategie di indicizzazione tradizionali basate su CPU faticano a tenere il passo con la crescente domanda di prestazioni elevate e bassa latenza, in particolare con l'ascesa dei Large Language Models (LLM) come GPT-3. Riconoscendo la potenziale sinergia tra Milvus e le GPU NVIDIA, il team di Milvus ha deciso di introdurre il supporto GPU in Milvus 2.3.
Grazie al supporto del team NVIDIA (un ringraziamento speciale va a @wphicks e @cjnolet di NVIDIA per i loro preziosi contributi al codice RAFT), il supporto GPU in Milvus è diventato realtà, rendendo possibile effettuare ricerche in modo rapido ed efficiente attraverso enormi set di dati ed espandere il panorama dell'IA.
Introduzione alla versione GPU di Milvus
Approfondiamo i passaggi per iniziare il tuo percorso con la versione GPU di Milvus.
Installazione del driver CUDA
Innanzitutto, assicurati che la tua macchina host riconosca la tua GPU NVIDIA. Puoi verificarlo eseguendo il seguente comando:
lspci
Se vedi il campo "NVIDIA" nell'output del dispositivo, sei pronto per procedere. Di seguito è riportato il risultato del mio dispositivo, che riconosce una scheda grafica 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
Successivamente, installa i driver CUDA necessari. Puoi trovare il driver appropriato per il tuo sistema sul sito web NVIDIA.
Ad esempio, se utilizzi il sistema operativo (OS) Ubuntu Linux 20.04, puoi scaricare e installare il driver eseguendo i seguenti comandi:
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
Nota:
Puoi saltare il passaggio di installazione di CUDA se la tua macchina host non richiede driver CUDA.
La versione minima del driver richiesta dipende dal tipo di GPU:
GPU professionali della serie NVIDIA Tesla: >=450.80.02
GPU da gaming: >=520.61.05
Dopo aver installato il driver, devi riavviare il sistema affinché abbia effetto. Una volta completato il riavvio, puoi procedere inserendo il seguente comando:
nvidia-smi
Nota: L'immagine GPU di Milvus supporta schede grafiche NVIDIA con Compute Capability 6.1, 7.0, 7.5 e 8.0.
Per conoscere la Compute Capability della tua GPU, visita NVIDIA GPU Compute Capability.
Per istruzioni sull'installazione di NVIDIA Container Toolkit, consulta la documentazione NVIDIA.
Configurazione GPU di Milvus
La versione GPU di Milvus supporta per impostazione predefinita solo un singolo processo Milvus e una singola GPU. Puoi eseguire più processi o container Milvus e impostare la variabile d'ambiente CUDA_VISIBLE_DEVICES per utilizzare più GPU.
- In un container, puoi impostare questa variabile d'ambiente usando
-e:
sudo docker run --rm -e NVIDIA_VISIBLE_DEVICES=3 milvusdb/milvus:v2.3.0-gpu-beta
- Puoi impostare questa variabile d'ambiente in un Docker Compose usando il campo
device_ids. Consulta l'accesso alla GPU con la Documentazione di Docker Compose per maggiori informazioni.
Nota:
Anche se configuri più schede grafiche per un singolo processo o container Milvus, Milvus può utilizzarne solo una.
Puoi ottimizzare le prestazioni regolando variabili d'ambiente come
KNOWHERE_STREAMS_PER_GPU(per la concorrenza degli stream CUDA) eKNOWHERE_GPU_MEM_POOL_SIZE(per la dimensione del pool di memoria GPU).Consigliamo vivamente di regolare la variabile d'ambiente se distribuisci due processi Milvus su una singola scheda grafica. In caso contrario, Milvus potrebbe subire crash a causa della competizione per la memoria.
Compilazione locale della versione GPU di Milvus
Prima di compilare Milvus localmente, assicurati di aver installato le dipendenze necessarie.
- 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, un gestore di pacchetti C/C++:
pip3 install conan==1.59.0 --userexpoprt PATH=$PATH:~/.local/bin
CMake (>=3.23): consulta il Repository APT di Kitware per maggiori dettagli.
Golang: consulta la documentazione di Go per maggiori dettagli.
Dopo aver installato tutti gli strumenti necessari, compila la versione GPU di Milvus usando il seguente comando:
make milvus-gpu
Esecuzione di Milvus
Avvia Milvus in modalità standalone eseguendo il seguente comando:
cd binsudo ./milvus run standalone
Se preferisci la containerizzazione, puoi usare il file docker-compose.yml fornito per la distribuzione.
docker-compose up -d
Conclusione
L'introduzione del supporto GPU in Milvus 2.3 apre interessanti possibilità per accelerare le prestazioni dei database vettoriali. Con le GPU NVIDIA A100 a tua disposizione, puoi ottenere notevoli miglioramenti sia nel throughput sia nella latenza, rendendolo una scelta interessante per applicazioni ad alta intensità di dati e carichi di lavoro AI.
Continua a leggere

Why We Built Vector Lakebase: Rethinking Unstructured Data Architecture for AI
Vector Lakebase: a unified, lake-native data foundation for AI workloads — and an answer to what happens after vector databases succeed.

Why Teams Are Migrating from Weaviate to Zilliz Cloud — and How to Do It Seamlessly
Explore how Milvus scales for large datasets and complex queries with advanced features, and discover how to migrate from Weaviate to Zilliz Cloud.

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.



