ML-эксперименты проще с ClearML. ai.. ai. artificial intelligence.. ai. artificial intelligence. clearml.. ai. artificial intelligence. clearml. machinelearning.

В этой статье поговорим про мощный инструмент для организации ML-экспериментов (и не только) с помощью платформы ClearML. Как с помощью нее проводить исследования «по фэншую». Но для начала давайте ответим на следующий вопрос…

Зачем вообще нужен менеджер экспериментов?

Кто имеет четкое понимание по этому вопросу, могут скипнуть эту секцию. 

Начать стоит с того, что обучение моделей — это всегда эксперименты с непредсказуемым исходом. Да, докинув новых данных или взяв нейронку пожирнее, мы можем рассчитывать, что качество по итогу станет лучше. Но уверенными в этом мы быть не можем. Все сводится к тому, что мы ставим эксперимент и проверяем результат. Таких экспериментов может быть достаточно много (разные модели, разные версии данных, разные алгоритмы и гиперпараметры), так что можно в них и запутаться. Так вот менеджер позволяет организовать отслеживание (треккинг) эксперимента, его хранение, визуализацию метрик, сравнение с другими, даже сохранение медиа-данных и простой запуск. Обо всем этом пойдет речь далее. 

Для чего это надо? Помимо того, что удобно анализировать результаты, вы обеспечиваете воспроизводимость экспериментов. Например, у вас есть лучшие метрики, полученные в результате какого-то эксперимента. И получив новый набор данных, вы намерены дообучить лучшую модель при тех же условиях, т. е. воспроизвести эксперимент. И чтоб это сделать, вам понадобятся сама модель, алгоритм, гиперпараметры, тестовая выборка и все остальное, что может хранить в себе менеджер.

ClearML. Регистрация

О том, как залогиниться на платформе и получить токены доступа, хорошо расписано в этой статье (см. шаг 1). Я лишь расскажу о проблеме, которая может возникнуть у вас на данном этапе, как возникла у меня.

команда clearml-init не сработала

В этом случае попробуйте скопировать clearml.conf, заполнив поля в блоке 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.

периодические метрики и summary метрики
периодические метрики и summary метрики

Пожалуйста, не обращайте внимания на вид графиков, потому что это всего лишь пример. Значения сейчас не имеют смысла. В конце всех эпох вы можете записать итоговые (summary) метрики как результат вашего эксперимента. Они отображаются в таблице сверху.

Кроме того, для нашей задачи классификации ClearML позволяет хранить кривые Precision-Recall и ROC, а также confusion matrix.

PR & ROC кривые

PR & ROC кривые
confusion matrix

confusion matrix

Может быть полезно хранить медиа-примеры (картинки и аудио). Скажем, в качестве примеров, на которых модель совершила ошибку. Тогда будет возможность их просмотреть/прослушать и, возможно, найти ошибки в данных. В ClearML они так и называются “debug samples“. Я не рекомендую сохранять тонны контента, иначе вы не заметите, как забьете место.

debug samples
debug samples

Хочется выделить один из больших плюсов ClearML – это хранение действительно всей необходимой информации об эксперименте. Помимо того, что уже было сказано, здесь есть еще полный контроль над кодом, аргументы командной строки, инфа о докер-контейнере, сканирование stdout, потребление вычислительных ресурсов, конфиг-файлы и другие атрибуты. Некоторые из них можно отключить в Task.init().

аргументы командной строки

аргументы командной строки
конфигурационный файл

конфигурационный файл
вывод консоли (stdout)

вывод консоли (stdout)

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

ML-эксперименты проще с ClearML - 8

Чего лично мне не хватает, так это фишки (которая есть, кстати, у MLFlow) закрепить определенную строчку с экспериментом в топе, чтоб она всегда была перед глазами.

Продолжение следует…

На этом мы рассмотрели лишь базовый функционал ClearML, но это еще не все. Далее будет статья о том, как создавать очереди и воркеров для запуска экспериментов прям из веб-браузере.

Если у вас есть вопросы, или свои лайфхаки по ClearML или, наоборот, имеете печальный опыт с данной платформой, делитесь этим в комментариях.

Автор: kochetkover

Источник

Рейтинг@Mail.ru
Rambler's Top100