- BrainTools - https://www.braintools.ru -
В этой статье поговорим про мощный инструмент для организации ML-экспериментов (и не только) с помощью платформы ClearML [1]. Как с помощью нее проводить исследования «по фэншую». Но для начала давайте ответим на следующий вопрос…
Кто имеет четкое понимание по этому вопросу, могут скипнуть эту секцию.
Начать стоит с того, что обучение [2] моделей — это всегда эксперименты с непредсказуемым исходом. Да, докинув новых данных или взяв нейронку пожирнее, мы можем рассчитывать, что качество по итогу станет лучше. Но уверенными в этом мы быть не можем. Все сводится к тому, что мы ставим эксперимент и проверяем результат. Таких экспериментов может быть достаточно много (разные модели, разные версии данных, разные алгоритмы и гиперпараметры), так что можно в них и запутаться. Так вот менеджер позволяет организовать отслеживание (треккинг) эксперимента, его хранение, визуализацию метрик, сравнение с другими, даже сохранение медиа-данных и простой запуск. Обо всем этом пойдет речь далее.
Для чего это надо? Помимо того, что удобно анализировать результаты, вы обеспечиваете воспроизводимость экспериментов. Например, у вас есть лучшие метрики, полученные в результате какого-то эксперимента. И получив новый набор данных, вы намерены дообучить лучшую модель при тех же условиях, т. е. воспроизвести эксперимент. И чтоб это сделать, вам понадобятся сама модель, алгоритм, гиперпараметры, тестовая выборка и все остальное, что может хранить в себе менеджер.
О том, как залогиниться на платформе и получить токены доступа, хорошо расписано в этой статье (см. шаг 1) [3]. Я лишь расскажу о проблеме, которая может возникнуть у вас на данном этапе, как возникла у меня.
В этом случае попробуйте скопировать clearml.conf [4], заполнив поля в блоке api теми данными, что вы получили при создании credentials. Затем поместить файл clearml.conf в home-директорию.
Теперь мы готовы переходить к python-коду. Создадим первый эксперимент «train-experiment-001» в нашем проекте «Car Classification» и добавим некоторую начальную информацию, такую как теги, конфиг, гиперпараметры.
from clearml import Task, Logger
Task.set_credentials(
key='XY77TG37D416FBTF282R',
secret='dYFLBRj7hK3sOkEFp2ivL7Bf1gAML9MLX0uKclMaVlcDWAUc89'
)
task = Task.init(project_name='Car Classification',
task_name='train-experiment-001',
task_type=TaskTypes.training,
auto_connect_frameworks=False)
logger = Logger.current_logger()
task.add_tags(['example'])
hparams = {
'learning_rate': 0.001
}
task.connect(hparams, name='hparams')
В процессе обучения мы периодически вычисляем лосс-функцию (функцию потерь) и набор метрик. Можем объединить несколько линий в один график. В моем случае есть два графика: первый – это Loss с единственной линией CrossEntropy, а второй – с метриками Precision, Recall, Accuracy.
Пожалуйста, не обращайте внимания [5] на вид графиков, потому что это всего лишь пример. Значения сейчас не имеют смысла. В конце всех эпох вы можете записать итоговые (summary) метрики как результат вашего эксперимента. Они отображаются в таблице сверху.
Кроме того, для нашей задачи классификации ClearML позволяет хранить кривые Precision-Recall и ROC, а также confusion matrix.
Может быть полезно хранить медиа-примеры (картинки и аудио). Скажем, в качестве примеров, на которых модель совершила ошибку [6]. Тогда будет возможность их просмотреть/прослушать и, возможно, найти ошибки в данных. В ClearML они так и называются “debug samples“. Я не рекомендую сохранять тонны контента, иначе вы не заметите, как забьете место.
Хочется выделить один из больших плюсов ClearML – это хранение действительно всей необходимой информации об эксперименте. Помимо того, что уже было сказано, здесь есть еще полный контроль над кодом, аргументы командной строки, инфа о докер-контейнере, сканирование stdout, потребление вычислительных ресурсов, конфиг-файлы и другие атрибуты. Некоторые из них можно отключить в Task.init().
Единая таблица всех экспериментов выглядит, как показано ниже. Статус отображает, был ли эксперимент выполнен, провален, просто создан или сейчас работает. Есть возможность создать своего рода прогресс-бар, чтоб отслеживать процесс выполнения.

Чего лично мне не хватает, так это фишки (которая есть, кстати, у MLFlow) закрепить определенную строчку с экспериментом в топе, чтоб она всегда была перед глазами.
На этом мы рассмотрели лишь базовый функционал ClearML, но это еще не все. Далее будет статья о том, как создавать очереди и воркеров для запуска экспериментов прям из веб-браузере.
Если у вас есть вопросы, или свои лайфхаки по ClearML или, наоборот, имеете печальный опыт [7] с данной платформой, делитесь этим в комментариях.
Автор: kochetkover
Источник [8]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/14281
URLs in this post:
[1] ClearML: https://clear.ml/
[2] обучение: http://www.braintools.ru/article/5125
[3] этой статье (см. шаг 1): https://habr.com/ru/companies/magnus-tech/articles/824798/#:~:text=%D0%A8%D0%B0%D0%B3%201.%20%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F%20%D0%B8%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20ClearML
[4] clearml.conf: https://github.com/clearml/clearml/blob/master/docs/clearml.conf
[5] внимания: http://www.braintools.ru/article/7595
[6] ошибку: http://www.braintools.ru/article/4192
[7] опыт: http://www.braintools.ru/article/6952
[8] Источник: https://habr.com/ru/articles/901072/?utm_campaign=901072&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.