milvus-logo
LFAI
Home
  • Começar a trabalhar

Executar o Milvus com suporte a GPU usando o Helm Chart

Esta página ilustra como iniciar uma instância do Milvus com suporte a GPU usando o Helm Chart.

Visão geral

O Helm usa um formato de empacotamento chamado gráficos. Um gráfico é uma coleção de arquivos que descrevem um conjunto relacionado de recursos do Kubernetes. O Milvus fornece um conjunto de gráficos para ajudá-lo a implantar dependências e componentes do Milvus. O Milvus Helm Chart é uma solução que inicializa a implantação do Milvus em um cluster do Kubernetes (K8s) usando o gerenciador de pacotes Helm.

Pré-requisitos

Se encontrar algum problema ao puxar a imagem, contacte-nos em community@zilliz.com com detalhes sobre o problema, e forneceremos o suporte necessário.

Instalar o Helm Chart para Milvus

O Helm é um gestor de pacotes K8s que pode ajudá-lo a implementar o Milvus rapidamente.

  1. Adicione o repositório do Milvus Helm.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/

O repositório de gráficos do Milvus Helm em https://milvus-io.github.io/milvus-helm/ foi arquivado e pode obter mais actualizações em https://zilliztech.github.io/milvus-helm/ da seguinte forma:

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

O repositório arquivado ainda está disponível para os gráficos até à versão 4.0.31. Para versões posteriores, utilize o novo repositório.

  1. Atualizar os gráficos localmente.
$ helm repo update

Iniciar o Milvus

Depois de instalar o Helm chart, você pode iniciar o Milvus no Kubernetes. Nesta secção, vamos guiá-lo através dos passos para iniciar o Milvus com suporte para GPU.

Você deve iniciar o Milvus com o Helm especificando o nome da versão, o gráfico e os parâmetros que você espera alterar. Neste guia, usamos my-release como o nome da versão. Para utilizar um nome de versão diferente, substitua my-release nos seguintes comandos pelo nome que está a utilizar.

O Milvus permite-lhe atribuir um ou mais dispositivos GPU ao Milvus.

1. Atribuir um único dispositivo GPU

O Milvus com suporte para GPU permite-lhe atribuir um ou mais dispositivos GPU.

  • Grupo 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 autónomo

    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. Atribuir vários dispositivos GPU

Para além de um único dispositivo GPU, também é possível atribuir vários dispositivos GPU ao Milvus.

  • Agregado de 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
    

    Na configuração acima, o indexNode e o queryNode partilham duas GPUs. Para atribuir GPUs diferentes ao indexNode e ao queryNode, pode modificar a configuração em conformidade, definindo extraEnv no ficheiro de configuração da seguinte forma:

    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
    
    • O nome da versão deve conter apenas letras, números e traços. Os pontos não são permitidos no nome da versão.
    • A linha de comando predefinida instala a versão de cluster do Milvus durante a instalação do Milvus com o Helm. São necessárias outras definições durante a instalação do Milvus autónomo.
    • De acordo com o guia de migração de APIs obsoletas do Kuberenetes, a versão da API policy/v1beta1 do PodDisruptionBudget não é mais servida a partir da v1.25. Sugere-se que migre manifestos e clientes API para usar a versão API policy/v1.
      Como solução alternativa para os utilizadores que ainda usam a versão da API policy/v1beta1 do PodDisruptionBudget no Kuberenetes v1.25 e posterior, pode executar o seguinte comando para instalar o 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 e Helm para obter mais informações.
  • Milvus autónomo

    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
    

    Na configuração acima, o indexNode e o queryNode compartilham duas GPUs. Para atribuir GPUs diferentes ao indexNode e ao queryNode, pode modificar a configuração em conformidade, definindo extraEnv no ficheiro de configuração da seguinte forma:

    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. Verificar o status do Milvus

Execute o seguinte comando para verificar o status do Milvus:

$ kubectl get pods

Após o início do Milvus, a coluna READY exibe 1/1 para todos os pods.

  • Cluster do 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 autônomo

    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. Encaminhar uma porta local para o Milvus

Verifique em qual porta local o servidor Milvus está escutando. Substitua o nome do pod pelo seu próprio nome.

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

Em seguida, execute o seguinte comando para encaminhar uma porta local para a porta em que o Milvus serve.

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

Opcionalmente, pode utilizar :19530 em vez de 27017:19530 no comando acima para permitir que kubectl atribua uma porta local para si, para que não tenha de gerir conflitos de portas.

Por predefinição, o encaminhamento de portas do kubectl apenas escuta em localhost. Use a flag address se quiser que o Milvus escute nos endereços IP selecionados ou em todos. O comando a seguir faz com que o encaminhamento de porta escute em todos os endereços IP na máquina host.

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

Desinstalar o Milvus

Execute o seguinte comando para desinstalar o Milvus.

$ helm uninstall my-release

O que se segue

Depois de instalar o Milvus, você pode:

Traduzido porDeepLogo

Try Managed Milvus for Free

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

Get Started
Feedback

Esta página foi útil?