Специалисты по данным часто сосредотачиваются на изучении данных и их моделировании с использованием правильного алгоритма и забывают о важности MLOps. Одним из наиболее важных шагов в MLOps является автоматизация конвейеров машинного обучения и отслеживание экспериментов.

Давайте рассмотрим GuildAI, набор инструментов для отслеживания экспериментов с открытым исходным кодом, который не только легкий, но и не требует дополнительного кода.

Вот ссылка на официальный сайт GuildAI:



Чтобы начать работу с гильдией,

# Install using pip
$pip install guildai
# Check if the installation was successful 
$guild check

Мы используем пример системы рекомендаций фильмов, чтобы проиллюстрировать использование guild. Библиотека Surprise будет использоваться для совместной фильтрации встроенного набора данных Movielens.

Вы можете ознакомиться с официальной документацией по Surprise ниже:



Во-первых, давайте используем алгоритм KNN для обучения и прогнозирования. Пишем простой код, состоящий из двух функций:

  • train: загружает встроенный набор данных и обучает его на KNN.

Примечание. На этом этапе было бы неплохо проверить формат набора данных, если вы еще этого не сделали!

  • предсказать: прогнозирует рейтинг фильма для пользователя uid, элемент iid,с учетом истинного рейтинга r_ui
from surprise import Dataset, KNNBasic
def train():
# Load the movielens-100k dataset
   data = Dataset.load_builtin("ml-100k")
# Retrieve the trainset.
   trainset = data.build_full_trainset()
# Build an algorithm, and train it.
   algo = KNNBasic()
   algo.fit(trainset)
   
   return algo
def predict(uid, iid, r_ui, algo):
# get a prediction for specific users and items.
   pred = algo.predict(uid, iid, r_ui=4, verbose=True)
   print("Prediction is", pred)
uid = 196
iid = 302
r_ui = 4
algo = movie()
predict(uid, iid, r_ui, algo)

Когда мы запускаем приведенный выше код с guild,

$guild run guild_knn.py

мы видим следующий вывод:

Когда скрипт запускается с помощью guild, он

  • Проверяет его на наличие флагов: здесь он обнаруживает iid, uid и r_ui.
  • Создает каталог запуска для отслеживания экспериментов

Чтобы запустить одно и то же для нескольких пользователей, аргументы функции, которые теперь определяются гильдией как флаги, можно напрямую переопределить из командной строки следующим образом:

$guild run guild_knn.py uid=291 iid=1042 r_ui=4

Мы можем запускать и отслеживать несколько экспериментов с помощью приложения просмотра гильдии, которое открывает новую вкладку в браузере и отображает результаты запуска.

$guild view

Мы также можем сравнивать запуски и просматривать журналы в приложении.

Если вам нравится командная строка, вы можете просмотреть запуски следующим образом:

$guild runs

Таким образом, guild можно использовать для запуска и отслеживания нескольких экспериментов, а также для настройки гиперпараметров. Он совместим с Tensorboard, если вы хотите визуализировать свои показатели обучения.

Дополнительные функции для оптимизации моделей, управления прогонами, создания файла гильдии и т. д. можно найти на официальном сайте.

Плюсы и минусы гильдии:

Плюсы:

  • Легко управляйте запусками и отслеживайте эксперименты
  • Очень эффективен для поиска гиперпараметров
  • Прогоны можно копировать на локальное устройство или в облачные сервисы.

Минусы:

  • Ориентирован на одного пользователя, совместная работа может быть затруднена
  • UI/UX не очень хорош и нуждается в доработке
  • Визуализация использует Tensorboard, другие интеграции недоступны.

Примечание. Эта запись в блоге представляет собой задание для курса 17–445/17–645: Машинное обучение в производстве в Университете Карнеги-Меллона.