milvus-logo
LFAI
Home
  • Los geht's

Starten von Milvus mit GPU-Unterstützung mit Helm Chart

Diese Seite veranschaulicht, wie Sie eine Milvus-Instanz mit GPU-Unterstützung mithilfe von Helm Chart starten können.

Überblick

Helm verwendet ein Paketierungsformat namens Charts. Ein Diagramm ist eine Sammlung von Dateien, die einen zusammenhängenden Satz von Kubernetes-Ressourcen beschreiben. Milvus bietet eine Reihe von Diagrammen, die Sie bei der Bereitstellung von Milvus-Abhängigkeiten und -Komponenten unterstützen. Milvus Helm Chart ist eine Lösung, die die Bereitstellung von Milvus auf einem Kubernetes-Cluster (K8s) mit dem Helm-Paketmanager unterstützt.

Voraussetzungen

Wenn Sie beim Ziehen des Images auf Probleme stoßen, kontaktieren Sie uns unter community@zilliz.com und geben Sie Details zum Problem an, damit wir Ihnen den nötigen Support bieten können.

Installieren Sie Helm Chart für Milvus

Helm ist ein K8s-Paketmanager, der Sie bei der schnellen Bereitstellung von Milvus unterstützen kann.

  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 und Sie können weitere Aktualisierungen wie folgt von https://zilliztech.github.io/milvus-helm/ erhalten:

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 die Diagramme bis 4.0.31 verfügbar. Für spätere Versionen verwenden Sie stattdessen das neue Repo.

  1. Karten lokal aktualisieren.
$ helm repo update

Starten Sie Milvus

Sobald Sie das Helm-Diagramm 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 Versionsnamen, das Diagramm und die Parameter angeben, die Sie ändern möchten. In dieser Anleitung wird my-release als Versionsname verwendet. Um einen anderen Versionsnamen zu verwenden, ersetzen Sie my-release in den folgenden Befehlen durch den von Ihnen verwendeten Namen.

Milvus ermöglicht es Ihnen, Milvus ein oder mehrere GPU-Geräte zuzuweisen.

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
    indexNode:
      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 alleinstehend

    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 pulsar.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
    indexNode:
      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 teilen sich der indexNode und der queryNode zwei GPUs. Um der indexNode und der queryNode unterschiedliche GPUs zuzuweisen, können Sie die Konfiguration entsprechend ändern, indem Sie extraEnv in der Konfigurationsdatei wie folgt einstellen:

    cat <<EOF > custom-values.yaml
    indexNode:
      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 sollte nur Buchstaben, Zahlen und Bindestriche enthalten. Punkte sind im Versionsnamen nicht erlaubt.
    • Die Standard-Befehlszeile installiert die Cluster-Version von Milvus bei der Installation von Milvus mit Helm. Bei der Installation von Milvus als Einzelplatzversion sind weitere Einstellungen erforderlich.
    • Gemäß dem veralteten API-Migrationsleitfaden von Kuberenetes wird die API-Version policy/v1beta1 von PodDisruptionBudget ab v1.25 nicht mehr unterstützt. Es wird empfohlen, Manifeste und API-Clients zu migrieren, um stattdessen die policy/v1-API-Version zu verwenden.
      Als Workaround für Benutzer, die noch die policy/v1beta1-API-Version von PodDisruptionBudget auf Kuberenetes v1.25 und später 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
    • Siehe Milvus Helm Chart und Helm für weitere Informationen.
  • Milvus alleinstehend

    cat <<EOF > custom-values.yaml
    indexNode:
      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 teilen sich indexNode und queryNode zwei GPUs. Um dem indexNode und dem queryNode unterschiedliche GPUs zuzuweisen, können Sie die Konfiguration entsprechend ändern, indem Sie extraEnv in der Konfigurationsdatei wie folgt einstellen:

    cat <<EOF > custom-values.yaml
    indexNode:
      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 pulsar.enabled=false -f custom-values.yaml
    

2. Prüfen Sie den Milvus-Status

Führen Sie den folgenden Befehl aus, um den Milvus-Status zu überprüfen:

$ kubectl get pods

Nach dem Start von Milvus wird in der Spalte READY 1/1 für alle Pods angezeigt.

  • Milvus-Cluster

    NAME                                             READY  STATUS   RESTARTS  AGE
    my-release-etcd-0                                1/1    Running   0        3m23s
    my-release-etcd-1                                1/1    Running   0        3m23s
    my-release-etcd-2                                1/1    Running   0        3m23s
    my-release-milvus-datacoord-6fd4bd885c-gkzwx     1/1    Running   0        3m23s
    my-release-milvus-datanode-68cb87dcbd-4khpm      1/1    Running   0        3m23s
    my-release-milvus-indexcoord-5bfcf6bdd8-nmh5l    1/1    Running   0        3m23s
    my-release-milvus-indexnode-5c5f7b5bd9-l8hjg     1/1    Running   0        3m24s
    my-release-milvus-proxy-6bd7f5587-ds2xv          1/1    Running   0        3m24s
    my-release-milvus-querycoord-579cd79455-xht5n    1/1    Running   0        3m24s
    my-release-milvus-querynode-5cd8fff495-k6gtg     1/1    Running   0        3m24s
    my-release-milvus-rootcoord-7fb9488465-dmbbj     1/1    Running   0        3m23s
    my-release-minio-0                               1/1    Running   0        3m23s
    my-release-minio-1                               1/1    Running   0        3m23s
    my-release-minio-2                               1/1    Running   0        3m23s
    my-release-minio-3                               1/1    Running   0        3m23s
    my-release-pulsar-autorecovery-86f5dbdf77-lchpc  1/1    Running   0        3m24s
    my-release-pulsar-bookkeeper-0                   1/1    Running   0        3m23s
    my-release-pulsar-bookkeeper-1                   1/1    Running   0        98s
    my-release-pulsar-broker-556ff89d4c-2m29m        1/1    Running   0        3m23s
    my-release-pulsar-proxy-6fbd75db75-nhg4v         1/1    Running   0        3m23s
    my-release-pulsar-zookeeper-0                    1/1    Running   0        3m23s
    my-release-pulsar-zookeeper-metadata-98zbr       0/1   Completed  0        3m24s
    
  • Milvus-Einzelplatz

    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. Leiten Sie einen lokalen Port an Milvus weiter

Überprüfen Sie, auf welchem lokalen Port der Milvus-Server lauscht. 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 dann den folgenden Befehl aus, um einen lokalen Port an den Port weiterzuleiten, an dem Milvus arbeitet.

$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530

Optional können Sie :19530 anstelle von 27017:19530 im obigen Befehl verwenden, um kubectl einen lokalen Port für Sie zuweisen zu lassen, so dass Sie sich nicht um Portkonflikte kümmern müssen.

Standardmäßig lauscht die Port-Weiterleitung von kubectl nur auf localhost. Verwenden Sie das address Flag, wenn Sie möchten, dass Milvus die ausgewählten oder alle IP-Adressen abhört. Der folgende Befehl sorgt dafür, dass port-forward alle IP-Adressen auf dem Host-Rechner abhört.

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530

Deinstallation von Milvus

Führen Sie den folgenden Befehl aus, um Milvus zu deinstallieren.

$ helm uninstall my-release

Wie geht es weiter?

Nachdem Sie Milvus installiert haben, können Sie:

Übersetzt vonDeepLogo

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

War diese Seite hilfreich?