Esecuzione di Milvus con supporto GPU tramite Docker Compose
Questa pagina illustra come avviare un'istanza di Milvus con supporto GPU usando Docker Compose.
Prerequisiti
- Installare Docker.
- Controllare i requisiti hardware e software prima dell'installazione.
Se si riscontrano problemi nell'estrazione dell'immagine, contattateci all'indirizzo community@zilliz.com con i dettagli del problema e vi forniremo il supporto necessario.
Installare Milvus
Per installare Milvus con supporto GPU usando Docker Compose, seguite i seguenti passi.
1. Scaricare e configurare il file YAML
Scaricare milvus-standalone-docker-compose-gpu.yml
e salvarlo come docker-compose.yml manualmente o con il seguente comando.
$ wget https://github.com/milvus-io/milvus/releases/download/v2.4.18/milvus-standalone-docker-compose-gpu.yml -O docker-compose.yml
È necessario apportare alcune modifiche alle variabili d'ambiente del servizio standalone nel file YAML come segue:
- Per assegnare un dispositivo GPU specifico a Milvus, individuare il campo
deploy.resources.reservations.devices[0].devices_ids
nella definizione del serviziostandalone
e sostituire il suo valore con l'ID della GPU desiderata. È possibile utilizzare lo strumentonvidia-smi
, incluso nei driver di visualizzazione delle GPU NVIDIA, per determinare l'ID di un dispositivo GPU. Milvus supporta più dispositivi GPU.
Assegnare un singolo dispositivo GPU a Milvus:
...
standalone:
...
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: ["gpu"]
device_ids: ["0"]
...
Assegnazione di più dispositivi GPU a Milvus:
...
standalone:
...
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: ["gpu"]
device_ids: ['0', '1']
...
2. Avviare Milvus
Nella directory che contiene docker-compose.yml, avviare Milvus eseguendo il comando:
$ sudo docker compose up -d
Creating milvus-etcd ... done
Creating milvus-minio ... done
Creating milvus-standalone ... done
Se non si è riusciti a eseguire il comando precedente, verificare se sul sistema è installato Docker Compose V1. In tal caso, si consiglia di migrare a Docker Compose V2, come indicato nelle note di questa pagina.
Dopo aver avviato Milvus,
- I contenitori milvus-standalone, milvus-minio e milvus-etcd sono attivi.
- Il contenitore milvus-etcd non espone alcuna porta all'host e mappa i suoi dati nei volumi/etcd della cartella corrente.
- Il contenitore milvus-minio serve le porte 9090 e 9091 localmente con le credenziali di autenticazione predefinite e mappa i suoi dati su volumi/minio nella cartella corrente.
- Il contenitore milvus-standalone serve localmente le porte 19530 con le impostazioni predefinite e mappa i suoi dati su volumi/milvus nella cartella corrente.
È possibile verificare se i contenitori sono attivi e funzionanti usando il seguente comando:
$ sudo docker compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------
milvus-etcd etcd -advertise-client-url ... Up 2379/tcp, 2380/tcp
milvus-minio /usr/bin/docker-entrypoint ... Up (healthy) 9000/tcp
milvus-standalone /tini -- milvus run standalone Up 0.0.0.0:19530->19530/tcp, 0.0.0.0:9091->9091/tcp
Se sono stati assegnati più dispositivi GPU a Milvus in docker-compose.yml, è possibile specificare quale dispositivo GPU è visibile o disponibile per l'uso.
Rendere il dispositivo GPU 0
visibile a Milvus:
$ CUDA_VISIBLE_DEVICES=0 ./milvus run standalone
Rendere visibili a Milvus i dispositivi GPU 0
e 1
:
$ CUDA_VISIBLE_DEVICES=0,1 ./milvus run standalone
È possibile arrestare ed eliminare questo contenitore come segue.
# Stop Milvus
$ sudo docker compose down
# Delete service data
$ sudo rm -rf volumes
Configurare il pool di memoria
Dopo che Milvus è in funzione, è possibile personalizzare il pool di memoria modificando le impostazioni di initMemSize
e maxMemSize
nel file milvus.yaml
.
Il file milvus.yaml
si trova nella directory /milvus/configs/
all'interno del contenitore Milvus.
Per configurare il pool di memoria, modificare le impostazioni initMemSize
e maxMemSize
nel file milvus.yaml
come segue.
Usare il seguente comando per copiare
milvus.yaml
dal contenitore Milvus al computer locale. Sostituire<milvus_container_id>
con l'attuale ID del contenitore Milvus.docker cp <milvus_container_id>:/milvus/configs/milvus.yaml milvus.yaml
Aprire il file
milvus.yaml
copiato con l'editor di testo preferito. Ad esempio, utilizzando vim:vim milvus.yaml
Modificare le impostazioni di
initMemSize
emaxMemSize
come necessario e salvare le modifiche:... gpu: initMemSize: 0 maxMemSize: 0 ...
initMemSize
: Dimensione iniziale del pool di memoria. Per impostazione predefinita, 1024.maxMemSize
: Dimensione massima del pool di memoria. Per impostazione predefinita, 2048.
Usare il seguente comando per copiare il file
milvus.yaml
modificato nel contenitore Milvus. Sostituire<milvus_container_id>
con l'attuale ID del contenitore Milvus.docker cp milvus.yaml <milvus_container_id>:/milvus/configs/milvus.yaml
Riavviare il contenitore Milvus per applicare le modifiche:
docker stop <milvus_container_id> docker start <milvus_container_id>
Cosa succede ora
Dopo aver installato Milvus in Docker, è possibile:
Controllare Quickstart per vedere cosa può fare Milvus.
Imparare le operazioni di base di Milvus:
Distribuire il cluster Milvus su cloud:
Esplorate Milvus Backup, uno strumento open-source per il backup dei dati di Milvus.
Esplorate Birdwatcher, uno strumento open-source per il debug di Milvus e gli aggiornamenti dinamici della configurazione.
Esplorate Attu, uno strumento open-source per la gestione intuitiva di Milvus.