Автор: Илья Бакалец Редактура: Александр Гончаренко

Введение

В предыдущей статье мы познакомились с основными модулями ClearML и подробно рассмотрели модуль работы с данными. Сегодня изучим работу на удаленном сервере и настройку рабочего места с использованием ClearML Session. А еще немного обсудим модуль ClearML Agent. О нем подробнее расскажем в отдельной статье 🙂

ClearML Session — инструмент для запуска удаленных экземпляров Jupyter Notebooks и VSCode внутри любого докер-контейнера в любом развертывании: Cloud / Kubernetes / Bare-Metal.

То есть мы можем создавать рабочие места для ML-инженеров и выделять нужное количество мощностей для каждого из них.

Примеры использования ClearML Session:

  1. Подключение к удаленным серверам с GPU;
  2. Дебаггинг удаленного запуска (воспроизведения) ранее выполненного эксперимента в изолированной среде;
  3. Быстрый перенос рабочего пространства на новый сервер.

Руководитель направления MLOps в компании МТС рассказал о том, как с помощью этого решения можно эффективно распределять мощности и настраивать рабочие места для сотрудников.

Регистрация и установка ClearML

Как и в прошлой статье, начинаем с регистрации на сервере ClearML или разворачиваем свой ClearML локально. Затем получаем креды [более подробно см. в документации].

Поскольку процесс регистрации и установки мы подробно рассматривали в прошлый раз, здесь вы его сможете посмотреть в toggle ниже.

Создание очереди и агента на удаленной машине

Второй этап: создание очереди в ClearML UI и агента на удаленном сервере, который будет слушать эту очередь и выполнять из нее задачи. Но перед этим немного об агентах и очередях.

ClearML Agent — это виртуальная среда и менеджер выполнения решений DL/ML на машинах с GPU, обеспечивающий полноценное кластерное решение.

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

Например, у нас есть код обучения, который был запущен с ClearML отслеживания экспериментов (2 строки в начале вашего скрипта обучения). На сервере ClearML будет создана задача, напомним, что все в clearml это task, для которой сохранятся установленные пакеты с версиями, артефакты, не закоммиченый код, ссылка на репозиторий, запущенный скрипт, графики и др. Все это позволяет воспроизвести эксперимент заново, просто клонировав задачу (task), изменив гиперпараметры и назначив его на очередь. На сервере запущенный агент будет слушать те очереди, на которые вы назначаете задачи. Кроме того, в Clearml UI можно изменять приоритет выполнения задач, слушать несколько очередей и использовать множество других полезных фичей. Но это тема уже для отдельной статьи 🙂

Для закрепления материала по clearml-agent посмотрим на диаграмму из документации. Мы видим, как на сервере ClearML создается задача (Task) и назначается в очередь. Затем она поступает в агент на машине пользователя, где начинается воспроизведение среды и состояния проекта. Далее запускается эксперимент, и его результаты логгируются.