Хотите отслеживать модели машинного обучения, используемый гиперпараметр и их соответствующие метрики, продолжайте читать, чтобы изучить mlflow.
В этой статье вы узнаете основы отслеживания моделей, воспользуетесь Mlflow, инструментом с открытым исходным кодом для отслеживания моделей, чтобы отслеживать ваши эксперименты с машинным обучением / глубоким обучением.
Что такое отслеживание моделей?
Отслеживание моделей - это возможность отслеживать изменения, внесенные в ваши модели, чтобы узнать различия. Некоторые из основных изменений, которые необходимо отслеживать в модели:
- Модельная архитектура,
- Значение параметров модели
- Показатели модели
- Данные
- Зависимые библиотеки
Как помогает отслеживание моделей?
Отслеживание моделей помогает с
- Отслеживание всех экспериментов, которые вы и ваша команда могли провести для решения проблемы с помощью ML / DL.
- Сравнение различных показателей модели, чтобы решить, какую модель можно продвигать для производственного развертывания.
- Обеспечение воспроизводимости моделей в разных местах или средах. Отслеживание модели гарантирует, что модель в среде разработки будет такой же, как была развернута в производственной среде.
Общие инструменты отслеживания моделей
Что такое отслеживание Mlflow?
Отслеживание Mlflow организовано вокруг прогонов или экспериментов и записывается в локальные файлы, в базу данных, совместимую с SQLAlchemy, или удаленно на сервер отслеживания.
По умолчанию журналы MLflow Python API запускаются локально в файлы.
MLflow Tracking может использоваться с API Python, REST, R API и Java API.
Какие вещи можно отслеживать с помощью отслеживания Mlflow?
- версия кода: хеш git для кода, используемого для запуска при фиксации кода в git.
- время начала: время начала забега.
- имя запуска: имя запуска указывается в качестве параметра при запуске запуска mlflow.
- источник: имя файла, содержащего запуск mlflow.
- параметры: пары "ключ-значение" параметров или гиперпараметры, установленные для обучения модели.
- метрики: метрики - это пара "ключ-значение", которые обновляются на протяжении всего
- артефакты: это могут быть изображения, архитектура модели или файлы данных, используемые для модели.
Как реализовано отслеживание Mlflow?
Мы реализуем отслеживание модели в наборе данных CIFAR10 с помощью следующего скрипта, который я назвал cifar10_mlflow.py
#Importing required libraries import mlflow import argparse import sys from mlflow import pyfunc import pandas as pd import tensorflow as tf import mlflow.tensorflow import os #Load the cifar10 dataste and normalize the pixel values def load_dataset(): cifar = tf.keras.datasets.cifar10 (x_train, y_train), (x_test, y_test) = cifar.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 return (x_train, y_train), (x_test, y_test) # Build the model def build_model( optimizer='adam', dropout_rate=0.2): model = tf.keras.models.Sequential([ tf.keras.layers.Conv2D(32, (3,3)), tf.keras.layers.MaxPool2D((2,2)), tf.keras.layers.Conv2D(64, (3,3)), tf.keras.layers.MaxPool2D((2,2)), tf.keras.layers.Flatten(input_shape=(32, 32,3)), tf.keras.layers.Dense(52, activation='relu'), tf.keras.layers.Dropout(dropout_rate), tf.keras.layers.Dense(10) ]) print(" In Build Mode", optimizer) if optimizer=='adam': opt = tf.keras.optimizers.Adam(learning_rate=0.0001) elif optimizer=='sgd': opt = tf.keras.optimizers.SGD(learning_rate=0.001) model.compile(optimizer=opt, loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) return model # Enable auto-logging to MLflow to capture TensorBoard metrics. mlflow.tensorflow.autolog() # set the arguments passed to the python script parser = argparse.ArgumentParser() parser.add_argument("--optimizer", default='adam', type=str, help="optimizer") parser.add_argument("--dropout_rate", default=0.2, type=int, help="dropout rate") parser.add_argument("--epochs", default=10, type=int, help="epochs") def main(argv): mlflow.set_tracking_uri("http://127.0.0.1:5000") mlflow.tensorflow.autolog(every_n_iter=1) mlflow.set_experiment(experiment_name="CIFAR_MLFLOW") with mlflow.start_run(run_name="CIFAR") as run: mlflow.set_tag("dev version", "test_1_Adam") args = parser.parse_args(argv[1:]) # Fetch the data (train_x, train_y), (test_x, test_y) = load_dataset() model = build_model(args.optimizer) if args.epochs =='': epochs=10 else: epochs=args.epochs history=model.fit(train_x, train_y, epochs=50) model.save('cifar_10.h5') mlflow.get_artifact_uri("model") mlflow.set_tag("MNIST" , "Dev verison with Adam") mlflow.log_param("optimizer",args.optimizer) mlflow.log_param("Model loss",history.history['loss']) mlflow.log_param("Model Accuracy",history.history['accuracy']) loss, acc =model.evaluate(test_x, test_y, verbose=1) mlflow.log_artifact(r'training.csv') tracking_uri = mlflow.get_tracking_uri() print("Current tracking uri: {}".format(tracking_uri)) if __name__ == "__main__": main(sys.argv)
Давайте разберемся с несколькими вызовами API, используемыми здесь для отслеживания модели с помощью mlflow.
mlflow.tensorflow.autolog (): включает автоматическое ведение журнала из TensorFlow в MLflow для сбора метрик, гиперпараметров и артефактов, таких как сводка модели и журналы TensorBoard. Вы также можете указать частоту, с которой должны регистрироваться показатели, используя параметр every_n_iter.
mlflow.set_experiment (): задает эксперимент с указанным названием эксперимента с помощью параметра имя_эксперимента. Название эксперимента отображается в виде экспериментов в пользовательском интерфейсе mlflow.
mlflow.start_run (): запускает новый запуск MLflow, в котором будут регистрироваться показатели и параметры. Вы должны вызвать end_run (), чтобы завершить текущий запуск.
mlflow.set_tag (): устанавливает тег для текущего запуска с использованием параметров "ключ-значение". вы можете установить пакет тегов для текущего запуска с помощью set_tags ()
mlflow.get_artifact_uri (): возвращает URI, по которому регистрируются артефакты текущего запуска.
mlflow.log_param (): регистрирует один параметр "ключ-значение" в текущем активном прогоне, где ключ и значение являются строками. С помощью mlflow.log_params () можно регистрировать несколько параметров.
mlflow.log_metric (): регистрирует одну метрику "ключ-значение". Значение всегда должно быть числом. Чтобы зарегистрировать несколько показателей, используйте mlflow.log_mterics ()
mlflow.log_artifact (): вы можете регистрировать файлы данных или любые локальные файлы, относящиеся к пониманию модели, указав абсолютный путь. С помощью mlflow.log_artifacts () можно регистрировать несколько артефактов.
mlflow.set_tracking_uri (): подключается к указанному URI отслеживания. Вы можете указать путь к локальному файлу с помощью переменной среды MLFLOW_TRACKING_URI или указать HTTP / HTTPS для удаленного сервера. По умолчанию используется URI mlruns. Должен быть установлен перед запуском.
mlflow.get_tracking_uri (): возвращает текущий URI отслеживания.
Чтобы просмотреть журнал обучения в TensorBoard, введите следующий оператор в командную строку anaconda.
tensorboard --logdir ./mlruns
вы можете просмотреть логи TensorBoard по адресу http: // localhost: 6006 /
Чтобы просмотреть детали отслеживания модели, используйте пользовательский интерфейс mlflow. URI будет HTTP: // localhost: 5000 или URI, указанный в параметре set_tracking_uri.
Метрики, параметры и теги модели можно просмотреть, дважды щелкнув прогоны.
Архитектуру модели можно просмотреть в разделе артефактов, как показано ниже.
вы также можете сравнивать разные модели в рамках одного эксперимента, выбирая их, а затем просматривая показатели и параметры.
Заключение:
Mlflow - это библиотека с открытым исходным кодом, которая позволяет легко отслеживать несколько экспериментов, используя простые вызовы API, используя различные гиперпараметры и архитектуры моделей. Пользовательский интерфейс Mlflow позволяет просматривать все модели отслеживания и сравнивать метрики, чтобы решить, какую модель вы хотите создать.