milvus-logo
LFAI
Home
  • Commencer

Exécution de Milvus avec prise en charge du GPU à l'aide de Helm Chart

Cette page explique comment démarrer une instance Milvus avec prise en charge du GPU à l'aide de Helm Chart.

Vue d'ensemble

Helm utilise un format d'emballage appelé diagramme. Un diagramme est une collection de fichiers qui décrivent un ensemble connexe de ressources Kubernetes. Milvus fournit un ensemble de diagrammes pour vous aider à déployer les dépendances et les composants Milvus. Milvus Helm Chart est une solution qui démarre le déploiement de Milvus sur un cluster Kubernetes (K8s) à l'aide du gestionnaire de paquets Helm.

Conditions préalables

Si vous rencontrez des problèmes lors de l'extraction de l'image, contactez-nous à l'adresse community@zilliz.com en précisant le problème, et nous vous fournirons l'assistance nécessaire.

Installer la carte Helm pour Milvus

Helm est un gestionnaire de paquets K8s qui peut vous aider à déployer Milvus rapidement.

  1. Ajouter le dépôt Milvus Helm.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/

Le dépôt Milvus Helm Charts à l'adresse https://milvus-io.github.io/milvus-helm/ a été archivé et vous pouvez obtenir des mises à jour supplémentaires à l'adresse https://zilliztech.github.io/milvus-helm/ comme suit :

helm repo add zilliztech https://zilliztech.github.io/milvus-helm
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus

Le dépôt archivé est toujours disponible pour les cartes jusqu'à la version 4.0.31. Pour les versions ultérieures, utilisez le nouveau repo à la place.

  1. Mettre à jour les graphiques localement.
$ helm repo update

Démarrer Milvus

Une fois que vous avez installé la carte Helm, vous pouvez démarrer Milvus sur Kubernetes. Dans cette section, nous allons vous guider à travers les étapes pour démarrer Milvus avec le support GPU.

Vous devez démarrer Milvus avec Helm en spécifiant le nom de la version, la carte et les paramètres que vous souhaitez modifier. Dans ce guide, nous utilisons my-release comme nom de version. Pour utiliser un nom de version différent, remplacez my-release dans les commandes suivantes par celui que vous utilisez.

Milvus vous permet d'affecter un ou plusieurs dispositifs GPU à Milvus.

1. Affectation d'un seul périphérique GPU

Milvus avec prise en charge GPU vous permet d'affecter un ou plusieurs dispositifs 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 autonome

    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. Affectation de plusieurs dispositifs GPU

En plus d'un seul dispositif GPU, il est possible d'affecter plusieurs dispositifs GPU à Milvus.

  • 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
    

    Dans la configuration ci-dessus, l'indexNode et le queryNode partagent deux GPU. Pour affecter des GPU différents à l'indexNode et au queryNode, vous pouvez modifier la configuration en conséquence en définissant extraEnv dans le fichier de configuration comme suit :

    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
    
    • Le nom de la version ne doit contenir que des lettres, des chiffres et des tirets. Les points ne sont pas autorisés dans le nom de la version.
    • La ligne de commande par défaut installe la version cluster de Milvus lors de l'installation de Milvus avec Helm. D'autres paramètres sont nécessaires lors de l'installation autonome de Milvus.
    • Selon le guide de migration des API obsolètes de Kuberenetes, la version API policy/v1beta1 de PodDisruptionBudget n'est plus servie à partir de la version 1.25. Il vous est suggéré de migrer les manifestes et les clients API pour utiliser la version API policy/v1 à la place.
      En guise de solution pour les utilisateurs qui utilisent encore la version API policy/v1beta1 de PodDisruptionBudget sur les Kuberenetes v1.25 et ultérieures, vous pouvez exécuter la commande suivante pour installer 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
    • Voir Milvus Helm Chart et Helm pour plus d'informations.
  • Milvus autonome

    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
    

    Dans la configuration ci-dessus, l'indexNode et le queryNode partagent deux GPU. Pour affecter des GPU différents à l'indexNode et au queryNode, vous pouvez modifier la configuration en conséquence en définissant extraEnv dans le fichier de configuration comme suit :

    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. Vérifier l'état de Milvus

Exécutez la commande suivante pour vérifier l'état de Milvus :

$ kubectl get pods

Après le démarrage de Milvus, la colonne READY affiche 1/1 pour tous les pods.

  • 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 autonome

    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. Transférer un port local vers Milvus

Vérifier le port local sur lequel le serveur Milvus écoute. Remplacez le nom du pod par le vôtre.

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

Ensuite, exécutez la commande suivante pour transférer un port local vers le port utilisé par Milvus.

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

En option, vous pouvez utiliser :19530 au lieu de 27017:19530 dans la commande ci-dessus pour permettre à kubectl d'allouer un port local pour vous afin que vous n'ayez pas à gérer les conflits de port.

Par défaut, le port-forwarding de kubectl n'écoute que sur localhost. Utilisez l'indicateur address si vous souhaitez que Milvus écoute sur l'adresse IP sélectionnée ou sur toutes les adresses IP. La commande suivante fait en sorte que port-forward écoute sur toutes les adresses IP de la machine hôte.

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

Désinstaller Milvus

Exécutez la commande suivante pour désinstaller Milvus.

$ helm uninstall my-release

Prochaines étapes

Après avoir installé Milvus, vous pouvez :

Traduit parDeepLogo

Try Managed Milvus for Free

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

Get Started
Feedback

Cette page a-t - elle été utile ?