Použití úlohy úklidu pro ladění hyperparametrů
Ve službě Azure Machine Učení můžete hyperparametry ladit spuštěním úlohy úklidu.
Vytvoření trénovacího skriptu pro ladění hyperparametrů
Pokud chcete spustit úlohu úklidu, musíte vytvořit trénovací skript přesně tak, jak byste to udělali pro jakoukoli jinou trénovací úlohu, s tím rozdílem, že váš skript musí:
- Zahrňte argument pro každý hyperparametr, který chcete změnit.
- Protokolujte cílovou metriku výkonu pomocí MLflow. Protokolovaná metrika umožňuje úloze úklidu vyhodnotit výkon pokusů, které iniciuje, a identifikovat metriku, která vytváří model s nejlepším výkonem.
Poznámka:
Naučte se sledovat experimenty a modely strojového učení pomocí MLflow v rámci služby Azure Machine Učení.
Například následující ukázkový skript trénuje model logistické regrese pomocí argumentu k nastavení hyperparametru míry regularizace a protokoluje metriku přesnosti s názvemAccuracy
:--regularization
import argparse
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import mlflow
# get regularization hyperparameter
parser = argparse.ArgumentParser()
parser.add_argument('--regularization', type=float, dest='reg_rate', default=0.01)
args = parser.parse_args()
reg = args.reg_rate
# load the training dataset
data = pd.read_csv("data.csv")
# separate features and labels, and split for training/validatiom
X = data[['feature1','feature2','feature3','feature4']].values
y = data['label'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)
# train a logistic regression model with the reg hyperparameter
model = LogisticRegression(C=1/reg, solver="liblinear").fit(X_train, y_train)
# calculate and log accuracy
y_hat = model.predict(X_test)
acc = np.average(y_hat == y_test)
mlflow.log_metric("Accuracy", acc)
Konfigurace a spuštění úlohy uklidení
Chcete-li připravit úlohu úklidu, musíte nejprve vytvořit základní úlohu příkazu, která určuje, který skript se má spustit, a definuje parametry používané skriptem:
from azure.ai.ml import command
# configure command job as base
job = command(
code="./src",
command="python train.py --regularization ${{inputs.reg_rate}}",
inputs={
"reg_rate": 0.01,
},
environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest",
compute="aml-cluster",
)
Vstupní parametry pak můžete přepsat vyhledávacím místem:
from azure.ai.ml.sweep import Choice
command_job_for_sweep = job(
reg_rate=Choice(values=[0.01, 0.1, 1]),
)
Nakonec zavolejte sweep()
úlohu příkazu, aby se přemístit nad prostorem hledání:
from azure.ai.ml import MLClient
# apply the sweep parameter to obtain the sweep_job
sweep_job = command_job_for_sweep.sweep(
compute="aml-cluster",
sampling_algorithm="grid",
primary_metric="Accuracy",
goal="Maximize",
)
# set the name of the sweep job experiment
sweep_job.experiment_name="sweep-example"
# define the limits for this sweep
sweep_job.set_limits(max_total_trials=4, max_concurrent_trials=2, timeout=7200)
# submit the sweep
returned_sweep_job = ml_client.create_or_update(sweep_job)
Monitorování a kontrola úloh uklidení
Úlohy úklidu můžete monitorovat v studio Azure Machine Learning. Úloha úklidu zahájí pokusy pro každou kombinaci hyperparametrů, která se má vyzkoušet. Pro každou zkušební verzi můžete zkontrolovat všechny protokolované metriky.
Kromě toho můžete vyhodnotit a porovnat modely vizualizací zkušebních verzí v studiu. Každý graf můžete upravit tak, aby zobrazoval a porovnával hodnoty a metriky hyperparametrů pro každou zkušební verzi.
Tip
Přečtěte si další informace o vizualizaci úloh ladění hyperparametrů.