Personalizar o comportamento do modelo para pontuação em lote

Concluído

Quando você treina um modelo, deseja usá-lo para gerar novas previsões. Imagine, por exemplo, que você treinou um modelo de previsão. A cada semana, você aplica o modelo aos dados históricos de vendas para gerar a previsão de vendas da semana seguinte.

No Microsoft Fabric, você pode usar um modelo salvo e aplicá-lo aos seus dados para gerar e salvar as novas previsões. O modelo toma os novos dados como entrada, executa as transformações necessárias e produz as previsões.

As informações sobre as entradas e saídas esperadas do modelo são armazenadas nos artefatos do modelo que são criados durante o treinamento do modelo. Ao acompanhar seu modelo com MLflow, você pode alterar o comportamento esperado do modelo durante a pontuação em lote.

Personalizar o comportamento do modelo

Para aplicar um modelo treinado a novos dados, o modelo precisa saber qual é a forma da entrada de dados esperada e como produzir as previsões. As informações sobre entradas e saídas esperadas são armazenadas, juntamente com outros metadados, no MLmodel arquivo.

Quando você acompanha um modelo de aprendizado de máquina com MLflow no Microsoft Fabric, as entradas e saídas esperadas do modelo são inferidas. Com o registro automático do MLflow, a model pasta e o MLmodel arquivo são criados automaticamente para você.

Sempre que quiser alterar as entradas ou saídas esperadas do modelo, você poderá alterar a forma como o MLmodel arquivo é criado quando o modelo é rastreado no espaço de trabalho do Microsoft Fabric. O esquema de entrada e saída de dados é definido na assinatura do modelo.

Criar a assinatura do modelo

Depois de acompanhar um modelo com MLflow durante o treinamento do modelo, você pode encontrar o MLmodel model arquivo na pasta, armazenado com a execução do experimento:

Screenshot of the model folder with the MLmodel file selected and opened.

Ao explorar o arquivo de exemplo MLmodel , você percebe que as entradas e saídas esperadas são definidas como tensores. Quando você aplica o modelo por meio do assistente, apenas uma coluna de entrada é mostrada, pois espera-se que os dados de entrada sejam uma matriz.

Screenshot of apply model wizard showing one input column.

Para alterar como o modelo deve ser aplicado, você pode definir as várias colunas de entrada e saída esperadas.

Vamos explorar um exemplo de quando você treina um modelo com scikit-learn e usa o registro automático do MLflow para registrar todos os outros parâmetros e métricas. Para registrar manualmente um modelo, você pode definir log_models=False.

Para definir o esquema de entrada, use a classe MLflow Schema . Você pode especificar as colunas de entrada esperadas, seus tipos de dados e seus nomes. Da mesma forma, você pode definir o esquema de saída, que geralmente consiste em uma coluna que representa a variável de destino.

Finalmente, você cria o objeto de assinatura de modelo usando a classe MLflow ModelSignature .

from sklearn.tree import DecisionTreeRegressor
from mlflow.models.signature import ModelSignature
from mlflow.types.schema import Schema, ColSpec

with mlflow.start_run():
   # Use autologging for all other parameters and metrics
   mlflow.autolog(log_models=False)

   model = DecisionTreeRegressor(max_depth=5)

   # When you fit the model, all other information will be logged 
   model.fit(X_train, y_train)

   # Create the signature manually
   input_schema = Schema([
   ColSpec("integer", "AGE"),
   ColSpec("integer", "SEX"),
   ColSpec("double", "BMI"),
   ColSpec("double", "BP"),
   ColSpec("integer", "S1"),
   ColSpec("double", "S2"),
   ColSpec("double", "S3"),
   ColSpec("double", "S4"),
   ColSpec("double", "S5"),
   ColSpec("integer", "S6"),
   ])

   output_schema = Schema([ColSpec("integer")])

   # Create the signature object
   signature = ModelSignature(inputs=input_schema, outputs=output_schema)

   # Manually log the model
   mlflow.sklearn.log_model(model, "model", signature=signature)

Como resultado, o MLmodel model arquivo armazenado na pasta de saída se parece com:

Screenshot of a customized MLmodel file.

Ao aplicar o modelo por meio do assistente, você pode encontrar as colunas de entrada claramente definidas e mais fáceis de alinhar com o conjunto de dados para o qual deseja gerar previsões.

Screenshot of model wizard for a custom model.

Salve o modelo no espaço de trabalho do Microsoft Fabric

Depois de treinar e acompanhar um modelo de aprendizado de máquina com MLflow no Microsoft Fabric, você pode inspecionar o model conteúdo da pasta de saída na execução do experimento. Ao explorar o arquivo especificamente, você pode decidir se seu modelo vai se comportar como esperado durante a MLmodel pontuação em lote.

Para usar um modelo rastreado para gerar previsões em lote, você precisa salvá-lo. Ao salvar um modelo no Microsoft Fabric, você pode:

  • Crie um novo modelo.
  • Adicione uma nova versão a um modelo existente.

Para salvar um modelo, você precisa especificar a model pasta de saída, pois essa pasta contém todas as informações necessárias sobre como o modelo deve se comportar durante a pontuação em lote e os próprios artefatos do modelo. Comumente, o modelo treinado é armazenado como um pickle arquivo na mesma pasta.

Você pode salvar facilmente um modelo navegando até o respetivo experimento executado na interface do usuário.

Como alternativa, você pode salvar um modelo através do código:

# Get the experiment by name
exp = mlflow.get_experiment_by_name(experiment_name)

# List the last experiment run
last_run = mlflow.search_runs(exp.experiment_id, order_by=["start_time DESC"], max_results=1)

# Retrieve the run ID of the last experiment run
last_run_id = last_run.iloc[0]["run_id"]

# Create a path to the model output folder of the last experiment run
model_uri = "runs:/{}/model".format(last_run_id)

# Register or save the model by specifying the model folder and model name
mv = mlflow.register_model(model_uri, "diabetes-model")