Personalizar o comportamento do modelo para pontuação em lote
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.
Gorjeta
Saiba mais sobre como treinar e acompanhar modelos de aprendizado de máquina com o MLflow no Microsoft Fabric.
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:
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.
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:
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.
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")