curso
MLOps vs DevOps: Diferenças, sobreposições e casos de uso
Cada vez mais, as empresas estão ansiosas para incorporar o aprendizado de máquina (ML) em seus produtos ou aprimorar seus processos usando o ML. Consequentemente, é mais importante do que nunca entender como lidar com suas complexidades juntamente com o software tradicional.
O DevOps foi introduzido para lidar com os desafios relacionados ao desenvolvimento de software. O objetivo é acabar com os silos entre as equipes de desenvolvimento de software e as equipes de operação, levando a uma implantação mais rápida de novos recursos e a lançamentos menos dolorosos desses recursos no ambiente de produção.
O MLOps se baseia nesses princípios, mas aborda os desafios exclusivos do AM, como conjuntos de dados maciços e em rápida evolução, modelos que precisam ser rastreados e versionados e monitoramento para enfrentar desafios como desvio de dados ou desvio de conceito.
Embora ambas as disciplinas compartilhem princípios comuns, elas diferem bastante em seu foco, fluxos de trabalho e ferramentas.
Neste artigo, exploraremos o DevOps e o MLOps, destacando suas semelhanças e diferenças e quando você deve usar cada abordagem. Também analisaremos os fluxos de trabalho típicos e as ferramentas a serem usadas nos diferentes estágios desses fluxos.
Vamos começar!
O que é DevOps?
DevOps é uma metodologia de engenharia de software inventada para acelerar o processo de desenvolvimento e entrega de software. O principal objetivo é melhorar a colaboração entre as equipes de desenvolvimento e operações. Ele preenche a lacuna entre essas funções tradicionalmente isoladas e permite uma entrega de software mais rápida e confiável.
Portanto, o DevOps quer criar uma cultura de colaboração e automatizar o máximo possível para melhorar a eficiência geral e a velocidade com que os novos recursos de software podem ser entregues.
Atualmente, grandes empresas como Meta, Amazon e muitas outras podem fornecer novos recursos de software diariamente graças ao DevOps.
Se você quiser se familiarizar com essa área, recomendo o curso Introduction to DevOps.
Os principais objetivos do DevOps são:
- Ciclos de desenvolvimento de software mais rápidos: Reduza o tempo entre o lançamento e a implantação de um novo recurso para obter ciclos de lançamento mais rápidos e manter a estabilidade.
- Integração contínua e delimuito(CI/CD): Automatize a integração de código, os testes e os pipelines de implantação para melhorar a entrega.
- Colaboração aprimorada: Incentivar a comunicação próxima entre as equipes de desenvolvimento de software e as equipes de operações.
- Eficiência operacional: Reduza as tarefas manuais, minimize os erros e aumente a produtividade por meio da automação.
O DevOps tem os seguintes componentes principais:
- Pipelines de CI/CD:
- Testes automatizados, criação e implementação de código.
- Loops de feedback mais rápidos para os desenvolvedores.
- Redução de erros e aumento da estabilidade.
- Infraestrutura como código (IaC):
- Gerencie a infraestrutura por meio de código em vez de processos manuais.
- Garanta a consistência e a estabilidade.
- A nova infraestrutura pode ser configurada em segundos e sem esforço manual.
- Monitoramento e observabilidade:
- Acompanhe o desempenho do sistema e a integridade do aplicativo em tempo real.
- Identifique e resolva os problemas o mais cedo possível.
Há ferramentas padrão do setor disponíveis que ajudam a implementar os principais componentes do DevOps. Aqui estão alguns dos mais populares:
- Ferramentas de CI/CD: Jenkins, GitLab CI/CD, CircleCI.
- Ferramentas da IaC: Terraform, Ansible, Chef, Puppet.
- Containerização e orquestração: Docker, Kubernetes.
- Ferramentas de monitoramento: Prometheus, Grafana, Datadog.
O que é MLOps?
O MLOps amplia os princípios do DevOps e compartilha o objetivo comum de automatizar processos. O MLOps consiste em práticas projetadas para implantar e manter o aprendizado de máquina na produção de forma contínua, confiável e eficiente.
A parte crítica aqui é que ele se concentra no aprendizado de máquina em produção, e não em modelos treinados em máquinas locais para pequenos experimentos.
Os MLOps podem automatizar e otimizar todos os estágios do ciclo de vida do projeto de aprendizado de máquina.
Ciclo de vida do projeto de aprendizado de máquina. Imagem do autor
Mas, em primeiro lugar, por que precisamos de MLOps? Por que deveríamos investir o esforço adicional para configurar fluxos de trabalho e processos limpos? Vamos ser honestos: Inicialmente, é um grande esforço extra, e os desenvolvedores podem ficar tentados a ignorá-lo para implantar um modelo em produção rapidamente. No entanto, essa abordagem apresenta riscos.
Assim como no desenvolvimento tradicional de software, ignorar os processos limpos e as práticas recomendadas logo no início leva a uma complexidade crescente e à redução da capacidade de manutenção ao longo do tempo.
Esse problema é ainda mais significativo nos sistemas de ML devido aos desafios exclusivos de gerenciar dependências de dados, modelos em evolução e loops de feedback.
Conforme destacado no influenteartigo "Hidden Technical Debt in Machine Learning Systems"(Dívida técnica oculta em sistemas de aprendizado de máquina),os sistemas de aprendizado de máquina acumulam dívida técnica de uma forma que o software tradicional não acumula.
Portanto, sem os princípios de MLOps, o custo de refatorar um sistema de ML incontrolável mais tarde geralmente excede o esforço necessário para criar um fluxo de trabalho robusto.
Recomendo o excelente curso MLOps Concepts se vocêquiser saber mais sobre essa área.
Os principais objetivos dos MLOps são:
- Automação do ciclo de vida do ML: Simplifique processos como coleta de dados, treinamento de modelos, implantação e monitoramento e reduza o esforço manual.
- Reprodutibilidade e consistência: Garanta que os experimentos e fluxos de trabalho sejam repetíveis, levando a resultados confiáveis.
- Colaboração: Apoie a comunicação entre cientistas de dados, engenheiros de ML, engenheiros de dados e equipes de operações.
- Escalabilidade: Permita que os modelos de aprendizado de máquina lidem com cargas de trabalho de produção e se adaptem às crescentes demandas de dados e uso.
- Enfrentando os desafios específicos do ML: Lidar com distribuições de dados variáveis, grandes conjuntos de dados e a necessidade de retreinamento de modelos.
Vamos agora falar sobre os principais componentes dos MLOps:
- Pipelines de treinamento e retreinamento de modelos: A automação do processo de treinamento envolve:
- Pré-processamento de dadose engenharia de recursos.
- Validação do modelo e acompanhamento do desempenho.
- Retreinamento de modelos para adaptação a novos dados, conforme necessário.
- Controle de versão de modelos e dados e rastreamento de experimentos:
- Controle de versões de modelos de ML e dados de treinamento para documentar as alterações ao longo do tempo e permitir reversões.
- Monitore hiperparâmetros, métricas e todos os resultados de uma execução de treinamento usando o rastreamento de experimentos.
- Orquestração de pipeline de dados:
- Automatize a preparação, a transformação e a validação de dados. Certifique-se de que eles sejam confiáveis e repetíveis.
- Enfrentar desafios com conjuntos de dados em constante mudança.
- Monitoramento e manutenção:
- Acompanhe continuamente o desempenho dos modelos em produção para detectar problemas como desvio ou degradação do modelo o mais cedo possível.
- Acione automaticamente o retreinamento do modelo e automatize o treinamento do modelo para atualizar rapidamente os modelos conforme necessário.
- Infraestrutura como código (IaC):
- Use ferramentas como Kubernetes e Terraform para provisionar e gerenciar uma infraestrutura dimensionável para suas cargas de trabalho de ML.
O campo de MLOps ainda está evoluindo rapidamente. No entanto, já existem padrões do setor para a implementação dos componentes principais disponíveis:
- Rastreamento de experimentos: MLFlow ou Weightsand Biases.
- Controle de versão de dados: DVC (Controle de versão de dados).
- Orquestração de pipeline: Apache Airflow, Kubeflow ou Dagster.
- Implementação do modelo: TensorFlow Serving, Seldon Core, Amazon SageMaker.
- Monitoramento: Prometheus, Grafana, WhyLabs.
- Infraestrutura como código: Kubernetes, Docker, Terraform.
Desenvolva habilidades de MLOps hoje mesmo
Diferenças entre MLOps e DevOps
Embora os MLOPs se baseiem no DevOps e, portanto, tenham muitas áreas de sobreposição, eles diferem em foco, artefatos gerenciados, ciclos de vida, ferramentas e estruturas de equipe. Isso se deve principalmente aos desafios e requisitos exclusivos dos fluxos de trabalho de aprendizado de máquina.
Nos próximos subcapítulos, vou me concentrar nas diferenças entre as duas disciplinas em áreas específicas.
Foco e escopo
O DevOps concentra-se em aplicativos de software e garante o desenvolvimento, o teste, a implementação e a manutenção eficientes. O DevOps é centrado no código.
O MLOps concentra-se em modelos de aprendizado de máquina e fluxos de trabalho de dados, abordando desafios de preparação de dados, treinamento de modelos, implantação de modelos e monitoramento.
Para os MLOps, é essencial que o fluxo de trabalho completo de ponta a ponta, desde a preparação dos dados até o treinamento do modelo, seja rastreado e possa ser reproduzido. O MLOps é, portanto, centrado em dados e modelos.
Artefatos gerenciados
Enquanto o DevOps gerencia principalmente artefatos de software, como código-fonte, binários e arquivos de configuração, o MLOps gerencia artefatos específicos de ML, como modelos, conjuntos de dados, recursos e configuração e resultados de experimentos.
Os artefatos de DevOps são estáticos, enquanto os artefatos de MLOps são dinâmicos, pois evoluem por meio de retreinamento e alterações de dados.
Portanto, a principal diferença aqui é que os MLOps devem gerenciar o ciclo de vida do código do software e dos artefatos orientados por dados. É também por isso que o MLOps foi desenvolvido com base no DevOps, mas o amplia em determinadas áreas.
Ciclos de vida
O DevOps se concentra em etapas como criação, teste, implantação e monitoramento. Quando um aplicativo está em produção, seu comportamento é totalmente previsível.
O MLOps se concentra nos mesmos estágios do DevOps, mas incorpora estágios adicionais, como pré-processamento de dados, engenharia de recursos, treinamento e retreinamento de modelos e monitoramento de desvio de dados ou conceitos.
O comportamento do aplicativo é menos previsível e altamente iterativo, pois o modelo precisa de atualizações frequentes para se adaptar às alterações no conjunto de dados.
Portanto, a principal diferença é que os ciclos de vida de MLOps são orientados por dados, enquanto os ciclos de vida de DevOps são mais focados em código.
Ferramentas e pipelines
O DevOps é focado em código e depende de pipelines de CI/CD para automatizar os estágios de criação, teste e implantação. Ferramentas como Gitlab CI/CD, Jenkins ou Terraform podem ser usadas para isso.
O MLOps, por sua vez, precisa criar pipelines para processamento de dados, treinamento de modelos e implantação de modelos. Portanto, você precisa de ferramentas e pipelines para criar fluxos de trabalho de dados e treinamento, o que pode ser feito usando ferramentas como MLFlow, Kubeflow, Airflow ou SageMaker.
Em alguns casos, os pipelines de MLOps também precisam de suporte para infraestrutura exclusiva, como GPUs, o que não é necessário para pipelines de DevOps.
Estrutura da equipe
O DevOps envolve a colaboração entre as equipes de software e de operações. Há também uma clara separação de preocupações, pois os engenheiros de software se concentrarão na codificação, enquanto as equipes de operações se concentrarão na parte da infraestrutura.
Os projetos de MLOps envolvem cientistas de dados, engenheiros de ML, engenheiros de dados e equipes de operações. Além disso, esses projetos também precisam de especialistas no domínio se o cientista de dados não for o principal especialista no domínio.
Isso significa que ambas as disciplinas precisam de estruturas organizacionais diferentes nas empresas.
Áreas de sobreposição entre MLOps e DevOps
Agora que já discutimos as diferenças, podemos nos concentrar nas áreas de sobreposição em ambas as disciplinas.
Para repetir aparte mais importante: O MLOps se baseia no DevOps e o amplia para se adaptar aos desafios exclusivos do aprendizado de máquina. Ambas as disciplinas se concentram na automação de fluxos de trabalho, no aprimoramento da colaboração e na garantia de qualidade e escalabilidade.
Pipelines de CI/CD
Ambas as disciplinas automatizam seus fluxos de trabalhousando pipelines de CI/CD. O MLOps e o DevOps devem gerenciar o código que precisa ser criado, testado e implantado.
Os MLOps estendem isso para incluir validação de dados, treinamento de modelos e pipelines de implantação.
No entanto, ambas as disciplinas geralmente usam CI/CD para simplificar a mudança do desenvolvimento para a produção.
Gerenciamento de infraestrutura
Ambos usam a Infraestrutura como Código (IaC) para provisionar, gerenciar automaticamente e dimensionar a infraestrutura sem etapas manuais. Ferramentas como Docker, Terraform e Kubernetes são amplamente usadas em ambas as disciplinas.
Ambas as disciplinas incluem o provisionamento de servidores de aplicativos, bancos de dados e APIs. O MLOps apenas acrescenta a necessidade de fornecer infraestrutura para lidar com grandes conjuntos de dados, treinamento distribuído e fornecimento de modelos.
Monitoramento e observabilidade
O DevOps e o MLOps dependem de sistemas de monitoramento para detectar problemas o mais cedo possível e garantir a confiabilidade. Ferramentas como Prometheus e Grafana são comumente usadas em ambas as áreas.
Ambas as disciplinas precisam monitorar o desempenho do aplicativo, o tempo de atividade e os registros para depuração. No entanto, os MLOPs adicionam monitoramento para métricas específicas do modelo, como precisão, desvio e latência.
Quando usar MLOps ou DevOps
Agora que já discutimos as áreas de sobreposição e as diferenças entre essas disciplinas, podemos discutir quando usar cada disciplina.
Conforme discutido anteriormente, o MLOps é centrado em dados e sempre faz sentido quando você tem projetos centrados em dados. Esses projetos podem envolver direção autônoma, análise em tempo real ou reconhecimento de imagens.
No entanto, o MLOps também é essencial para produtosem que o aprendizado de máquina é um recurso essencial, como sistemas de recomendação (por exemplo, Netflix, Amazon), detecção de fraudes em serviços financeiros ou aplicativos de processamento de linguagem natural, como chatbots. Você também pode usar MLOps sempre que um modelo de ML precisar ser atualizado e retreinado com frequência.
O DevOps, por outro lado, faz mais sentido para ser usado em aplicativos de software tradicionais que se concentram em serviços da Web, aplicativos móveis ou APIs, para citar alguns exemplos. Isso pode incluir plataformas de comércio eletrônico, sistemas de gerenciamento de conteúdo ou ferramentas de software como serviço (SaaS).
O DevOps também faz sentido sempre que você pretende reduzir os ciclos de desenvolvimento e implantar novos recursos rapidamente, garantindo a confiabilidade do sistema.
Desafios e considerações
MLOps e DevOps são disciplinas poderosas que simplificam os fluxos de trabalho e aumentam a eficiência. No entanto, eles também têm seus desafios.
Os desafios culturais, as complexidades da cadeia de ferramentas e os problemas de dimensionamento devem ser abordados para que você possa implementar essas disciplinas com sucesso.
Vou me concentrar em alguns desafios que enfrentei nos subcapítulos a seguir.
Desafios culturais
O DevOps envolve a colaboração entre os desenvolvedores de software e as equipes de operações.
O MLOps adiciona cientistas de dados, engenheiros de dados e engenheiros de ML. Isso aumenta a necessidade de colaboração multifuncional.
Cada um desses grupos tem suas prioridades e conhecimentos:
- Desenvolvedores de software: Concentre-se no código.
- Equipes de operações: Concentre-se na infraestrutura e em sua confiabilidade e escalabilidade.
- Cientistas de dados: Priorize a experimentação e o desempenho do modelo, portanto, é um código, mas menos focado em princípios de código limpo, como um desenvolvedor de software.
- Engenheiros de dados: Concentre-se nos pipelines de dados.
- Engenheiros de ML: Foco em infraestrutura e escalabilidade para aplicativos de ML.
Esses diferentes conhecimentos e prioridades podem, muitas vezes, levar a problemas de comunicação e objetivos diferentes.
A resistência à mudança é outro desafio a ser superado. Ambas as disciplinas são inovadoras. O objetivo é automatizar os fluxos de trabalho e mudar a maneira como as pessoas pensam e trabalham. Isso geralmente faz com que as pessoas resistam e se recusem a implementar esses fluxos de trabalho em seu dia a dia.
Complexidade da cadeia de ferramentas
Ambas as disciplinas vêm com várias ferramentas que precisam ser provisionadas e aprendidas. No entanto, o cenário de ferramentas para DevOps é menos complexo e mais padronizado do que para MLOps.
O MLOps envolve uma variedade de ferramentas e sua integração pode ser complexa e demorada.
As equipes precisam investir tempo no aprendizado dessas ferramentas, enquanto as equipes de operações precisam integrá-las à infraestrutura da empresa, o que pode gerar dificuldades.
Escalabilidade
Ambas as disciplinas também têm seus desafios com relação à escalabilidade. O DevOps se concentra principalmente no dimensionamento de aplicativos e serviços para atender à demanda dos usuários, enquanto o MLOps precisa lidar com o crescimento de dados e modelos.
Para os MLOps, surgem desafios mais específicos. O ML geralmente requer o processamento de grandes conjuntos de dados e o treinamento de grandes modelos de ML, o que pode exigir uma infraestrutura exclusiva, como GPUs ou TPUs.
O crescimento dos dados apresenta desafios no armazenamento e processamento de dados e em outros tópicos, como controle de versão. Além disso, os modelos precisam ser implantados, e os requisitos de baixa latência podem tornar o serviço de modelos único e desafiador.
Esses desafios tornam ainda mais evidente por que a automação e a IaC são fundamentais para lidar com essas dificuldades.
Conclusão
Neste artigo, discutimos MLOps e DevOps e suas semelhanças e diferenças.
Ambas as disciplinas são essenciais para simplificar os fluxos de trabalho e aumentar a eficiência.
No entanto, o DevOps se concentra principalmente nos processos tradicionais de desenvolvimento e implantação de software, enquanto o MLOps se concentra em projetos centrados em dados e em ML.
O próprio MLOps se baseia nos princípios do DevOps, pois os projetos de ML também contêm software e, portanto, compartilham os princípios básicos.
Mas os MLOps os estendem para enfrentar desafios específicos de AM, como conjuntos de dados grandes e que mudam rapidamente, modelos de AM que precisam ser versionados e retreinados com frequência e monitoramento que precisa abordar problemas como desvio de dados e desvio de conceito.
Se você estiver interessado em saber mais sobre MLOPs e DevOps, recomendo que confira os cursos a seguir:
Desenvolver habilidades de aprendizado de máquina
Perguntas frequentes
Qual é a principal diferença entre MLOps e DevOps?
O MLOps gerencia o ciclo de vida do aprendizado de máquina, incluindo fluxos de trabalho de dados, treinamento de modelos e monitoramento, enquanto o DevOps se concentra nos processos tradicionais de desenvolvimento e implantação de software.
O MLOps e o DevOps podem ser usados juntos?
Sim, o MLOps se baseia nos princípios do DevOps. A maioria dos aplicativos de aprendizado de máquina também envolve o desenvolvimento de software, portanto, a combinação de ambas as práticas geralmente é necessária.
Quais são algumas das ferramentas padrão usadas em MLOps e DevOps?
No MLOps, as ferramentas populares incluem MLflow, Kubeflow e SageMaker, enquanto o DevOps geralmente usa Jenkins, Kubernetes e Terraform para CI/CD e automação de infraestrutura.
Quais são as habilidades necessárias para implementar MLOps de forma eficaz?
A implementação de MLOps requer conhecimento especializado em aprendizado de máquina, engenharia de dados e princípios de DevOps, além de familiaridade com ferramentas como Kubernetes, Airflow e MLflow.
Sou um engenheiro de nuvem com sólida base em engenharia elétrica, aprendizado de máquina e programação. Minha carreira começou na área de visão computacional, com foco na classificação de imagens, antes de fazer a transição para MLOps e DataOps. Sou especialista em criar plataformas MLOps, dar suporte a cientistas de dados e fornecer soluções baseadas em Kubernetes para otimizar os fluxos de trabalho de aprendizado de máquina.
Saiba mais sobre aprendizado de máquina e MLOps com estes cursos!
curso
CI/CD for Machine Learning
curso
MLOps Deployment and Life Cycling

blog
Analista de dados versus analista de negócios: Quais são as diferenças?
blog
Processamento em lote versus processamento em fluxo: Quando usar cada um e por que é importante

Tim Lu
21 min

blog
Guia de casos de uso de ciência de dados
blog
5 habilidades essenciais de engenharia de dados
blog
Contratos de dados desmistificados: Tudo o que você precisa saber

Mike Shakhomirov
24 min

blog