milvus-logo
LFAI
Casa
  • Iniziare

Eseguire Milvus con il supporto GPU usando Helm Chart

Questa pagina illustra come avviare un'istanza di Milvus con supporto GPU usando Helm Chart.

Panoramica

Helm utilizza un formato di packaging chiamato chart. Un grafico è una raccolta di file che descrivono un insieme correlato di risorse Kubernetes. Milvus fornisce una serie di grafici per aiutare a distribuire le dipendenze e i componenti di Milvus. Milvus Helm Chart è una soluzione che avvia la distribuzione di Milvus su un cluster Kubernetes (K8s) utilizzando il gestore di pacchetti Helm.

Prerequisiti

Se si riscontrano problemi nell'estrazione dell'immagine, contattare community@zilliz.com con i dettagli del problema e verrà fornito il supporto necessario.

Installare Helm Chart per Milvus

Helm è un gestore di pacchetti K8s che può aiutarvi a distribuire Milvus rapidamente.

  1. Aggiungere il repository Milvus Helm.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/

Il repository di Milvus Helm Charts all'indirizzo https://milvus-io.github.io/milvus-helm/ è stato archiviato ed è 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 grafici fino alla versione 4.0.31. Per le versioni successive, utilizzare invece il nuovo repo.

  1. Aggiornare i grafici localmente.
$ helm repo update

Avviare Milvus

Una volta installato il grafico Helm, è possibile avviare Milvus su Kubernetes. In questa sezione, vi guideremo attraverso i passaggi per avviare Milvus con il supporto GPU.

È necessario avviare Milvus con Helm specificando il nome della release, il grafico e i parametri che si prevede di modificare. In questa guida, usiamo my-release come nome della release. Per utilizzare un nome di release diverso, sostituire my-release nei comandi seguenti con quello utilizzato.

Milvus consente di assegnare uno o più dispositivi GPU a Milvus.

1. Assegnare un singolo dispositivo GPU

Milvus con supporto GPU permette di assegnare uno o più dispositivi GPU.

  • Cluster Milvus

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

2. Assegnare più dispositivi GPU

Oltre a un singolo dispositivo GPU, è possibile assegnare a Milvus anche più dispositivi GPU.

  • Cluster Milvus

    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
    

    Nella configurazione precedente, l'indexNode e il queryNode condividono due GPU. Per assegnare GPU diverse all'indexNode e al queryNode, è possibile modificare la configurazione impostando extraEnv nel file di configurazione come segue:

    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
    
    • Il nome della release deve contenere solo lettere, numeri e trattini. I punti non sono ammessi nel nome della release.
    • La riga di comando predefinita installa la versione cluster di Milvus durante l'installazione di Milvus con Helm. Per l'installazione di Milvus standalone sono necessarie ulteriori impostazioni.
    • Secondo la guida alla migrazione delle API deprecate di Kuberenetes, la versione API policy/v1beta1 di PodDisruptionBudget non viene più utilizzata a partire dalla v1.25. Si suggerisce di migrare i manifesti e i client API per utilizzare invece la versione API policy/v1.
      Come soluzione per gli utenti che utilizzano ancora la versione API policy/v1beta1 di PodDisruptionBudget su Kuberenetes v1.25 e 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, vedere Grafico Helm e Helm di Milvus.
  • Milvus standalone

    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
    

    Nella configurazione precedente, l'indexNode e il queryNode condividono due GPU. Per assegnare GPU diverse all'indexNode e al queryNode, è possibile modificare la configurazione impostando extraEnv nel file di configurazione come segue:

    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. Controllare lo stato di Milvus

Eseguire il seguente comando per verificare lo stato di Milvus:

$ kubectl get pods

Dopo l'avvio di Milvus, la colonna READY visualizza 1/1 per tutti i pod.

  • Cluster Milvus

    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 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. Inoltrare una porta locale a Milvus

Verificare la porta locale su cui è in ascolto il server Milvus. Sostituite il nome del pod con il vostro.

$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530

Quindi, eseguite il seguente comando per inoltrare una porta locale alla porta su cui Milvus è in ascolto.

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

Facoltativamente, si può usare :19530 invece di 27017:19530 nel comando precedente per lasciare che kubectl assegni una porta locale per l'utente, in modo da non dover gestire conflitti di porte.

Per impostazione predefinita, il port-forwarding di kubectl ascolta solo su localhost. Usate il flag address se volete che Milvus ascolti su uno o tutti gli indirizzi IP selezionati. Il comando seguente fa sì che il port-forward sia in ascolto su tutti gli indirizzi IP del computer host.

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

Disinstallare Milvus

Eseguire il seguente comando per disinstallare Milvus.

$ helm uninstall my-release

Cosa succede dopo

Dopo aver installato Milvus, è possibile

Tradotto daDeepL

Try Managed Milvus for Free

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

Get Started
Feedback

Questa pagina è stata utile?