1
resposta

MLflow - Model Schema Make Predictions

Olá. Na versão do cruso, é utilizada uma versão 1.x , atualmente estou usando a 3.x.
Minha dúvida é a seguinte, após iniciar todo o código, na aula Predict com PyFuncModel, no MLflow tem uma pasta com o nome model que possui o MLflow model assim como o Model Schema e o Make predictions, tanto com o PySpark DataFrame quanto com Pandas DataFrame. Nas versões mais recentes isso não aparece, vi que precisva fazer um signature para que aparecesse como usar o modelo criado no MLflow em outros dados. A pergunta é: Como fazer isso nas versões recentes?

Seguindo o código do mesmo jeito da aula, encontro os seguintes warnings:
WARNING mlflow.xgboost: Failed to infer model signature: could not sample data to infer model signature: please ensure that autologging is enabled before constructing the dataset.
2026/03/06 15:28:54 WARNING mlflow.models.model: artifact_path is deprecated. Please use name instead.

E

1 resposta

Olá, Rafael, tudo bem?

De fato, o curso utiliza uma versão anterior, e nas versões mais recentes algumas mudanças foram feitas na forma como o MLflow registra e exibe informações sobre os modelos.

Nas versões mais antigas, o MLflow frequentemente conseguia inferir automaticamente o schema do modelo, e por isso apareciam na interface as seções Model Schema e Make Predictions (com exemplos para Pandas e Spark).

Nas versões mais recentes, o MLflow passou a exigir com mais frequência que o modelo seja registrado com uma model signature, que descreve quais são as entradas e saídas esperadas do modelo. Quando essa assinatura não é registrada ou não pode ser inferida automaticamente, o MLflow mostra o aviso:

WARNING mlflow.xgboost: Failed to infer model signature

Esse aviso significa apenas que o MLflow não conseguiu identificar automaticamente o formato dos dados de entrada e saída do modelo. Esse warning não impede que o código funcione. O modelo continua sendo treinado, salvo e pode ser carregado normalmente para fazer predições. A diferença é que o MLflow não consegue exibir automaticamente o Model Schema e os exemplos de uso do modelo na interface.

Caso queira registrar essa informação explicitamente nas versões mais recentes, é possível utilizar a função infer_signature ao salvar o modelo (arquivo de treino). Por exemplo:

import mlflow
from mlflow.models import infer_signature

signature = infer_signature(X_treino, modelo.predict(X_treino))

mlflow.xgboost.log_model(
    modelo,
    name="modelo_xgboost",
    signature=signature
)

Assim o MLflow passa a registrar o schema do modelo e volta a mostrar na interface as sugestões de Make Predictions.

Outro aviso foi:

artifact_path is deprecated. Please use name instead.

Esse aviso indica uma mudança na API do MLflow. Em versões antigas era comum registrar o modelo utilizando o parâmetro artifact_path. Nas versões mais recentes, o recomendado é utilizar o parâmetro name.

Portanto, caso o seu código ainda esteja utilizando algo como:

mlflow.xgboost.log_model(modelo, artifact_path="model")

basta substituir por:

mlflow.xgboost.log_model(modelo, name="model")

Fazendo essa troca o warning deixa de aparecer e o código passa a seguir o padrão mais atual da biblioteca.

Então, reforçando, esses avisos aparecem por causa de mudanças entre versões do MLflow. Eles não impedem a execução do código da aula, mas indicam práticas mais atuais para registrar modelos.

Caso queira se aprofundar nesse ponto, a documentação oficial explica bem o funcionamento das model signatures:

Se surgir mais alguma dúvida durante os testes com versões mais recentes da biblioteca, fique à vontade para compartilhar aqui no fórum!

Espero ter ajudado.

Qualquer dúvida que surgir, fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!