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.
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.
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.
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.
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.
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!
ml-ops.org
www.oreilly.com
medium.com