Prática DevOps com Docker para Machine Learning
  • Prática de DevOps com Docker para Machine Learning
  • Autores e Agradecimentos
  • Uso do Livro
  • Contribua com o Livro
  • Licença
  • Organização do Livro
  • 1. Introdução
    • 1.1 Máquinas Virtuais e Contêineres
    • 1.2 DevOps e Docker
    • 1.3 Configuração do Ambiente - Python
    • 1.4 Configuração do Ambiente - Docker
    • 1.5 Dockerfile, Imagem e Contêiner Docker
    • 1.6 Docker Hub e Comandos Adicionais
  • 2. Desenvolvimento
    • 2.1 Do notebook para aplicação - parte 1
    • 2.2 Do notebook para aplicação - parte 2
    • 2.3 Do notebook para aplicação - parte 3
  • 3. Produção
    • 3.1 Desenvolvimento vs Produção: o fim ou o início?
    • 3.2 Ambiente de Produção - parte 1
    • 3.3 Ambiente de Produção - parte 2
    • 3.4 Ambiente de Produção - parte 3
  • 4. Monitoramento
    • 4.1 Introdução
    • 4.2 Configurando o Servidor de Monitoramento
    • 4.3 Monitorando Servidores do Ambiente de Produção
    • 4.4 Comandos de Verificação do Nagios
    • 4.5 Criando Verificações Mais Específicas
    • 4.6 Criando Alertas
    • 4.7 Recuperando de Problemas
    • 4.8 Verificação de Contêineres via NRPE
  • 5. Infraestrutura como Código e Orquestração
    • 5.1 Introdução
    • 5.2 Orquestração com Docker Compose
    • 5.3 Orquestração com Kubernetes
  • 6. Integração Contínua
    • 6.1 Introdução
    • 6.2 Controle de Versão
    • 6.3 Configurando um repositório no GitLab
    • 6.4 Branch e merge
    • 6.5 Pipeline de Integração Contínua com GitLab CI/CD
  • 7. Entrega Contínua
    • 7.1 Introdução
    • 7.2 Implantação automática no Docker Hub
    • 7.3 Implantação automática no Heroku
    • 7.4 Implantação automática no Google Kubernetes Engine (GKE)
    • 7.5 Testando tudo junto
  • 8. Model serving
    • 8.1 Introdução
    • 8.2 Model serving com mlserver
    • 8.3 CI/CD com GitLab e mlserver
    • 8.4 Testando tudo junto
  • 9. Model serving batch
    • 9.1 Introdução
    • 9.2 Spark
    • 9.3 Airflow
    • 9.4 Testando tudo junto
  • 10. MLOps com mlflow
    • 10.1 Introdução
    • 10.2 Visão geral do MLflow
    • 10.3 Configuração do MLflow
    • 10.4 Testando MLflow
  • 11. MLOps com Kubeflow
    • 11.1 Visão geral do Kubeflow
    • 11.2 Configuracão
    • 11.3 Kubeflow Pipeline
    • 11.4 Kserve
    • 11.5 Testando tudo junto
  • 12. Conclusão
    • Conclusão
Powered by GitBook
On this page
  1. 8. Model serving

8.1 Introdução

Previous7.5 Testando tudo juntoNext8.2 Model serving com mlserver

Last updated 3 years ago

Até agora temos focado bastante em DevOps. Mostramos aqui todo o ciclo entre desenvolvimento e operação, utilizando Docker e GitLab como ferramentas de automação para as diferentes tarefas desse processo. Mas os exemplos, apesar de serem aplicativos que utilizam Machine Learning, ainda não exploram questões e dificuldades inerentes aos projetos de Machine Learning.

Por exemplo, retorne ao capítulo anterior, e veja como, ao fazer a substituição de um modelo por outro aprimorado (), tivemos que voltar ao notebook original, salvar o novo modelo, substituí-lo no diretório do aplicativo manualmente, depois subir a nova versão Docker com o novo arquivo, testar localmente, testar no ambiente de staging... Tudo isso foi feito de forma manual, o que deveria acender um alerta no leitor. Afinal, desde o início estamos falando que automação é a "alma" do DevOps, não? Será que não daria para automatizar essa parte inerente aos projetos de Machine Learning também?

Além de substituir um modelo por outro, existem outras tarefas que são típicas de um projeto de Machine Learning:

  • Construir pipelines complexos para treinamento e predição;

  • Ajuste de hiperparâmetros;

  • Avaliar modelos por meio de métricas;

  • Controlar execução e resultado de experimentos;

  • Reproduzir experimentos;

  • Empacotar e reutilizar modelos, com versionamento;

  • Gerenciar artefatos e metadados (datasets, modelos e código);

  • Monitorar o desempenho das soluções de ML em produção;

  • Entre outras.

Esse tipo de tarefa normalmente exige um planejamento cuidadoso para que o esforço necessário não se torne uma barreira para a boa qualidade dos produtos entregues. Esse planejamento deve, sempre que possível, fazer uso dos conceitos do DevOps, o que inclui o uso de ferramentas e automação. É esse o assunto que começa agora. Veremos algumas técnicas e ferramentas que auxiliam o engenheiro de machine learning ao longo desse processo.

Para desprezar acentos, lembra?