Milvus mit GPU-Unterstützung mithilfe eines Helm-Charts ausführen
Auf dieser Seite wird erläutert, wie Sie eine Milvus-Instanz mit GPU-Unterstützung mithilfe eines Helm-Charts starten.
Übersicht
Helm verwendet ein Paketformat namens „Charts“. Ein Chart ist eine Sammlung von Dateien, die eine zusammengehörige Gruppe von Kubernetes-Ressourcen beschreiben. Milvus stellt eine Reihe von Charts bereit, die Ihnen bei der Bereitstellung von Milvus-Abhängigkeiten und -Komponenten helfen. Das Milvus-Helm-Chart ist eine Lösung, die die Milvus-Bereitstellung auf einem Kubernetes-Cluster (K8s) mithilfe des Helm-Paketmanagers initiiert.
Voraussetzungen
Installieren Sie eine „StorageClass“. Sie können die installierte „StorageClass“ wie folgt überprüfen.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseÜberprüfen Sie vor der Installation die Hardware- und Softwareanforderungen.
Sollten beim Abrufen des Images Probleme auftreten, kontaktieren Sie uns bitte unter community@zilliz.com mit detaillierten Angaben zum Problem, und wir werden Ihnen die erforderliche Unterstützung zukommen lassen.
Installieren Sie das Helm-Chart für Milvus
Helm ist ein K8s-Paketmanager, mit dem Sie Milvus schnell bereitstellen können.
- Fügen Sie das Milvus-Helm-Repository hinzu.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/
Das Milvus-Helm-Charts-Repository unter https://milvus-io.github.io/milvus-helm/ wurde archiviert. Weitere Updates erhalten Sie wie folgt unter https://zilliztech.github.io/milvus-helm/:
helm repo add zilliztech https://zilliztech.github.io/milvus-helm
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus
Das archivierte Repository ist weiterhin für Charts bis zur Version 4.0.31 verfügbar. Für spätere Versionen verwenden Sie stattdessen das neue Repository.
- Aktualisieren Sie die Charts lokal.
$ helm repo update
Starten Sie Milvus
Sobald Sie das Helm-Chart installiert haben, können Sie Milvus auf Kubernetes starten. In diesem Abschnitt führen wir Sie durch die Schritte zum Starten von Milvus mit GPU-Unterstützung.
Sie sollten Milvus mit Helm starten, indem Sie den Release-Namen, das Chart und die Parameter angeben, die Sie voraussichtlich ändern werden. In dieser Anleitung verwenden wir „ my-release “ als Release-Namen. Um einen anderen Release-Namen zu verwenden, ersetzen Sie „ my-release “ in den folgenden Befehlen durch den von Ihnen verwendeten Namen.
Mit Milvus können Sie Milvus ein oder mehrere GPU-Geräte zuweisen.
1. Ein einzelnes GPU-Gerät zuweisen
Milvus mit GPU-Unterstützung ermöglicht es Ihnen, ein oder mehrere GPU-Geräte zuzuweisen.
Milvus-Cluster
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. Mehrere GPU-Geräte zuweisen
Zusätzlich zu einem einzelnen GPU-Gerät können Sie Milvus auch mehrere GPU-Geräte zuweisen.
Milvus-Cluster
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" EOFIn der obigen Konfiguration stehen vier CPUs zur Verfügung, und jeder dataNode sowie jeder queryNode nutzt zwei GPUs. Um dem dataNode und dem queryNode unterschiedliche GPUs zuzuweisen, können Sie die Konfiguration entsprechend anpassen, indem Sie „
extraEnv“ in der Konfigurationsdatei wie folgt festlegen: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- Der Release-Name darf nur Buchstaben, Zahlen und Bindestriche enthalten. Punkte sind im Release-Namen nicht zulässig.
- Die Standard-Befehlszeile installiert die Cluster-Version von Milvus bei der Installation von Milvus mit Helm. Bei der Installation von Milvus im Standalone-Modus sind weitere Einstellungen erforderlich.
- Gemäß dem Leitfaden zur Migration veralteter APIs von Kubernetes wird die API-Version „policy/v1beta1“ von PodDisruptionBudget ab Version v1.25 nicht mehr unterstützt. Es wird empfohlen, Manifests und API-Clients so anzupassen, dass stattdessen die API-Version „policy/v1“ verwendet wird.
Als Workaround für Nutzer, die auf Kubernetes v1.25 und höher weiterhin die API-Version „policy/v1beta1“ von PodDisruptionBudget verwenden, können Sie stattdessen den folgenden Befehl ausführen, um Milvus zu installieren:
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 - Weitere Informationen finden Sie unter „Milvus Helm Chart “ und „Helm “.
Milvus als Standalone-Lösung
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" EOFIn der obigen Konfiguration stehen vier CPUs zur Verfügung, und jeder dataNode sowie jeder queryNode nutzt zwei GPUs. Um dem dataNode und dem queryNode unterschiedliche GPUs zuzuweisen, können Sie die Konfiguration entsprechend anpassen, indem Sie „extraEnv“ in der Konfigurationsdatei wie folgt festlegen:
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. Milvus-Status überprüfen
Führen Sie den folgenden Befehl aus, um den Status von Milvus zu überprüfen:
$ kubectl get pods
Nachdem Milvus gestartet ist, wird in der Spalte „ READY “ für alle Pods „ 1/1 “ angezeigt.
Milvus-Cluster
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. Einen lokalen Port an Milvus weiterleiten
Überprüfen Sie, auf welchem lokalen Port der Milvus-Server auf Verbindungen wartet. Ersetzen Sie den Pod-Namen durch Ihren eigenen.
$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
Führen Sie anschließend den folgenden Befehl aus, um einen lokalen Port auf den Port weiterzuleiten, auf dem Milvus läuft.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
Optional können Sie im obigen Befehl „ :19530 “ anstelle von „ 27017:19530 “ verwenden, damit „ kubectl “ einen lokalen Port für Sie zuweist und Sie sich nicht um Portkonflikte kümmern müssen.
Standardmäßig lauscht die Portweiterleitung von `kubectl` nur auf localhost. Verwenden Sie das Flag address, wenn Milvus auf die ausgewählte oder alle IP-Adressen lauschen soll. Der folgende Befehl bewirkt, dass die Portweiterleitung auf allen IP-Adressen des Host-Rechners lauscht.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
Nun können Sie über den weitergeleiteten Port eine Verbindung zu Milvus herstellen.
Auf die Milvus-WebUI zugreifen
Milvus wird mit einem integrierten GUI-Tool namens „Milvus WebUI“ ausgeliefert, auf das Sie über Ihren Browser zugreifen können. Die Milvus-Web-UI verbessert die Beobachtbarkeit des Systems durch eine einfache und intuitive Benutzeroberfläche. Mit der Milvus-Web-UI können Sie die Statistiken und Metriken der Komponenten und Abhängigkeiten von Milvus beobachten, Details zu Datenbanken und Sammlungen überprüfen sowie detaillierte Milvus-Konfigurationen auflisten. Weitere Informationen zur Milvus-Web-UI finden Sie unter Milvus-Web-UI
Um den Zugriff auf die Milvus-Web-UI zu ermöglichen, müssen Sie den Proxy-Pod auf einen lokalen Port weiterleiten.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
Nun können Sie über http://localhost:27018 auf die Milvus-Web-UI zugreifen.
Milvus deinstallieren
Führen Sie den folgenden Befehl aus, um Milvus zu deinstallieren.
$ helm uninstall my-release
Storage V3 ist standardmäßig deaktiviert. Aktivieren Sie es, bevor Sie Funktionen nutzen, die davon abhängen. Informationen zu Anforderungen und Kompatibilitätsaspekten finden Sie unter „Storage V3“.
Was als Nächstes
Nachdem Sie Milvus installiert haben, können Sie:
Schauen Sie im Schnellstart nach, was Milvus alles kann.
Lernen Sie die grundlegenden Funktionen von Milvus kennen:
Stellen Sie Ihren Milvus-Cluster in folgenden Clouds bereit:
Entdecken Sie Milvus WebUI, eine intuitive Weboberfläche für die Überwachung und Verwaltung von Milvus.
Entdecken Sie Milvus Backup, ein Open-Source-Tool für Milvus-Datensicherungen.
Entdecken Sie Birdwatcher, ein Open-Source-Tool zur Fehlerbehebung in Milvus und für dynamische Konfigurationsaktualisierungen.
Entdecken Sie Attu, ein Open-Source-GUI-Tool für die intuitive Verwaltung von Milvus.