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!