Хотите отслеживать модели машинного обучения, используемый гиперпараметр и их соответствующие метрики, продолжайте читать, чтобы изучить 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 позволяет просматривать все модели отслеживания и сравнивать метрики, чтобы решить, какую модель вы хотите создать.

Использованная литература:

Https://mlflow.org/docs/latest/tracking.html#