Registre e sirva modelos com MLflow
O registro de modelos permite que o MLflow e o Azure Databricks acompanhem os modelos; o que é importante por duas razões:
- O registro de um modelo permite que você forneça o modelo para inferência em tempo real, streaming ou em lote. O registro facilita o processo de uso de um modelo treinado, já que agora os cientistas de dados não precisam desenvolver código de aplicativo; o processo de serviço cria esse wrapper e expõe uma API REST ou um método para pontuação em lote automaticamente.
- O registo de um modelo permite-lhe criar novas versões desse modelo ao longo do tempo; dando-lhe a oportunidade de acompanhar as alterações de modelo e até mesmo realizar comparações entre diferentes versões históricas de modelos.
Registar um modelo
Ao executar um experimento para treinar um modelo, você pode registrar o próprio modelo como parte da execução do experimento, conforme mostrado aqui:
with mlflow.start_run():
# code to train model goes here
# log the model itself (and the environment it needs to be used)
unique_model_name = "my_model-" + str(time.time())
mlflow.spark.log_model(spark_model = model,
artifact_path=unique_model_name,
conda_env=mlflow.spark.get_default_conda_env())
Quando você revisa a execução do experimento, incluindo as métricas registradas que indicam o quão bem o modelo prevê, o modelo é incluído nos artefatos de execução. Em seguida, você pode selecionar a opção para registrar o modelo usando a interface do usuário no visualizador de experimentos.
Como alternativa, se você quiser registrar o modelo sem revisar as métricas na execução, você pode incluir o parâmetro registered_model_name no método log_model, caso em que o modelo é registrado automaticamente durante a execução do experimento.
with mlflow.start_run():
# code to train model goes here
# log the model itself (and the environment it needs to be used)
unique_model_name = "my_model-" + str(time.time())
mlflow.spark.log_model(spark_model=model,
artifact_path=unique_model_name
conda_env=mlflow.spark.get_default_conda_env(),
registered_model_name="my_model")
Você pode registrar várias versões de um modelo, permitindo que você compare o desempenho das versões do modelo durante um período de tempo antes de mover todos os aplicativos cliente para a versão com melhor desempenho.
Usando um modelo para inferência
O processo de usar um modelo para prever rótulos a partir de novos dados de recursos é conhecido como inferência. Você pode usar o MLflow no Azure Databricks para disponibilizar modelos para inferência das seguintes maneiras:
- Hospede o modelo como um serviço em tempo real com um ponto de extremidade HTTP para o qual os aplicativos cliente podem fazer solicitações REST.
- Use o modelo para executar a inferência de streaming perpétuo de rótulos com base em uma tabela delta de recursos, gravando os resultados em uma tabela de saída.
- Use o modelo para inferência em lote com base em uma tabela delta, gravando os resultados de cada operação em lote em uma pasta específica.
Você pode implantar um modelo para inferência em sua página na seção Modelos do portal do Azure Databricks, conforme mostrado aqui: