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
Instalar uma StorageClass. Você pode verificar a StorageClass instalada da seguinte maneira.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseVerifique os requisitos de hardware e software antes da instalação.
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.
- 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.
- 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 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 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 pulsarv3.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.
Grupo de 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" EOFNa configuração acima, há quatro CPUs disponíveis, e cada dataNode e queryNode usa duas GPUs. Para atribuir GPUs diferentes ao dataNode e ao queryNode, é possível modificar a configuração de acordo definindo
extraEnvno arquivo de configuração da seguinte forma: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- 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 dataNode: resources: requests: nvidia.com/gpu: "2" limits: nvidia.com/gpu: "2" queryNode: resources: requests: nvidia.com/gpu: "2" limits: nvidia.com/gpu: "2" EOFNa configuração acima, há quatro CPUs disponíveis, e cada dataNode e queryNode usa duas GPUs. Para atribuir GPUs diferentes ao dataNode e ao queryNode, é possível modificar a configuração de acordo, definindo extraEnv no arquivo de configuração da seguinte forma:
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. 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 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 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 port-forward 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
Agora, você pode conectar-se ao Milvus usando a porta encaminhada.
Acessar a WebUI do Milvus
O Milvus vem com uma ferramenta GUI incorporada chamada Milvus WebUI, que pode ser acedida através do seu browser. A Milvus Web UI melhora a observabilidade do sistema com uma interface simples e intuitiva. Pode utilizar a Milvus Web UI para observar as estatísticas e métricas dos componentes e dependências do Milvus, verificar detalhes da base de dados e da coleção, e listar configurações detalhadas do Milvus. Para obter detalhes sobre a Milvus Web UI, consulte Milvus WebUI
Para permitir o acesso à Milvus Web UI, é necessário encaminhar o pod proxy para uma porta local.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
Agora, pode aceder à Milvus Web UI em http://localhost:27018.
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:
Verificar o Quickstart para ver o que o Milvus pode fazer.
Aprender as operações básicas do Milvus:
Implantar seu cluster Milvu em nuvens:
Explore o Milvus WebUI, uma interface web intuitiva para a observabilidade e gestão do Milvus.
Explore o Milvus Backup, uma ferramenta de código aberto para backups de dados do Milvus.
Explore o Birdwatcher, uma ferramenta de código aberto para depuração do Milvus e actualizações de configuração dinâmica.
Explore o Attu, uma ferramenta GUI de código aberto para gerenciamento intuitivo do Milvus.