Blank white background with no objects or features visible.

NOVA PESQUISA: 80% dos custos de IA são invisíveis na fatura. Mais de 200 líderes revelam para onde o dinheiro vai. Leia→

Machine Learning no Kubernetes #2: Arquitetura Kubernetes para MLOps

By TrueFoundry

Updated: March 27, 2023

Operações de aprendizado de máquina (MLOps) são um componente crítico dos fluxos de trabalho modernos de ciência de dados. MLOps envolve o desenvolvimento, implantação e gerenciamento de modelos de aprendizado de máquina e infraestrutura associada. Um dos principais desafios do MLOps é a necessidade de uma infraestrutura escalável e flexível que possa acomodar os requisitos exclusivos das cargas de trabalho de ML. Kubernetes é uma plataforma poderosa que pode fornecer a infraestrutura necessária para suportar MLOps em escala. No entanto, projetar uma arquitetura Kubernetes para MLOps requer consideração cuidadosa de fatores como segurança, gerenciamento de recursos e dependências de aplicativos. Neste blog, exploraremos algumas das melhores práticas para projetar uma arquitetura Kubernetes para MLOps.

Considerações Essenciais no Projeto de Arquitetura MLOps usando Kubernetes

Projeto de Namespaces

Namespaces do Kubernetes fornecem uma maneira de particionar recursos dentro de um cluster. Em uma arquitetura MLOps, é comum usar namespaces para separar diferentes ambientes, como desenvolvimento, teste e produção. Isso ajuda a garantir que aplicativos e serviços sejam isolados uns dos outros e reduz o risco de conflitos de recursos/aplicativos. Um projeto de namespace eficaz também pode melhorar o desempenho geral do cluster e a utilização de recursos.

Ao projetar namespaces para MLOps, considere o seguinte:

  1. Use nomes descritivos que reflitam o propósito do namespace (por exemplo, "dev", "test", "prod").
  2. Use RBAC (controle de acesso baseado em função) para restringir o acesso a namespaces com base nas funções do usuário.
  3. Use cotas de recursos para limitar a quantidade de CPU e memória que pode ser usada por aplicativos em cada namespace

Seleção de Nós

O Kubernetes usa um algoritmo de agendamento para determinar quais nós usar para implantar aplicativos. A seleção adequada de nós pode garantir um desempenho ideal e reduzir a probabilidade de problemas de desempenho e latência de rede.

Ao projetar uma arquitetura Kubernetes para MLOps, é importante considerar os seguintes fatores ao selecionar nós:

  1. O tipo e a quantidade de recursos exigidos pelos aplicativos (por exemplo, CPU, memória, GPU).
  2. A latência da rede entre os nós e o local de armazenamento de dados.
  3. A localização de qualquer hardware especializado necessário para cargas de trabalho de aprendizado de máquina.

Para otimizar a seleção de nós, você pode usar ferramentas como seletores de nós, afinidade de nós e taints e tolerations. Por exemplo, você pode usar seletores de nós para especificar quais nós são adequados para cargas de trabalho de aprendizado de máquina que exigem GPUs.

Exemplo Ilustrativo: Suponha que você tenha um grande conjunto de dados no qual precisa treinar um modelo de aprendizado de máquina e deseja usar uma abordagem de treinamento distribuído para acelerar o processo. Você decide usar TensorFlow e executar o trabalho de treinamento em um cluster Kubernetes. Para otimizar o desempenho do trabalho de treinamento, você quer garantir que os nós selecionados para executar o trabalho tenham a combinação certa de recursos de CPU, GPU, memória e armazenamento. Por exemplo, você pode querer selecionar nós que tenham GPUs com uma certa quantidade de memória, ou nós que tenham armazenamento SSD para acesso mais rápido aos dados.

Como usar seletores de nós e afinidade para o cenário acima?

Neste cenário, você poderia usar rótulos de nós e seletores de nós no Kubernetes para garantir que seu trabalho de treinamento de ML seja executado em nós com a combinação certa de recursos. Você poderia rotular os nós no cluster com base em suas especificações de hardware, como tipo de CPU, tipo de GPU, tamanho da memória e tipo de armazenamento, e então usar seletores de nós na especificação do seu trabalho de treinamento para especificar quais nós usar.

Por exemplo, você poderia definir um seletor de nós na especificação do seu trabalho TensorFlow que seleciona nós com uma certa combinação de rótulos, como "CPU=Intel" e "GPU=Nvidia" e "Memory>=32GB". Isso garantiria que seu trabalho de treinamento fosse executado em nós com as especificações de hardware corretas, o que otimizaria o desempenho do trabalho e reduziria o tempo necessário para treinar o modelo.

Alternativamente, você poderia usar as regras de afinidade e anti-afinidade de nós do Kubernetes para especificar requisitos de agendamento mais complexos, como agendar pods apenas em nós que possuem um determinado conjunto de rótulos ou evitar agendar pods em nós que possuem certos rótulos. Isso proporcionaria um controle mais granular sobre o agendamento do seu trabalho de treinamento e poderia ajudar a garantir que ele seja executado nos nós mais adequados para a tarefa.

Gerenciamento de Recursos

Gerenciar recursos é fundamental para garantir que aplicativos e serviços funcionem de forma suave e eficaz no Kubernetes. Também ajuda a prevenir problemas de desempenho e reduz a probabilidade de falhas

Ao projetar uma arquitetura Kubernetes para MLOps, considere as seguintes melhores práticas para gerenciamento de recursos:

  1. Use requisições e limites de recursos para especificar a quantidade de CPU e memória exigida pelos aplicativos.
  2. Use o autoescalonamento horizontal de pods (HPA) para escalar automaticamente o número de réplicas com base na utilização de CPU ou memória.
  3. Use ferramentas nativas do Kubernetes, como kube-top, kube-state-metrics e Prometheus, para monitorar o uso de recursos.

Alta Disponibilidade

Em uma arquitetura MLOps, a alta disponibilidade é essencial para garantir que os serviços estejam sempre disponíveis para os usuários, mesmo em caso de falhas, melhorando assim a confiabilidade das cargas de trabalho de Machine Learning e reduzindo a probabilidade de interrupções

Para alcançar alta disponibilidade no Kubernetes, considere o seguinte:

  1. Use múltiplas réplicas de aplicativos críticos para garantir que eles possam sobreviver a falhas de nós.
  2. Use um balanceador de carga para distribuir o tráfego para múltiplas réplicas.
  3. Use ferramentas nativas do Kubernetes, como readiness probes e liveness probes, para detectar e recuperar-se de falhas de aplicativos.
Exemplo Ilustrativo: Suponha que você seja uma empresa SaaS que fornece um motor de recomendação baseado em ML para seus clientes. Seu motor de recomendação usa um modelo de deep learning que requer uma quantidade significativa de recursos computacionais para treinar e executar. Você precisa garantir que sua carga de trabalho de ML seja altamente disponível e que você possa alocar recursos de forma eficaz para lidar com as flutuações na demanda.

Gerenciando Recursos e garantindo Alta disponibilidade usando recursos internos do Kubernetes

Para gerenciar seus recursos de forma eficaz, você poderia usar os recursos de gerenciamento de recursos integrados do Kubernetes, como requisições de recursos, limites e cotas. Você poderia definir requisições e limites de recursos para cada componente do seu motor de recomendação, como o servidor web, o banco de dados e o modelo de machine learning. Isso garantiria que cada componente receba a quantidade certa de recursos para funcionar de forma eficiente e que os recursos não sejam desperdiçados com o superprovisionamento.

Além disso, você poderia configurar um autoescalonador horizontal de pods (HPA) no Kubernetes que escala automaticamente seu motor de recomendação com base na demanda. O HPA monitoraria a utilização de recursos da sua carga de trabalho e ajustaria o número de réplicas de cada componente para corresponder à demanda. Isso garantiria que você tenha a quantidade certa de recursos disponíveis para lidar com as flutuações na demanda e que você não esteja super ou subprovisionando.

Para garantir a alta disponibilidade da sua carga de trabalho, você poderia implantar seu motor de recomendação em múltiplas zonas de disponibilidade (AZs) na infraestrutura do seu provedor de nuvem. Você poderia usar as regras de afinidade e anti-afinidade de nós do Kubernetes para garantir que cada componente da sua carga de trabalho seja distribuído por múltiplas AZs. Isso garantiria que, se uma AZ falhar, sua carga de trabalho continuaria a funcionar, assegurando alta disponibilidade.

Além disso, você poderia configurar um balanceador de carga para distribuir o tráfego para as diferentes réplicas do seu componente de servidor web, garantindo que o tráfego seja balanceado entre todas as réplicas disponíveis. Isso evitaria que qualquer réplica individual ficasse sobrecarregada e garantiria que sua carga de trabalho possa lidar com altos níveis de tráfego.

Segurança

A segurança é uma consideração crítica ao projetar uma arquitetura Kubernetes para MLOps e pode ajudar a garantir que as cargas de trabalho de machine learning e os dados associados sejam protegidos contra acesso não autorizado e violações de dados

"A segurança não é apenas uma reflexão tardia para o machine learning; é uma parte central do processo de desenvolvimento. Da coleta de dados à implantação do modelo, cada etapa do pipeline de ML precisa ser considerada sob uma perspectiva de segurança. Isso é especialmente verdadeiro ao lidar com dados sensíveis ou ao implantar modelos em ambientes de produção onde estão expostos a potenciais atacantes. Como profissionais de ML, precisamos ser proativos na identificação e mitigação de riscos de segurança, e avaliar continuamente nossa postura de segurança à medida que novas ameaças surgem."
-Dra. Tracy Hammond, Professora de Ciência da Computação e Engenharia na Texas A&M University e Diretora do Sketch Recognition Lab

Para garantir que sua infraestrutura seja segura, considere as seguintes melhores práticas:

  1. Use RBAC para restringir o acesso aos recursos com base nas funções do usuário.
  2. Use políticas de rede para restringir o tráfego entre namespaces e pods.
  3. Use ferramentas de gerenciamento de segredos, como Vault ou Kubernetes Secrets, para armazenar dados sensíveis, como chaves de API e senhas.
  4. Use imagens de contêiner de fontes confiáveis e as analise em busca de vulnerabilidades usando ferramentas como Clair ou Trivy.

Conclusão

Em conclusão, o Kubernetes oferece uma plataforma poderosa para implementar infraestrutura MLOps que pode acomodar os requisitos únicos das cargas de trabalho de ML. Ao considerar cuidadosamente o design de namespaces, a seleção de nós e o gerenciamento de recursos, os profissionais de ML podem garantir que suas cargas de trabalho de ML estejam sendo executadas de forma eficiente, segura e com alta disponibilidade. Com a crescente demanda por infraestrutura escalável e flexível para cargas de trabalho de ML, o Kubernetes é uma ferramenta valiosa para profissionais de MLOps que desejam se manter à frente. Esperamos que este blog tenha fornecido uma introdução útil à implementação de infraestrutura MLOps no Kubernetes, e o incentivamos a explorar ainda mais esta poderosa plataforma para apoiar seus próprios fluxos de trabalho de ML.

TrueFoundry é uma PaaS de Implantação de ML sobre Kubernetes para acelerar os fluxos de trabalho dos desenvolvedores, ao mesmo tempo que lhes permite total flexibilidade no teste e implantação de modelos, garantindo total segurança e controle para a equipe de Infraestrutura. Através da nossa plataforma, capacitamos as equipes de Machine Learning a implantar e monitorar modelos em 15 minutos com 100% de confiabilidade, escalabilidade e a capacidade de reverter em segundos – permitindo-lhes economizar custos e lançar modelos em produção mais rapidamente, possibilitando a realização de valor de negócio real.  

The fastest way to build, govern and scale your AI

Sign Up
Table of Contents

Govern, Deploy and Trace AI in Your Own Infrastructure

Book a 30-min with our AI expert

Book a Demo

The fastest way to build, govern and scale your AI

Book Demo

Discover More

October 5, 2023
|
5 min read

<Webinar> Vitrine de GenAI para Empresas

Best Fine Tuning Tools for Model Training
May 3, 2024
|
5 min read

As 6 Melhores Ferramentas de Fine Tuning Para Treinamento de Modelos em 2026

May 25, 2023
|
5 min read

LLMs de Código Aberto: Abrace ou Pereça

August 24, 2023
|
5 min read

Implantações de Machine Learning em 2023

May 21, 2026
|
5 min read

Adicionando OAuth2 a Jupyter Notebooks no Kubernetes

Engenharia e Produto
May 21, 2026
|
5 min read

Uma equipe de 2 pessoas atendendo um modelo para 1,5 milhão de pessoas com TrueFoundry

Engenharia e Produto
May 21, 2026
|
5 min read

Acelere o Processamento de Dados em 30–40x com NVIDIA RAPIDS no TrueFoundry

GPU
Engenharia e Produto
May 21, 2026
|
5 min read

Uma Parceria para IA Responsável: Truefoundry e Enkrypt AI

No items found.
No items found.

Recent Blogs

Black left pointing arrow symbol on white background, directional indicator.
Black left pointing arrow symbol on white background, directional indicator.
Take a quick product tour
Start Product Tour
Product Tour