milvus-logo
LFAI
Home
  • Comenzar

Ejecutar Milvus con soporte GPU utilizando Helm Chart

Esta página ilustra cómo iniciar una instancia de Milvus con soporte GPU utilizando Helm Chart.

Visión general

Helm utiliza un formato de empaquetado llamado gráficos. Un gráfico es una colección de archivos que describen un conjunto relacionado de recursos Kubernetes. Milvus proporciona un conjunto de gráficos para ayudarle a desplegar dependencias y componentes de Milvus. Milvus Helm Chart es una solución que arranca el despliegue de Milvus en un cluster Kubernetes (K8s) utilizando el gestor de paquetes Helm.

Requisitos previos

Si encuentra algún problema instalando la imagen, contacte con nosotros en community@zilliz.com con detalles sobre el problema, y le proporcionaremos el soporte necesario.

Instalar Helm Chart para Milvus

Helm es un gestor de paquetes K8s que puede ayudarle a desplegar Milvus rápidamente.

  1. Añada el repositorio de Milvus Helm.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/

El repositorio de Milvus Helm Charts en https://milvus-io.github.io/milvus-helm/ ha sido archivado y puede obtener más actualizaciones en https://zilliztech.github.io/milvus-helm/ como se indica a continuación:

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

El repositorio archivado sigue disponible para los gráficos hasta la versión 4.0.31. Para versiones posteriores, utilice el nuevo repositorio.

  1. Actualice los gráficos localmente.
$ helm repo update

Inicie Milvus

Una vez que haya instalado el gráfico Helm, puede iniciar Milvus en Kubernetes. En esta sección, le guiaremos a través de los pasos para iniciar Milvus con soporte GPU.

Debe iniciar Milvus con Helm especificando el nombre de la versión, el gráfico y los parámetros que espera cambiar. En esta guía, utilizamos my-release como nombre de la versión. Para utilizar un nombre de versión diferente, sustituya my-release en los siguientes comandos por el que esté utilizando.

Milvus le permite asignar uno o más dispositivos GPU a Milvus.

1. Asignar un único dispositivo GPU

Milvus con soporte GPU le permite asignar uno o más dispositivos GPU.

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

    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. Asignar múltiples dispositivos GPU

Además de un único dispositivo GPU, también puede asignar múltiples dispositivos GPU a 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
    

    En la configuración anterior, el indexNode y el queryNode comparten dos GPUs. Para asignar diferentes GPUs al indexNode y al queryNode, puede modificar la configuración en consecuencia estableciendo extraEnv en el archivo de configuración como se indica a continuación:

    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
    
    • El nombre de la versión sólo debe contener letras, números y guiones. Los puntos no están permitidos en el nombre de la versión.
    • La línea de comandos por defecto instala la versión cluster de Milvus cuando se instala Milvus con Helm. Se necesita una configuración adicional cuando se instala Milvus de forma independiente.
    • Según la guía de migración de API obsoleta de Kuberenetes, la versión de API policy/v1beta1 de PodDisruptionBudget ya no se sirve a partir de la v1.25. Se sugiere migrar los manifiestos y clientes API para utilizar la versión policy/v1 API en su lugar.
      Como solución para los usuarios que todavía utilizan la versión policy/v1beta1 API de PodDisruptionBudget en Kuberenetes v1.25 y posteriores, puede ejecutar el siguiente comando para instalar 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
    • Consulte Milvus Helm Chart y Helm para obtener más información.
  • Milvus independiente

    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
    

    En la configuración anterior, el indexNode y el queryNode comparten dos GPUs. Para asignar GPUs diferentes al indexNode y al queryNode, puede modificar la configuración en consecuencia estableciendo extraEnv en el archivo de configuración como se indica a continuación:

    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. Comprobar el estado de Milvus

Ejecute el siguiente comando para comprobar el estado de Milvus:

$ kubectl get pods

Tras el inicio de Milvus, la columna READY muestra 1/1 para todos los pods.

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

    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. Reenvíe un puerto local a Milvus

Compruebe en qué puerto local está escuchando el servidor Milvus. Sustituya el nombre del pod por el suyo propio.

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

A continuación, ejecute el siguiente comando para reenviar un puerto local al puerto en el que Milvus presta servicio.

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

Opcionalmente, puede utilizar :19530 en lugar de 27017:19530 en el comando anterior para dejar que kubectl asigne un puerto local para usted de modo que no tenga que gestionar conflictos de puertos.

Por defecto, el reenvío de puertos de kubectl sólo escucha en localhost. Utilice la bandera address si desea que Milvus escuche en las direcciones IP seleccionadas o en todas. El siguiente comando hace que port-forward escuche en todas las direcciones IP de la máquina anfitriona.

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

Desinstalar Milvus

Ejecute el siguiente comando para desinstalar Milvus.

$ helm uninstall my-release

Lo que sigue

Una vez instalado Milvus, puede

Traducido porDeepL

Try Managed Milvus for Free

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

Get Started
Feedback

¿Fue útil esta página?