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

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.

  1. 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.

  1. 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.yaml
    
  • Milvus-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"
    EOF
    

    In 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"
    EOF
    

    In 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             3m24s
    
  • Milvus-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:

Übersetzt vonDeepL

Office Hours

Milvus Bürozeiten

Holen Sie sich Hilfe bei der Produktionsbereitstellung von Zilliz, den Experten für Milvus.

Buchen Sie eine kostenlose 1:1-Sitzung

Verwaltetes Milvus kostenlos testen

Zilliz Cloud ist unkompliziert, basiert auf Milvus und ist 10-mal schneller.

Loslegen
Feedback

War diese Seite hilfreich?