Включите исполнение JavaScript в браузере, чтобы запустить приложение.
6 ноя 2024

Что такое ClearML и как данный инструмент помогает в автоматизации ML-процессов

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

Что такое ClearML

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

ClearML же как раз предоставляет разработчикам полный набор инструментов для отслеживания экспериментов, мониторинга ресурсов, автоматизации рабочих задач, тем самым позволяя специалистам оптимизировать, автоматизировать и упростить процесс разработки моделей машинного обучения (machine learning models, MLM). Помимо этого, платформа обладает широкими возможностями для интеграции, и достаточна проста в изучении, благодаря чему все чаще становится выбором команд разработчиков по всему миру.

Основные модули ClearML

Платформа содержит внутри себя несколько модулей, в том числе обеспечивающих ее возможности. Рассмотрим их подробнее:

  • ClearML Python (clearml) — это пакет, служащий для интеграции платформы в существующую кодовую базу. То есть этот пакет позволяет «подключить» проект к платформе;
  • ClearML Server (clearml-server) — можно сказать, центральный компонент платформы, предназначенный для хранения данных экспериментов, моделей и рабочих процессов. Он также поддерживает Web UI для управления и отслеживания экспериментов;
  • ClearML Data (clearml-data) — это модуль, служащий для управления данными и управления версиями поверх файловых систем/хранилищ объектов. Это важный компонент, так как для разработки моделей машинного обучения всегда необходимо управлять большими объемами данных;
  • ClearML Agent (clearml-agent) — это агент оркестровки MLOps и компонент, играющий ключевую роль в обеспечении воспроизводимости экспериментов и рабочих процессов, а также масштабируемости;
  • ClearML Serving (clearml-serving) — это модуль для развертывания и оркестровки моделей машинного обучения, служащий для оптимизации и автоматизации процесса деплоя моделей;
  • ClearML Session (clearml-session) — это инструмент для запуска удаленных экземпляров Jupyter Notebooks и VSCode.

Возможности и недостатки ClearML

Платформа предоставляет пользователям широкий набор инструментов, покрывающий весь цикл разработки ML-продуктов. Рассмотрим некоторые особенности и возможности платформы более подробно:

  • отслеживание и управление экспериментами. Здесь в качестве возможностей стоит упомянуть сохранение значимых деталей эксперимента, таких как гиперпараметры (можно настроить и воспроизвести самые разные гиперпараметры: интенсивность аугментаций, коэффициент скорости обучения и так далее, а также визуализировать влияние этих параметров), версии данных и кода (что делает эксперименты воспроизводимыми), различные метрики, например, F-score. Также платформа позволяет сравнивать эксперименты между собой;
  • управление распределением ресурсов. Платформа позволяет автоматически распределять задачи между вычислительными ресурсами и мониторить их использование в режиме реального времени. Благодаря этой особенности можно избежать узких мест и оптимизировать использование ресурсов (CPU, GPU, память и так далее);
  • бреди функций, связанных с управлением данными, можно отметить версионирование (например, при необходимости можно вернуться к предыдущему набору данных), синхронизацию данных между хранилищами и управление доступом;
  • Большой набор инструментов для развертывания моделей и дальнейшего мониторинга ее работы.

Вместе с этим платформа имеет несколько недостатков:

  • трудности в изучении для начинающих специалистов. Обилие возможностей, функций и настроек платформы изучить полностью непросто, если этим занимается неопытный специалист, но подробная документация и множество примеров от разработчиков платформы значительно упрощают процесс изучения. Опытные же специалисты достаточно легко начинают работать с платформой;
  • недоработанная мобильная версия веб-интерфейса, также иногда возникают проблемы с отображением графиков.

Как начать работу с ClearML

Сначала необходимо зайти на официальный сайт платформы и зарегистрироваться (или войти в уже существующий аккаунт), после этого будет открыт доступ к личному кабинету, в котором нужно перейти в Settings — Workspace и кликнуть на «Create new credentials». Затем нужно установить пакет через стандартный менеджер пакетов pip (для этого на устройстве должен быть установлен Python):

pip install clearml
py

Далее можно воспользоваться Local Python, тогда нужно выполнить следующую команду:

clearml-init
py

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

В результате этих манипуляций в домашний каталог должен быть записан файл clearml.conf. Это конфигурационный файл, в котором можно управлять различными настройками, например, настройками интеграции с Git.

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

from clearml import Task
task = Task.init(project_name='first project', task_name='first experiment')
py

В результате в указанном проекте (first project) будет создана новая задача, также в выводе отобразится идентификатор задачи на сервере и ссылка на эксперимент — ее не нужно каким-то образом сохранять, к эксперименту (задаче) всегда можно перейти через интерфейс платформы. Также в списке проектов (кроме проектов пользователя) отображается проект ClearML examples. Там, соответственно, можно рассмотреть примеры использования платформы.

В дополнение рассмотрим способы работы с датасетами.

  • Создание и загрузка. Датасет можно создавать с SDK двумя способами:
# Первый метод
from clearml import Dataset


dataset = Dataset.create(
    dataset_name='my_new_dataset',  
    dataset_project='my_first_dataset',  )


# Добавление файлов в датасет
dataset.add_files('/path/to/data')
dataset.upload()


# После применения метода finalize() изменить загруженную версию нельзя, можно только создать новую
dataset.finalize()


# Второй метод 
from clearml import Dataset


dataset = Dataset.create(
    dataset_name='my_new_dataset',
    dataset_project='my_first_dataset',
)


dataset.sync_folder('/path/to/data')
dataset.finalize(auto_upload=True)
py

После создания и загрузки датасета может возникнуть необходимость получить доступ к этим данным. Рассмотрим, как это можно сделать:

# Если нужно просто получить доступ к данным (изменять из необходимости нет), то есть два способа
from clearml import Dataset


# Первый способ с использованием имени датасета и проекта
dataset_path = Dataset.get(
    dataset_name='my_new_dataset',
    dataset_project='my_first_dataset'
)


# Второй способ с использованием идентификатора датасета
dataset_path = Dataset.get(dataset_id=<dataset_id>)


# Если данные нужно скачать, но изменять опять же не требуется, то также существует два способа
# Первый способ
dataset_path = Dataset.get(
    dataset_name='my_new_dataset',
    dataset_project='my_first_dataset'
).get_local_copy()


# Второй способ
dataset_path = Dataset.get(dataset_id=<dataset_id>).get_local_copy()


# Если необходимо получить изменяемую локальную копию датасета, то снова есть два метода
# Первый способ
dataset_path = Dataset.get(
    dataset_name='my_new_dataset',
    dataset_project='my_first_dataset').get_mutable_local_copy(target_folder="where/to/save/data")


# Второй способ по идентификатору
dataset_path = Dataset.get(dataset_id=<dataset_id>).get_mutable_local_copy(target_folder="where/to/save/data")
py

Создание новой версии датасета c использованием sync:

from clearml import Dataset


# Создание новой версии
dataset = Dataset.create(
    dataset_name='my_updated_dataset',
    dataset_project='my_first_dataset',
# Идентификатор родительского датасета
    parent_datasets=["<dataset_id>"]
)


# Синхронизация локальной папки с датасетом
dataset.sync_folder(local_path="/path/to/your/local/data")
dataset.finalize(auto_upload=True)
py