Glossário

Kubernetes

Descobre como o Kubernetes simplifica as cargas de trabalho de IA/ML com implementação de modelos escaláveis, formação distribuída e gestão eficiente de recursos.

Treina os modelos YOLO simplesmente
com Ultralytics HUB

Aprende mais

O Kubernetes, frequentemente abreviado para K8s, é uma plataforma de código aberto concebida para automatizar a implementação, o dimensionamento e a operação de contentores de aplicações. Originalmente concebido por Google, o Kubernetes é agora mantido pela Cloud Native Computing Foundation. Essencialmente, actua como um orquestrador para aplicações contentorizadas, gerindo-as num cluster de computadores para que sejam executadas de forma eficiente e fiável. Para os utilizadores familiarizados com a aprendizagem automática, pensa no Kubernetes como o maestro de uma orquestra, garantindo que todos os diferentes instrumentos (os componentes da aplicação de IA/ML) funcionam em conjunto de forma harmoniosa e em escala.

O que é a Kubernetes?

Na sua essência, o Kubernetes é um sistema para gerir aplicações em contentores. Os contêineres empacotam o código de software e suas dependências para que os aplicativos possam ser executados de maneira uniforme e consistente em diferentes ambientes de computação. O Docker é uma tecnologia de contentorização popular frequentemente utilizada com o Kubernetes. O Kubernetes automatiza muitos dos processos manuais envolvidos na implantação, no gerenciamento e no dimensionamento desses aplicativos em contêineres. Agrupa os contêineres que compõem um aplicativo em unidades lógicas para facilitar o gerenciamento e a descoberta. Essas unidades, chamadas pods, são implantadas em um cluster de máquinas. O Kubernetes então lida com tarefas como:

  • Descoberta de serviços e balanceamento de carga: O Kubernetes pode expor um contentor utilizando o nome DNS ou o seu próprio endereço IP. Se o tráfego para um contentor for elevado, o Kubernetes pode equilibrar a carga e distribuir o tráfego de rede para que a implementação seja estável.
  • Orquestração de armazenamento: O Kubernetes permite-te montar automaticamente o sistema de armazenamento da tua escolha, como o armazenamento local, fornecedores de nuvens públicas e muito mais.
  • Rollouts e rollbacks automatizados: Podes descrever o estado desejado para os teus contentores implementados utilizando o Kubernetes, e este altera o estado atual para o estado desejado a uma taxa controlada. Por exemplo, o Kubernetes pode automatizar a criação de novos contêineres para sua implantação, remover contêineres existentes e adotar todos os seus recursos para o novo contêiner.
  • Empacotamento automático de contentores: O Kubernetes permite-te especificar a quantidade de CPU e RAM (memória) que cada contentor necessita. O Kubernetes pode encaixar os contentores nos seus nós para fazer o melhor uso dos seus recursos.
  • Auto-cura: O Kubernetes reinicia os contentores que falham, substitui e reprograma os contentores quando os nós morrem, elimina os contentores que não respondem à sua verificação de saúde definida pelo utilizador e não os anuncia aos clientes até estarem prontos a servir.
  • Gestão de segredos e configurações: O Kubernetes permite-te armazenar e gerir informações confidenciais, como palavras-passe, tokens OAuth e chaves SSH. Podes implementar e atualizar segredos e configuração de aplicações sem reconstruir as imagens de contentores e sem expor segredos na configuração da pilha.

Porque é que a Kubernetes é relevante para a IA e o ML?

O Kubernetes é particularmente relevante no domínio da IA e da aprendizagem automática devido à natureza intensiva em recursos e escalável das cargas de trabalho de ML. Treinar modelos grandes, especialmente Ultralytics YOLO modelos para deteção de objectos, requer frequentemente computação distribuída em várias GPUs ou TPUs. O Kubernetes fornece a infraestrutura para gerenciar esses recursos distribuídos de forma eficiente.

Além disso, a implantação de modelos de IA/ML para inferência em escala requer uma infraestrutura robusta e escalável. O Kubernetes simplifica a implantação de modelos, permitindo que os utilizadores contentorizem os seus modelos e os sirvam através de APIs escaláveis. Isso é crucial para aplicações do mundo real que exigem baixa latência de in ferência e alta taxa de transferência.

Aplicações de Kubernetes em IA/ML

  1. Servir de modelo escalável: Considera uma aplicação de deteção de objectos em tempo real, como um sistema de gestão de tráfego de uma cidade inteligente que utiliza Ultralytics YOLOv8. À medida que a cidade cresce, a demanda por processamento de feeds de vídeo de mais câmeras aumenta. O Kubernetes permite escalar a infraestrutura de fornecimento de modelos dinamicamente. Ao implantar seu modelo YOLOv8 como um serviço em contêiner no Kubernetes, é possível aumentar ou diminuir facilmente o número de instâncias do modelo com base no tráfego de entrada, garantindo um desempenho consistente mesmo sob carga pesada. Essa escalabilidade é essencial para manter a baixa latência e a alta disponibilidade em aplicativos de IA em tempo real.

  2. Formação distribuída: O treino de modelos de IA de última geração requer frequentemente conjuntos de dados maciços e um poder computacional significativo. O treinamento distribuído em um cluster de máquinas torna-se necessário para reduzir o tempo de treinamento. O Kubernetes pode orquestrar trabalhos de treinamento distribuído gerenciando a distribuição da carga de trabalho em vários nós, monitorando o progresso e lidando com falhas. Por exemplo, podes usar o Kubernetes para gerir um trabalho de treino distribuído para um modelo de classificação de imagem grande usando um conjunto de dados como o ImageNet. O Kubernetes garante que cada nó de treinamento seja configurado corretamente, que os dados sejam distribuídos de forma eficiente e que o processo geral de treinamento seja resiliente a falhas de nó.

Em resumo, o Kubernetes é uma ferramenta poderosa para gerenciar as complexidades das cargas de trabalho de IA e ML, fornecendo escalabilidade, resiliência e eficiência para as fases de treinamento e implantação. Sua capacidade de orquestrar aplicativos em contêineres o torna uma plataforma ideal para criar e executar sistemas de IA modernos e escalonáveis.

Lê tudo