Использование задания очистки для настройки гиперпараметров
В Машинное обучение Azure можно настроить гиперпараметры, выполнив задание очистки.
Создание скрипта обучения для настройки гиперпараметров
Чтобы выполнить задание очистки, необходимо создать скрипт обучения только так, как вы будете выполнять любое другое задание обучения, за исключением того, что скрипт должен:
- Включать аргумент для каждого гиперпараметра, который требуется варьировать.
- Зайдите в журнал целевой метрики производительности с помощью MLflow. Метрика, зарегистрированная в журнале, позволяет заданию очистки оценить производительность запускаемых проб и определить тот, который создает оптимальную модель.
Примечание.
Узнайте, как отслеживать эксперименты и модели машинного обучения с помощью MLflow в Машинное обучение Azure.
Например, следующий пример скрипта обучает модель логистической регрессии с помощью --regularization
аргумента для задания гиперпараметров скорости нормализации и записывает метрику точности с именемAccuracy
:
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)
Настройка и запуск задания очистки
Чтобы подготовить задание очистки, необходимо сначала создать базовое задание команды, указывающее, какой скрипт будет выполняться и определяет параметры, используемые скриптом:
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",
)
Затем можно переопределить входные параметры с помощью пространства поиска:
from azure.ai.ml.sweep import Choice
command_job_for_sweep = job(
reg_rate=Choice(values=[0.01, 0.1, 1]),
)
Наконец, вызовите sweep()
задание команды для перебора пространства поиска:
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)
Мониторинг и проверка заданий очистки
Вы можете отслеживать задания очистки в Студия машинного обучения Azure. Задание очистки инициирует пробные версии для каждой комбинации гиперпараметров, которые будут проверены. Для каждой пробной версии можно просмотреть все зарегистрированные метрики.
Кроме того, можно оценить и сравнить модели, визуализировав пробные версии в студии. Вы можете настроить каждую диаграмму для отображения и сравнения значений и метрик гиперпараметров для каждой пробной версии.
Совет
Узнайте больше о том, как визуализировать задания настройки гиперпараметров.