Um aspecto do cenário é a criação de um modelo de aprendizado de máquina. Deve ser utilizável no mundo real e disponível para consumidores e desenvolvedores.
A maneira mais simples e popular de implantar modelos de aprendizado de máquina é incluí-los em uma API REST.
Com uma biblioteca popular chamada FastAPI, é exatamente isso que faremos hoje.
Mas, o que é FastAPI?
A estrutura da Web FastAPI Python foi criada desde o início para aproveitar os recursos contemporâneos do Python.
Para comunicação assíncrona e simultânea com clientes, ele adere ao padrão ASGI, enquanto também é capaz de usar WSGI.
Endpoints e rotas podem empregar funções assíncronas. Além disso, o FastAPI permite a criação produtiva de aplicativos da Web em código Python contemporâneo, limpo e com dicas de tipo.
O principal caso de uso do FastAPI é, como o nome sugere, criar endpoints de API.
Usar o padrão OpenAPI, que inclui uma interface do usuário Swagger interativa, ou fornecer dados de dicionário Python como JSON são maneiras simples de conseguir isso. No entanto, FastAPI não é apenas para APIs.
Ele pode ser usado para oferecer páginas da Web padrão usando o mecanismo de modelo Jinja2 e servir aplicativos utilizando WebSockets, além de praticamente tudo o que uma estrutura da Web pode fazer.
Neste artigo, desenvolveremos um modelo de aprendizado de máquina simples e usaremos o FastAPI para implantá-lo. Vamos começar.
Instalação do FastAPI e criação da primeira API
A instalação da biblioteca e de um servidor ASGI é necessária primeiro; ou Uvuicorn ou Hypercorn funcionará. Ele funciona digitando o seguinte comando no Terminal:
Agora que a API foi criada, você pode usar seu editor de código preferido e navegar por ele. Crie um script Python chamado ml_model.py para começar. Você pode dar um nome diferente ao seu, mas para fins deste post, vou me referir a este arquivo como ml_model.py.
Para criar uma API simples com dois endpoints, você deve concluir as seguintes tarefas:
- Importe as bibliotecas FastAPI e Uvicorn.
- Configure uma instância de classe FastAPI.
- Declare a primeira rota, que, na página de índice, produz um objeto JSON direto.
- Declare a segunda rota, que fornece um objeto JSON direto com uma mensagem personalizada. O parâmetro name é obtido diretamente da URL (por exemplo, https://127.0.0.1:8000/Jay).
- Utilize o Uvicorn para executar a API.
A implementação desses cinco estágios é mostrada no seguinte trecho de código, ou seja. criando uma API simples
Tudo feito! Vamos lançar nossa API imediatamente. Abra uma janela do Terminal ao lado do arquivo ml model.py para fazer isso. A seguir, digite o seguinte:
a tecla Enter. Antes de prosseguir, vamos desmascarar essa afirmação. O primeiro aplicativo usa apenas o nome do arquivo Python, sem a extensão. O segundo aplicativo deve ter o mesmo nome que sua instância FastAPI.
Ao usar -reload, você informa à API que deseja que ela seja recarregada automaticamente ao salvar o arquivo, em vez de começar do zero.
Agora inicie um navegador e navegue até https://127.0.0.1:8000; o resultado deve aparecer da seguinte forma:
Agora você entende como criar uma API simples usando FastAPI.
Construindo e treinando o modelo de Machine Learning
Sem coletar ou analisar quaisquer dados, vamos apenas treinar um modelo simples. Eles não estão relacionados à implantação de modelos e não são essenciais para o tópico em questão.
Um modelo baseado no conjunto de dados Iris pode ser instalado usando o mesmo rede neural método de instalação.
E faremos exatamente isso: baixe o Conjunto de dados Iris e treinar o modelo. Isso não será simples. Para começar, crie um arquivo chamado jaysmlmodel.py.
Nele, você fará o seguinte:
- Importações — Você precisará de pandas, scikit-RandomForecastClassifier, BaseModel do pydantic do learn (você descobrirá o porquê na etapa a seguir) e joblib para armazenar e carregar modelos.
- Declare uma classe IrisSpecies que herda do modelo base. Esta classe contém apenas os campos necessários para prever uma única espécie de flor (mais sobre isso na próxima seção)
- Crie uma classe. IrisModel é uma ferramenta de treinamento e previsão de modelos.
- Declare um método chamado _train model dentro de IrisModel. Ele é usado para treinar modelos usando a técnica Random Forests. O modelo treinado é retornado pelo procedimento.
- Declare uma função de espécie prevista dentro de IrisModel. É utilizado para prever com base em 4 fatores de entrada (medidas de flores). Tanto a previsão (espécies de flores) quanto a probabilidade de previsão são retornadas pelo algoritmo.
- Altere o construtor em IrisModel para que ele carregue o conjunto de dados Iris e treine o modelo se estiver faltando na pasta. Isso resolve o problema de treinar repetidamente novos modelos. A biblioteca joblib é utilizada para carregar e salvar modelos.
Aqui está todo o código:
Espero que a lista acima e os comentários tenham facilitado a compreensão, embora tenha sido uma quantidade considerável de código para criar. Agora que este modelo foi desenvolvido, vamos publicar seus recursos de previsão em um API REST.
Construindo uma API REST completa
Retorne ao arquivo ml_model.py e limpe todos os dados. O clichê será essencialmente o mesmo que você tinha antes, mas devemos recomeçar com um arquivo em branco.
Desta vez, você definirá apenas um endpoint, que é o utilizado para determinar o tipo de flor. IrisModel.predict species(), que foi declarado na seção anterior, é chamado por esse endpoint para realizar a previsão.
O tipo de solicitação é a outra grande mudança. Para transmitir parâmetros em JSON em vez de URL, é recomendável usar POST ao usar aprendizado de máquina APIs.
A frase acima pode ter soado sem sentido se você for um cientista de dados, mas tudo bem. Para projetar e implantar modelos, não é necessário necessariamente ser um especialista em solicitações HTTP e APIs REST.
As tarefas para ml model.py são poucas e diretas:
- Você deve importar o seguinte do arquivo jaymlmodel.py criado anteriormente: uvicorn, FastAPI, IrisModel e IrisSpecies.
- Crie instâncias de FastAPI e IrisModel.
- Declare uma função em https://127.0.0.1:8000/predict para fazer previsões.
- O método IrisModel.predict species() recebe um objeto do tipo IrisSpecies, o transforma em um dicionário e o retorna. Os retornos são a classe esperada e a probabilidade prevista.
- Use uvicorn para executar a API.
Mais uma vez, aqui está o código do arquivo inteiro junto com seus comentários:
Isso é tudo o que você precisa fazer. Na próxima etapa, vamos testar a API.
Testando a API
Digite novamente a seguinte linha no Terminal para executar a API: uvicorn ml_model:app –reload
É assim que a página de documentação aparece:
Então é isso por hoje. Na parte depois disso, vamos concluir.
Conclusão
Hoje, você aprendeu o que é FastAPI e como usá-lo, usando um exemplo simples de API e um exemplo simples de aprendizado de máquina. Você também aprendeu como criar e visualizar a documentação da API, bem como testá-la.
Isso é muito para uma única peça, então não se surpreenda se precisar de algumas leituras para entender corretamente.
Feliz codificação.
Deixe um comentário