Exécuter Milvus avec prise en charge du GPU à l'aide d'un Helm Chart
Cette page explique comment démarrer une instance Milvus avec prise en charge GPU à l'aide d'un Helm Chart.
Présentation
Helm utilise un format de packaging appelé « charts ». Un « chart » est un ensemble de fichiers décrivant un ensemble de ressources Kubernetes associées. Milvus fournit un ensemble de « charts » pour vous aider à déployer ses dépendances et ses composants. Le Helm Chart Milvus est une solution qui permet de lancer le déploiement de Milvus sur un cluster Kubernetes (K8s) à l’aide du gestionnaire de paquets Helm.
Prérequis
Créez un cluster K8s avec des nœuds de travail équipés de GPU.
Installez 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 falseVérifiez la configuration matérielle et logicielle requise avant l’installation.
Si vous rencontrez des difficultés pour récupérer l’image, contactez-nous à l’adresse community@zilliz.com en précisant les détails du problème, et nous vous fournirons l’assistance nécessaire.
Installez le Helm Chart pour Milvus
Helm est un gestionnaire de paquets K8s qui vous permet de déployer Milvus rapidement.
- Ajoutez le référentiel Helm de Milvus.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/
Le référentiel Helm Charts de Milvus disponible à l'adresse https://milvus-io.github.io/milvus-helm/ a été archivé. Vous pouvez désormais obtenir les mises à jour sur 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 référentiel archivé est toujours disponible pour les charts jusqu’à la version 4.0.31. Pour les versions ultérieures, utilisez plutôt le nouveau référentiel.
- Mettez à jour les charts localement.
$ helm repo update
Démarrez Milvus
Une fois le chart Helm installé, vous pouvez démarrer Milvus sur Kubernetes. Dans cette section, nous vous guiderons à travers les étapes nécessaires pour démarrer Milvus avec la prise en charge des GPU.
Vous devez démarrer Milvus avec Helm en spécifiant le nom de la version, le chart et les paramètres que vous souhaitez modifier. Dans ce guide, nous utilisons « my-release » comme nom de version. Pour utiliser un autre nom de version, remplacez « my-release » dans les commandes suivantes par celui que vous utilisez.
Milvus vous permet d’attribuer un ou plusieurs périphériques GPU à Milvus.
1. Attribuer un seul périphérique GPU
Milvus avec prise en charge des GPU vous permet d’attribuer un ou plusieurs périphériques GPU.
Cluster Milvus
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.yamlMilvus 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 pulsarv3.enabled=false -f custom-values.yaml
2. Attribuer plusieurs cartes GPU
En plus d’un seul périphérique GPU, vous pouvez également attribuer plusieurs périphériques GPU à Milvus.
Cluster Milvus
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" EOFDans la configuration ci-dessus, quatre processeurs sont disponibles, et chaque dataNode et queryNode utilise deux GPU. Pour attribuer des GPU différents au dataNode 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 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- 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 en cluster de Milvus lors de l’installation de Milvus avec Helm. Des paramètres supplémentaires sont nécessaires lors de l’installation de Milvus en mode autonome.
- Conformément au guide de migration des API obsolètes de Kubernetes, la version API policy/v1beta1 de PodDisruptionBudget n’est plus prise en charge à partir de la version v1.25. Il est recommandé de migrer les manifestes et les clients API afin d’utiliser la version API policy/v1 à la place.
À titre de solution de contournement pour les utilisateurs qui utilisent encore la version « policy/v1beta1 » de l’API PodDisruptionBudget sur Kubernetes v1.25 et versions 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 - Pour plus d’informations, consultez les sections « Milvus Helm Chart » et « Helm ».
Milvus en mode autonome
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" EOFDans la configuration ci-dessus, quatre processeurs sont disponibles, et chaque dataNode et queryNode utilise deux GPU. Pour attribuer des GPU différents au dataNode 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 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. Vérifier l’état de Milvus
Exécutez la commande suivante pour vérifier l’état de Milvus :
$ kubectl get pods
Une fois Milvus démarré, 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 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 3m24sMilvus 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. Rediriger un port local vers Milvus
Vérifiez sur quel port local le serveur Milvus est à l'é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 rediriger un port local vers le port sur lequel Milvus est accessible.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
Si vous le souhaitez, vous pouvez utiliser :19530 à la place de 27017:19530 dans la commande ci-dessus pour laisser kubectl allouer un port local à votre place, ce qui vous évitera d’avoir à gérer les conflits de ports.
Par défaut, la redirection de port 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 configure la redirection de port pour qu’elle é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
Vous pouvez désormais vous connecter à Milvus via le port redirigé.
Accéder à l’interface Web de Milvus
Milvus est fourni avec un outil graphique intégré appelé Milvus WebUI, accessible via votre navigateur. Milvus WebUI améliore la visibilité du système grâce à une interface simple et intuitive. Vous pouvez utiliser Milvus WebUI pour consulter les statistiques et les métriques des composants et des dépendances de Milvus, vérifier les détails de la base de données et des collections, et afficher la liste détaillée des configurations de Milvus. Pour plus de détails sur l’interface Web de Milvus, consultez la section Milvus WebUI
Pour activer l’accès à l’interface Web de Milvus, vous devez rediriger le port du pod proxy vers un port local.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
Vous pouvez désormais accéder à l’interface Web de Milvus à l’adresse http://localhost:27018.
Désinstaller Milvus
Exécutez la commande suivante pour désinstaller Milvus.
$ helm uninstall my-release
Storage V3 est désactivé par défaut. Activez-le avant d’utiliser les fonctionnalités qui en dépendent. Pour connaître la configuration requise et les considérations de compatibilité, consultez la section Storage V3.
Étapes suivantes
Une fois Milvus installé, vous pouvez :
Consulter le Guide de démarrage rapide pour découvrir les fonctionnalités de Milvus.
Apprendre les opérations de base de Milvus :
Déployez votre cluster Milvus sur le cloud :
Découvrez Milvus WebUI, une interface web intuitive pour la surveillance et la gestion de Milvus.
Découvrez Milvus Backup, un outil open source dédié aux sauvegardes de données Milvus.
Découvrez Birdwatcher, un outil open source permettant le débogage de Milvus et les mises à jour dynamiques de la configuration.
Découvrez Attu, un outil GUI open source permettant une gestion intuitive de Milvus.