Специалисты по данным часто сосредотачиваются на изучении данных и их моделировании с использованием правильного алгоритма и забывают о важности 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: Машинное обучение в производстве в Университете Карнеги-Меллона.