Executar o Milvus com suporte para GPU utilizando o Helm Chart
Esta página ilustra como iniciar uma instância do Milvus com suporte para GPU utilizando o Helm Chart.
Visão geral
O Helm utiliza um formato de empacotamento denominado «charts». Um «chart» é um conjunto de ficheiros que descreve um conjunto relacionado de recursos do Kubernetes. O Milvus fornece um conjunto de «charts» para o ajudar a implementar as dependências e os componentes do Milvus. O Helm Chart do Milvus é uma solução que inicia a implementação do Milvus num cluster do Kubernetes (K8s) utilizando o gestor de pacotes Helm.
Pré-requisitos
Instale uma StorageClass. Pode verificar a StorageClass instalada da seguinte forma.
$ 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 tiver alguma dificuldade ao descarregar a imagem, contacte-nos através do endereço community@zilliz.com com detalhes sobre o problema e iremos prestar-lhe o apoio necessário.
Instale o Helm Chart para o Milvus
O Helm é um gestor de pacotes do K8s que o pode ajudar a implementar o Milvus rapidamente.
- Adicione o repositório Helm do Milvus.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/
O repositório de Helm Charts do Milvus em https://milvus-io.github.io/milvus-helm/ foi arquivado e pode obter atualizações adicionais 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 continua disponível para os charts até à versão 4.0.31. Para versões posteriores, utilize o novo repositório.
- Atualize os gráficos localmente.
$ helm repo update
Inicie o Milvus
Depois de instalar o gráfico Helm, pode iniciar o Milvus no Kubernetes. Nesta secção, iremos guiá-lo através dos passos para iniciar o Milvus com suporte para GPU.
Deve iniciar o Milvus com o Helm, especificando o nome da versão, o gráfico e os parâmetros que pretende alterar. Neste guia, utilizamos my-release como nome da versão. Para utilizar um nome de versão diferente, substitua my-release nos comandos seguintes pelo nome que estiver a utilizar.
O Milvus permite-lhe atribuir um ou mais dispositivos de GPU ao Milvus.
1. Atribuir um único dispositivo GPU
O Milvus com suporte a GPU permite-lhe atribuir um ou mais dispositivos GPU.
Cluster do 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 pode atribuir vários dispositivos GPU ao Milvus.
Cluster do 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, existem quatro CPUs disponíveis e cada dataNode e queryNode utiliza duas GPUs. Para atribuir GPUs diferentes ao dataNode 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 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. Não são permitidos pontos no nome da versão.
- A linha de comando predefinida instala a versão em cluster do Milvus ao instalar o Milvus com o Helm. São necessárias configurações adicionais ao instalar o Milvus de forma autónoma.
- De acordo com o guia de migração da API obsoleta do Kubernetes, a versão da API policy/v1beta1 do PodDisruptionBudget deixou de ser suportada a partir da v1.25. Recomenda-se que migre os manifestos e os clientes da API para utilizarem, em vez disso, a versão da API policy/v1.
Como solução alternativa para os utilizadores que ainda utilizam a versão da API policy/v1beta1 do PodDisruptionBudget no Kubernetes v1.25 e versões posteriores, 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 o Milvus Helm Chart e o 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, existem quatro CPUs disponíveis, e cada dataNode e queryNode utiliza duas GPUs. Para atribuir GPUs diferentes ao dataNode 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 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 estado do Milvus
Execute o seguinte comando para verificar o estado do Milvus:
$ kubectl get pods
Após o arranque do Milvus, a coluna « READY » apresenta « 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. Redirecionar uma porta local para o Milvus
Verifique em que porta local o servidor do Milvus está a escutar. Substitua o nome do pod pelo seu.
$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
Em seguida, execute o comando seguinte para encaminhar uma porta local para a porta em que o Milvus está a servir.
$ 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 o kubectl atribua uma porta local por si, de modo a não ter de gerir conflitos de portas.
Por predefinição, o reencaminhamento de portas do `kubectl` apenas escuta em localhost. Utilize o sinalizador address se pretender que o Milvus escute no endereço IP selecionado ou em todos os endereços IP. O comando seguinte faz com que o reencaminhamento de portas escute em todos os endereços IP da máquina anfitriã.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
Agora, pode ligar-se ao Milvus utilizando a porta reencaminhada.
Aceder à WebUI do Milvus
O Milvus inclui uma ferramenta GUI integrada chamada Milvus WebUI, à qual pode aceder através do seu navegador. A Milvus WebUI melhora a observabilidade do sistema com uma interface simples e intuitiva. Pode utilizar a Milvus WebUI para observar as estatísticas e métricas dos componentes e dependências do Milvus, verificar detalhes da base de dados e da recolha de dados e listar configurações detalhadas do Milvus. Para mais detalhes sobre a Milvus WebUI, consulte Milvus WebUI
Para ativar o acesso à interface web do Milvus, é necessário encaminhar a porta do 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 à interface web do Milvus em http://localhost:27018.
Desinstalar o Milvus
Execute o seguinte comando para desinstalar o Milvus.
$ helm uninstall my-release
O Storage V3 está desativado por predefinição. Ative-o antes de utilizar funcionalidades que dependam dele. Para conhecer os requisitos e as considerações de compatibilidade, consulte Storage V3.
Próximos passos
Depois de instalar o Milvus, pode:
Consultar o Guia de Início Rápido para ver o que o Milvus pode fazer.
Aprender as operações básicas do Milvus:
Implemente o seu cluster Milvus nas nuvens:
Explore o Milvus WebUI, uma interface web intuitiva para a monitorização e gestão do Milvus.
Explore o Milvus Backup, uma ferramenta de código aberto para cópias de segurança dos dados do Milvus.
Explore o Birdwatcher, uma ferramenta de código aberto para depuração do Milvus e atualizações dinâmicas de configuração.
Explore o Attu, uma ferramenta GUI de código aberto para a gestão intuitiva do Milvus.