Eseguire Milvus con supporto GPU utilizzando Helm Chart
Questa pagina illustra come avviare un'istanza di Milvus con supporto GPU utilizzando Helm Chart.
Panoramica
Helm utilizza un formato di pacchettizzazione denominato "chart". Un chart è un insieme di file che descrivono un set correlato di risorse Kubernetes. Milvus fornisce una serie di chart per aiutarti a distribuire le dipendenze e i componenti di Milvus. Il chart Helm di Milvus è una soluzione che avvia la distribuzione di Milvus su un cluster Kubernetes (K8s) utilizzando il gestore di pacchetti Helm.
Prerequisiti
Installare una StorageClass. È possibile verificare la StorageClass installata come segue.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseVerifica i requisiti hardware e software prima dell'installazione.
Se si riscontrano problemi durante il download dell'immagine, contattarci all'indirizzo community@zilliz.com fornendo i dettagli del problema e forniremo l'assistenza necessaria.
Installare Helm Chart per Milvus
Helm è un gestore di pacchetti K8s che consente di distribuire rapidamente Milvus.
- Aggiungere il repository Helm di Milvus.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/
Il repository Helm Chart di Milvus all'indirizzo https://milvus-io.github.io/milvus-helm/ è stato archiviato; è possibile ottenere ulteriori aggiornamenti da https://zilliztech.github.io/milvus-helm/ come segue:
helm repo add zilliztech https://zilliztech.github.io/milvus-helm
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus
Il repository archiviato è ancora disponibile per i chart fino alla versione 4.0.31. Per le versioni successive, utilizzare invece il nuovo repository.
- Aggiornare i chart localmente.
$ helm repo update
Avvia Milvus
Una volta installato il chart Helm, è possibile avviare Milvus su Kubernetes. In questa sezione, vi guideremo attraverso i passaggi necessari per avviare Milvus con il supporto GPU.
È necessario avviare Milvus con Helm specificando il nome della release, il chart e i parametri che si intende modificare. In questa guida utilizziamo my-release come nome della release. Per utilizzare un nome di release diverso, sostituire my-release nei comandi seguenti con quello che si sta utilizzando.
Milvus consente di assegnare uno o più dispositivi GPU a Milvus.
1. Assegnare un singolo dispositivo GPU
Milvus con supporto GPU consente di assegnare uno o più dispositivi GPU.
Cluster Milvus
cat <<EOF > custom-values.yaml dataNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" queryNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" EOF$ helm install my-release milvus/milvus -f custom-values.yamlMilvus standalone
cat <<EOF > custom-values.yaml standalone: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" EOF$ helm install my-release milvus/milvus --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false -f custom-values.yaml
2. Assegnazione di più dispositivi GPU
Oltre a un singolo dispositivo GPU, è possibile assegnare a Milvus anche più dispositivi GPU.
Cluster Milvus
cat <<EOF > custom-values.yaml dataNode: resources: requests: nvidia.com/gpu: "2" limits: nvidia.com/gpu: "2" queryNode: resources: requests: nvidia.com/gpu: "2" limits: nvidia.com/gpu: "2" EOFNella configurazione sopra riportata sono disponibili quattro CPU e ogni dataNode e queryNode utilizza due GPU. Per assegnare GPU diverse al dataNode e al queryNode, è possibile modificare la configurazione di conseguenza impostando `
extraEnv` nel file di configurazione come segue:cat <<EOF > custom-values.yaml dataNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" extraEnv: - name: CUDA_VISIBLE_DEVICES value: "0" queryNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" extraEnv: - name: CUDA_VISIBLE_DEVICES value: "1" EOF$ helm install my-release milvus/milvus -f custom-values.yaml- Il nome della versione deve contenere solo lettere, numeri e trattini. I punti non sono consentiti nel nome della versione.
- La riga di comando predefinita installa la versione cluster di Milvus durante l’installazione di Milvus con Helm. Sono necessarie ulteriori impostazioni durante l’installazione di Milvus in modalità standalone.
- In base alla guida alla migrazione delle API deprecate di Kubernetes, la versione API policy/v1beta1 di PodDisruptionBudget non è più supportata a partire dalla v1.25. Si consiglia di migrare i manifest e i client API per utilizzare invece la versione API policy/v1.
Come soluzione alternativa per gli utenti che utilizzano ancora la versione API policy/v1beta1 di PodDisruptionBudget su Kubernetes v1.25 e versioni successive, è possibile eseguire il seguente comando per installare Milvus:
helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false - Per ulteriori informazioni, consultare Milvus Helm Chart e Helm.
Milvus standalone
cat <<EOF > custom-values.yaml dataNode: resources: requests: nvidia.com/gpu: "2" limits: nvidia.com/gpu: "2" queryNode: resources: requests: nvidia.com/gpu: "2" limits: nvidia.com/gpu: "2" EOFNella configurazione sopra riportata, sono disponibili quattro CPU e ogni dataNode e queryNode utilizza due GPU. Per assegnare GPU diverse al dataNode e al queryNode, è possibile modificare la configurazione di conseguenza impostando extraEnv nel file di configurazione come segue:
cat <<EOF > custom-values.yaml dataNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" extraEnv: - name: CUDA_VISIBLE_DEVICES value: "0" queryNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" extraEnv: - name: CUDA_VISIBLE_DEVICES value: "1" EOF$ helm install my-release milvus/milvus --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false -f custom-values.yaml
2. Verifica dello stato di Milvus
Eseguire il seguente comando per verificare lo stato di Milvus:
$ kubectl get pods
Dopo l’avvio di Milvus, la colonna « READY » (Stato del cluster) visualizza « 1/1 » per tutti i pod.
Cluster Milvus
NAME READY STATUS RESTARTS AGE my-release-etcd-0 1/1 Running 0 3m24s my-release-etcd-1 1/1 Running 0 3m24s my-release-etcd-2 1/1 Running 0 3m24s my-release-milvus-datanode-698dbf7d77-rjkkq 1/1 Running 0 3m24s my-release-milvus-mixcoord-856d666559-rpj8z 1/1 Running 0 3m24s my-release-milvus-proxy-7f7cf47689-pzltw 1/1 Running 0 3m24s my-release-milvus-querynode-7fb6d5b5f8-92phj 1/1 Running 0 3m24s my-release-milvus-streamingnode-5867bfbcbf-cg9xx 1/1 Running 0 3m24s my-release-minio-0 1/1 Running 0 3m24s my-release-minio-1 1/1 Running 0 3m24s my-release-minio-2 1/1 Running 0 3m24s my-release-minio-3 1/1 Running 0 3m24s my-release-pulsarv3-bookie-0 1/1 Running 0 3m24s my-release-pulsarv3-bookie-1 1/1 Running 0 3m24s my-release-pulsarv3-bookie-2 1/1 Running 0 3m24s my-release-pulsarv3-bookie-init-p8hcq 0/1 Completed 0 3m24s my-release-pulsarv3-broker-0 1/1 Running 0 3m24s my-release-pulsarv3-broker-1 1/1 Running 0 3m24s my-release-pulsarv3-proxy-0 1/1 Running 0 3m24s my-release-pulsarv3-proxy-1 1/1 Running 0 3m24s my-release-pulsarv3-pulsar-init-8kjsj 0/1 Completed 0 3m24s my-release-pulsarv3-recovery-0 1/1 Running 0 3m24s my-release-pulsarv3-zookeeper-0 1/1 Running 0 3m24s my-release-pulsarv3-zookeeper-1 1/1 Running 0 3m24s my-release-pulsarv3-zookeeper-2 1/1 Running 0 3m24sMilvus standalone
NAME READY STATUS RESTARTS AGE my-release-etcd-0 1/1 Running 0 30s my-release-milvus-standalone-54c4f88cb9-f84pf 1/1 Running 0 30s my-release-minio-5564fbbddc-mz7f5 1/1 Running 0 30s
3. Reindirizzare una porta locale a Milvus
Verifica su quale porta locale è in ascolto il server Milvus. Sostituisci il nome del pod con il tuo.
$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
Quindi, eseguire il seguente comando per inoltrare una porta locale alla porta su cui è in ascolto Milvus.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
Facoltativamente, è possibile utilizzare :19530 al posto di 27017:19530 nel comando sopra riportato per consentire a kubectl di allocare una porta locale automaticamente, in modo da evitare di dover gestire eventuali conflitti di porta.
Per impostazione predefinita, il port forwarding di kubectl ascolta solo su localhost. Utilizza il flag address se desideri che Milvus ascolti sull'indirizzo IP selezionato o su tutti gli indirizzi IP. Il comando seguente imposta il port forwarding in modo che ascolti su tutti gli indirizzi IP della macchina host.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
Ora è possibile connettersi a Milvus utilizzando la porta inoltrata.
Accedere all’interfaccia utente web di Milvus
Milvus include uno strumento GUI integrato denominato Milvus WebUI, a cui è possibile accedere tramite il browser. Milvus WebUI migliora l’osservabilità del sistema grazie a un’interfaccia semplice e intuitiva. È possibile utilizzare Milvus WebUI per monitorare le statistiche e le metriche dei componenti e delle dipendenze di Milvus, verificare i dettagli del database e delle raccolte ed elencare le configurazioni dettagliate di Milvus. Per ulteriori dettagli su Milvus WebUI, consultare Milvus WebUI
Per abilitare l’accesso a Milvus WebUI, è necessario effettuare il port forwarding del pod proxy su una porta locale.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
Ora è possibile accedere a Milvus Web UI all'indirizzo http://localhost:27018.
Disinstallazione di Milvus
Eseguire il seguente comando per disinstallare Milvus.
$ helm uninstall my-release
Storage V3 è disabilitato per impostazione predefinita. Abilitarlo prima di utilizzare le funzionalità che dipendono da esso. Per i requisiti e le considerazioni sulla compatibilità, consultare Storage V3.
Prossimi passi
Una volta installato Milvus, è possibile:
Consultare la Guida rapida per scoprire cosa può fare Milvus.
Imparare le operazioni di base di Milvus:
Distribuisci il tuo cluster Milvus su cloud:
Scopri Milvus WebUI, un'interfaccia web intuitiva per il monitoraggio e la gestione di Milvus.
Scopri Milvus Backup, uno strumento open source per il backup dei dati di Milvus.
Scopri Birdwatcher, uno strumento open source per il debug di Milvus e gli aggiornamenti dinamici della configurazione.
Scopri Attu, uno strumento GUI open source per una gestione intuitiva di Milvus.