Personalizar o comportamento do modelo para pontuações em lote
Ao treinar um modelo, você deseja usar o modelo para gerar novas previsões. Imagine, por exemplo, que você treinou um modelo de previsão. Toda semana, você aplica o modelo a dados históricos de vendas para gerar a previsão de vendas da próxima semana.
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 usa os novos dados como entrada, executa as transformações necessárias e gera as previsões.
As informações sobre as entradas e saídas esperadas do modelo são armazenadas nos artefatos de modelo criados durante o treinamento do modelo. Ao acompanhar seu modelo com o MLflow, você pode modificar o comportamento esperado do modelo durante a pontuação em lote.
Dica
Saiba mais sobre o treinamento e acompanhamento de modelos de machine learning com o MLflow no Microsoft Fabric.
Personalizar o comportamento do modelo
Ao aplicar um modelo treinado a novos dados, é necessário que o modelo compreenda a forma esperada da entrada de dados e como gerar as previsões. As informações sobre entradas e saídas esperadas são armazenadas, juntamente com outros metadados, no arquivo MLmodel
.
Quando você acompanha um modelo de machine learning com MLflow no Microsoft Fabric, as entradas e saídas esperadas do modelo são inferidas. Com o registro automático no MLflow, a pasta model
e o arquivo MLmodel
são criados automaticamente para você.
Sempre que você quiser alterar as entradas ou saídas esperadas do modelo, poderá alterar a forma como o arquivo MLmodel
é criado quando o modelo é rastreado dentro do workspace do Microsoft Fabric. O esquema da entrada e da saída de dados é definido na assinatura do modelo.
Criar a assinatura do modelo
Depois de acompanhar um modelo com o MLflow durante o treinamento do modelo, você pode encontrar o arquivo MLmodel
na pasta model
, armazenada junto com a execução do experimento:
Ao explorar o arquivo MLmodel
de exemplo, observe 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 a forma como o modelo deve ser aplicado, você pode definir as várias colunas de entrada e saída esperadas.
Vamos explorar um exemplo em que você treina um modelo com scikit-learn e usa o registro automático do MLflow para registrar em log 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 Schema
do MLflow. Você pode especificar as colunas de entrada esperadas, seus tipos de dados e seus respectivos nomes. Da mesma forma, você pode definir o esquema de saída, que geralmente consiste em uma coluna que representa a variável desejada.
Por fim, você cria o objeto de assinatura de modelo usando a classe ModelSignature
do MLflow.
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 arquivo MLmodel
que está armazenado na pasta de saída model
tem a seguinte aparência:
Ao aplicar o modelo por meio do assistente, você encontrará as colunas de entrada claramente definidas e mais fáceis de alinhar com o conjunto de dados para o qual você deseja gerar previsões.
Salvar o modelo no workspace do Microsoft Fabric
Depois de treinar e acompanhar um modelo de machine learning com o MLflow no Microsoft Fabric, você pode inspecionar o conteúdo da pasta de saída model
na execução do experimento. Explorando o arquivo MLmodel
especificamente, você pode decidir se o modelo vai se comportar conforme o esperado durante a pontuação em lote.
Para usar um modelo acompanhado para gerar previsões em lotes, você precisa salvá-lo. Ao salvar um modelo no Microsoft Fabric, você pode:
- Criar um novo modelo.
- Adicionar uma nova versão a um modelo existente.
Para salvar um modelo, você precisa especificar a pasta de saída model
, 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. Normalmente, o modelo treinado é armazenado como um arquivo pickle
na mesma pasta.
Você pode salvar facilmente um modelo navegando até a execução correspondente do experimento na interface do usuário.
Como opção alternativa, é possível salvar um modelo por meio 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")