Crislânio Macêdo
2/2/2022

Abordagens para Disponibilização de Modelos de Machine Learning em Produção

Neste post elucidamos algumas das abordagens para colocar modelos de Machine Learning em produção, a saber: PMML, ONNX, binário e por script. Cada abordagem traz diferentes benefícios, seja no tempo de processamento, interoperabilidade, suporte da comunidade ou versionamento do modelo.

Você gostaria de entender as vantagens / desvantagens da exportação do seu modelo de Machine Learning em diferentes formatos ?

O conteúdo a seguir ajudará no entendimento do empacotamento de modelo (model packaging), que consiste no processo de exportação do modelo de Machine Learning para um formato específico. Descreveremos as vantagens e desvantagens de operar com o seu modelo por meio da abordagem por PMML, ONNX, binário do modelo e por script.

Atenção: um exemplo prático é compartilhado em um notebook em python no final do post.

Abordagens para deploy do modelo

Existem vários formatos para distribuir modelos de Machine Learning. Para atingir um formato distribuível, o modelo deve ser executável como um ativo independente, ou seja, a implantação do modelo deve conseguir receber solicitações e responder de acordo com requisitos preestabelecidos. Vamos estabelecer 2 formas para disponibilização do modelo em produção, a primeira permite a etapa de treinamento, serialização do modelo ou criação do pipeline de treinamento e seu carregamento, usando uma mesma linguagem de programação, podemos ter um modelo interoperável - em que o desenvolvimento pode ser independente da linguagem de programação, os modelos construídos por essa abordagem são traduzidos para uma metalinguagem de acordo com uma especificação, dessa forma, a execução do modelo pode ser feita em diferentes ambientes.

PMML

O PMML ou linguagem de marcação de modelo preditivo é um formato para modelos de Machine Learning. O PMML é que um arquivo XML contendo todas as regras do pipeline do modelo. Cada algoritmo no pipeline possui um parser que transforma a lógica do algoritmo para XML. Existem bibliotecas de código aberto disponíveis que podem converter modelos scikit-learn(python), r2pmml(R)em PMML.

A principal vantagem do PMML é sua portabilidade. Sendo um arquivo XML uma solução preditiva, pode ser implementada operacionalmente sem a necessidade de código customizado. Um modelo simplificado pode ser facilmente interpretado através do XML. A maior desvantagem do formato em questão é que ele não oferece suporte para alguns tipos de algoritmos, sendo necessário construir novas ‘interfaces’ para suportar modelos mais complexos.

Exemplo de uso: integração com ferramentas de mercado como PEGA, IBM Watson, SPSS, KNIME para modelagem preditiva para detecção de fraude.

ONNX, o Open Neural Network Exchange Format é um formato aberto que oferece suporte ao armazenamento e portabilidade de modelos de Machine Learning para diferentes linguagens e bibliotecas, ou seja, é possível treinar o modelo em qualquer linguagem e depois convertê-lo em ONNX para gerar inferência em qualquer ambiente (seja Java, C, C++, .Net, Android, etc). Essa capacidade agnóstica de torna o formato ONNX poderoso em comparação com outros formatos (por exemplo, um arquivo binário pickle que não pode ser inferido em qualquer outra linguagem que não seja Python).

O padrão foi criado em 2017 com o apoio da Microsoft, Facebook e AWS. Surgiu, primeiramente, para suprir a necessidade de interoperabilizar frameworks de redes neurais, como PyTorch, TensorFlow e Caffe, dando suporte em seguida para algoritmos preditivos como CatBoost, XGBoost e LightGBM.

A principal vantagem do ONNX é a interoperabilidade e o acesso ao hardware, com ele é possível acessar otimizações do hardware se a latência for alto intrínseco à problemática. Uma das desvantagens do ONNX é o volume limitado de bibliotecas no formato e o detalhamento da documentação e exemplos.

Exemplo de uso: sistemas embarcados como uma câmera que já possui o modelo de detecção de imagens dentro do sistema.

Binário

A abordagem por um arquivo binário inclui treinar, salvar e carregar o modelo usando a mesma linguagem de programação. Um dos formatos mais famosos é o formato pickle que tem como uma de suas principais desvantagens o fator segurança, sendo possível incluir códigos maliciosos no formato. Uma das principais vantagens é a serialização de diferentes categorias de dados, de textos ou números, e o compartilhamento de objetos (referências ao mesmo objeto em locais diferentes): o pickle armazena o objeto uma vez e garante que todas as outras referências apontem para a cópia mestre. Os objetos compartilhados permanecem compartilhados, o que pode ser muito importante para objetos mutáveis.

Em geral, a abordagem por binário do modelo possui uma grande vantagem que é a simplicidade de exportação e manuseio do binário para diferentes tipos de dados, uma das principais desvantagens é a dependência da linguagem sendo necessário que a exportação e carregamento do binário sejam feitos em uma mesma linguagem, por mais que o modelo de Machine Learning seja salvo em formatos pickle, cloudpickle, joblib etc.

Exemplo de uso: escoragem de um modelo preditivo para detecção de churn via api REST.

Script

Uma abordagem por script inclui gerar o pipeline do treinamento do modelo e aplicação da inferência do modelo para todo dado de escoragem, ou seja, em um modelo online ou batch, usar um pipeline de “escoragem do modelo” significa obter a sua predição para os novos dados. Uma das principais vantagens dessa abordagem é a adequação do pipeline para gerar novas versões do modelo. Uma das principais desvantagens pode ser o tempo de execução, a depender da complexidade do pipeline de inferência, pode haver um tempo de execução demasiado que poderá ultrapassar o sla(tempo aceitável para uma requisição de escoragem) predefinido.

Exemplo de uso: modelos de série temporal em que todo mês é feito um retreino o modelo gerando as predições dos próximos meses.

Simulando todas as abordagens citadas em, Give Me Some Credit 📈📉 deploy model :

Give Me Some Credit 📈📉 deploy model

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com


Quer saber mais sobre o assunto ou descobrir como a Datarisk pode te ajudar nessas questões? Acesse o nosso site e confira também nossos outros artigos no blog. Até mais!

Referências

ml-ops.org
ML/AI is rapidly adopted by new applications and industries. As already been mentioned, the goal of a machine learning…

ml-ops.org

Deploy Machine Learning Projects in Production with Open Standard Models
4 - 7 p.m. Coordinated Universal Time This event has ended. What you'll learn Is this live event for you? Schedule…

www.oreilly.com

Overview of the different approaches to putting Machine Learning (ML) models in production
There are different approaches to putting models into productions, with benefits that can vary dependent on the…

medium.com

Mais artigos da Datarisk

Ver todos os artigos
© Copyright 2017 - 2022 | Datarisk.io | Todos os direitos reservados