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
Installer une StorageClass. Vous pouvez vérifier la StorageClass installée comme suit.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate false
Vérifiez la configuration matérielle et logicielle requise avant l'installation.
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.
- 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.
- 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 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 permet à port-forward d'écouter 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 :
Consulter Quickstart pour voir ce que Milvus peut faire.
Apprendre les opérations de base de Milvus :
Déployer votre cluster Milvus sur des clouds :
Découvrez Milvus Backup, un outil open-source pour les sauvegardes de données Milvus.
Découvrez Birdwatcher, un outil open-source pour le débogage de Milvus et les mises à jour dynamiques de la configuration.
Découvrez Attu, un outil GUI open-source pour la gestion intuitive de Milvus.