Alura > Cursos de Data Science > Cursos de Data Science > Conteúdos de Data Science > Primeiras aulas do curso MLOps: Machine Learning e APIs

MLOps: Machine Learning e APIs

MLOps primeiros passos - Introdução

Olá, meu nome é Júlio e dou as boas-vindas ao curso MLOps Machine Learning e API's. Aqui nesse curso, vamos aprender um pouco sobre o mundo após o desenvolvimento do modelo. O trabalho do cientista de dados é muito exploratório, nós passamos bastante tempo procurando base de dados, fazendo o tratamento e desenvolvendo modelos. Mas como fazemos se quisermos que outras pessoas consumam as predições desse modelo?

Vamos dar então o primeiro passo no mundo de MLOps através da implantação de um modelo de Machine Learning utilizando o microframework Flask do Python. E como vamos fazer isso? Primeiro, vamos criar uma API “Hello World”, bem simples, “Minha primeira API”, para entender como podemos desenvolver uma API com Flask.

Segundo: vamos aprender como podemos colocar um pouco mais de inteligência dentro dessas API's utilizando bibliotecas com inteligências prontas, como a TextBlob por exemplo. Além disso, vamos desenvolver um modelo próprio utilizando o Colab e a biblioteca do scikit-learn, com uma regressão linear. E como podemos pegar esse modelo que desenvolvemos no Colab, no Notebook, e colocar ele dentro da API para que outras pessoas possam consumir essa inteligência.

Além disso, vamos aprender várias ferramentas de teste de API's, assim como o Postman e também a própria requests do Python. Entrando mais no mundo de boas práticas do MLOps, vamos aprender como podemos garantir a autenticação da nossa API, como podemos criar um ambiente virtual, usar os requirements para garantirmos que as dependências das bibliotecas que nós usamos sejam todas atendidas.

Para quem que esse curso é indicado? Não vamos nos aprofundar tanto na parte de desenvolvimento web, então tudo o que nós vemos do ponto de vista de criação de API, de endpoints, vai ser um pouco mais em alto nível, não vamos entrar tanto no detalhamento sobre verbos HTTP ou arquiteturas de API's.

A ideia aqui é dar um primeiro passo para quem vem do mundo de Machine Learning para conseguir - quem está acostumado a trabalhar com Python, que está acostumado a trabalhar com o Jupyter, com Machine Learning - para conseguir desenvolver a sua primeira API.

Então, caso você tenha interesse em pegar o que você aprendeu aqui e aprofundar no conhecimento, no desenvolvimento web e nos conhecimentos para desenvolvimento de API's bem maduras, eu sugiro procurar vários outros cursos que temos aqui na Alura como prosseguimento desse. Para você aprender um pouco mais sobre o mundo web.

Então esse curso é bem legal para quem já trabalha com Machine Learning e gostaria um pouco de entender como pode criar a sua primeira API. Ou então, caso você já trabalhe com o desenvolvimento web e gostaria um pouco mais, também de alguns exemplos e algumas práticas de quando estamos falando de pegar um modelo de Machine Learning e colocarmos em uma API.

Então, como já dissemos várias vezes sobre Python e Flask, é necessário um conhecimento prévio de Python e de Machine Learning também para você entender um pouco mais a parte de Machine Learning que nós vamos fazer. Muito importante: você vai sair desse curso com um projeto pronto para entrar para o seu portfólio. Vamos para o curso porque o material está muito legal!

MLOps primeiros passos - MLOps

Olá! Primeiramente vamos entender o que é MLOps, ou MLOps, como você preferir. Talvez esse tema surja com a seguinte pergunta: “meu modelo está pronto, e agora?” O trabalho dos cientistas de dados é muito acadêmico, estamos sempre procurando bases de dados, procurando insights dentro das nossas bases de dados, quais são os melhores parâmetros para o nosso modelo, como está a performance preditiva do nosso modelo e coisas do tipo.

Por muitas vezes, esse é o fim do nosso trabalho, ele termina nessa parte de exploração. Mas em outros momentos, queremos utilizar o modelo que criamos no dia a dia. Ou entregar essa inteligência que nós criamos para que outras pessoas possam consultar e utilizar o modelo que criamos.

Ou, caso façamos parte de uma equipe do trabalho maior, pode ser que vamos ter que entregar esse modelo que criamos para que outras pessoas utilizem ele dentro de outras aplicações.

É aí que começamos a ter alguns tipos de problemas e falar um pouco sobre MLOps. Vamos pegar um exemplo para nos ajudar a clarificar melhor: imagine que você desenvolveu um modelo para prever o resultado de uma luta. Esse modelo recebe dois lutadores quaisquer, lutador A vs. lutador B, e entrega a probabilidade que cada lutador ganhe a luta.

Se esse modelo seu ficou muito bom, pode ser que você queira compartilhar esse modelo, pode ser que você queira que outras pessoas possam utilizar. Mas talvez fique um pouco difícil de todo mundo ficar te mandando os lutadores e você ficar rodando o seu modelo dentro da ferramenta que você utilizou para desenvolver, seja Python, seja R. E.

Todo mundo que manda, você roda. Talvez você não consiga escalar a demanda que você tem de pessoas perguntando quem vai ganhar tal luta.

Uma forma legal, talvez, de entregar esse modelo é através de um site. Você pode pegar o seu modelo então e agora colocar em um site. O mundo inteiro pode acessar esse site e descobrir quem vai ganhar a luta que qualquer pessoa queira prever. No entanto, você talvez não saiba fazer um site. Você desenvolveu o modelo.

Talvez você não saiba como fazer um site, mas você tem um colega de trabalho ou um amigo que saiba fazer o site. Esse primeiro problema você conseguiu resolver. Mas quando você vai discutir com esse seu colega de trabalho sobre como fazer o site, talvez você note que as tecnologias que ele utiliza para o desenvolvimento do site são um pouco diferentes das tecnologias que você utiliza para desenvolver o seu modelo.

E ele se pergunta, talvez assim: “poxa, como que eu vou pegar esse modelo que você fez lá no Python, lá no R, e colocar esse modelo dentro do meu site?” E você talvez não entenda um pouco dessas tecnologias dele e se pergunta como que você pode ajuda a pegar aquele modelo que você fez, na tecnologia que você conhece de desenvolvimento de modelos, e ajudar o seu amigo, o seu colega, que vai colocar isso no site.

Aqui temos um problema e que talvez possamos analisar da seguinte forma: quando você desenvolveu o seu modelo, você estava preocupado com a parte de exploração e como chegar no melhor modelo. Essa era a parte do desenvolvimento do seu modelo.

Agora, o seu amigo que está indo fazer o site está preocupado em como esse modelo vai entregar o resultado no dia a dia, como ele vai colocar isso para servir os usuários, para fazer a parte de serving do site para servir a inteligência que o modelo gera.

Então, temos o desenvolvimento. Com você desenvolvendo o seu modelo, e agora o seu amigo no site, talvez com a parte de operação de fato desse modelo, o modelo em operação no site, o ambiente produtivo. O ambiente de produção está desconectado do ambiente que você utilizou para desenvolver.

Essa diferença que estamos enxergando entre diferentes tecnologias, as suas habilidades, do seu amigo que desenvolveu o site e um pouco do ambiente que você tinha para desenvolver e agora o ambiente que você tem de operação. Isso não é novo para o mundo de engenharia de software. Esse problema não é novo para o mundo de engenharia de software.

Na verdade, já é um tema discutido há algum tempo e várias evoluções foram feitas pela comunidade através de tecnologias, através de boas práticas e através de processos, para melhorar a entrega de software. Isso nós damos o nome de cultura DevOps.

Aqui na Alura temos uma formação inteira sobre cultura DevOps, que vai tratar de todos os passos envolvendo tecnologias, processos e pessoas do desenvolvimento, até a operação, que é daí que vem esse nome “DevOps”, “Desenvolvimento e Operação”.

Como a necessidade de cada vez mais modelos de Machine Learning tem escalado muito nos últimos tempos, então nós também começamos a sentir um pouco essa necessidade, de tornarmos esse trabalho de desenvolvimento de modelos de Machine Learning um pouco mais produtivo, um pouco mais robusto e conseguirmos entregar mais modelos de uma forma melhor.

Então nós pegamos esse termo emprestado, DEVOPS, e mudamos ele um pouquinho, chamando de MLOps (Machine Learning Operations). Tudo bem? Então, dentro de Machine Learning Operations, nós vamos tratar também de tecnologias, de processos e de pessoas, para conseguirmos entregar modelos de Machine Learning da melhor forma possível.

MLOps primeiros passos - Aprendendo sobre APIs

Nosso primeiro passo dentro do mundo de MLOps vai ser aprender a entregar modelos de Machine Learning dentro de API's. Para isso, primeiro vamos entender um pouco o que é uma API. Imagine a seguinte situação: você tem um site de um restaurante e você quer colocar uma função dentro desse site, que é calcular a rota de onde o usuário está até a localização do restaurante.

Para isso, você não quer desenvolver um sistema de mapas ultra complexo para colocar dentro do seu site. Nós podemos usar serviços prontos para isso, como o Google Maps. Então, basicamente você tem a origem do usuário e o destino, que é o seu restaurante, e com isso você quer uma rota.

Uma das formas que conseguimos alcançar isso e colocarmos essa informação dentro do nosso site, sem ter que desenvolvermos um sistema de mapas para isso, é utilizando, por exemplo, a API do Google Maps, onde eu mando uma “request”. Eu mando uma chamada com a origem e o destino, em forma de localização, e eu recebo uma resposta, uma “response”, com a rota daquela origem até aquele destino.

Então, o Google consegue me oferecer um serviço onde o que eu estou precisando é a rota. Ele consegue me oferecer um serviço onde eu mando para ele uma “request” com algumas informações e uma resposta com a inteligência que eu estou esperando, sem ter que abrir toda a aplicação do Google Maps, sem ter que abrir tudo o que tem por trás do Google Maps para que essa rota seja calculada.

Lembra de quando estávamos falando sobre o nosso modelo de lutadores, que gostaríamos de disponibilizar para que outras pessoas pudessem utilizar? É um caso muito semelhante, as pessoas teriam que colocar quem são os dois lutadores e o nosso modelo iria integrar a predição.

Mas pode ser que nós gostaríamos também de colocar toda a nossa inteligência dentro de uma caixinha, qualquer um consegue enviar quem são essas pessoas que eu quero fazer a predição da luta, quem são esses lutadores. E eu só quero, só me interessa mesmo a resposta, que é a predição. Então começamos a entender que essa história de colocar a nossa inteligência, o nosso modelo de Machine Learning, dentro de uma API, faz sentido.

Então, para definirmos um pouco esse termo API e começarmos a entender um pouco mais dele, antes de começarmos a desenvolver de fato a nossa API. Podemos definir uma API pelo próprio nome: “Interface de Programação de Aplicações”, ou em inglês, “Application Programming Interface”, que vai ser um ponto de acesso para aplicações, banco de dados ou serviços.

Então nós sempre estamos falando do ponto de acesso de alguma coisa, seja de uma inteligência, de uma aplicação, de um bando de dados e assim por diante.

Então vamos estar falando muito deles quando estamos querendo fazer comunicação entre serviços. Aqui eu estava falando de um site de um restaurante que queria comunicar com o sistema do Google Maps. Poderia ser o site que o nosso amigo desenvolveu, querendo comunicar com a inteligência do nosso modelo que traz a predição de quem vai ser o ganhador da luta.

Agora que nós já sabemos o que é uma API, podemos partir para desenvolver a nossa primeira API.

Sobre o curso MLOps: Machine Learning e APIs

O curso MLOps: Machine Learning e APIs possui 126 minutos de vídeos, em um total de 40 atividades. Gostou? Conheça nossos outros cursos de Data Science em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Data Science acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas