ClearML

Лев Коваленко — Senior DS Engineer

Варианты использования

  • ClearML SaaS
  • Частное облако (VPC)
  • Локальная развертка
  • Управляемое VPC

Архитектура ClearML

ClearML agent

Основные команды

Подключение к ClearML серверу

~/clearml.conf

api {
    web_server: "http://localhost:8008"
    api_server: "http://localhost:8080"
    files_server: "http://localhost:8081"
}

Трекинг экспериментов

from clearml import Task


def main():
    ...
    task = Task.init(project_name='great project', task_name='best experiment')
    ...
    task.set_progress(0)
    ...
    task.set_progress(50)
    print(task.get_progress())
    ...
    task.set_progress(100)

Что логирует clear ml

  • Hyperparameters
    • Command Line Parsing
      • click
      • argparse
      • Python Fire
      • LightningCLI
    • TensorFlow Definitions (absl-py)
    • Hydra
  • Metrics, scalars, plots
    • Matplotlib
    • Tensorboard
    • TensorboardX
  • Execution details including
    • Git information
    • Uncommitted code modifications
    • Python environment
    • Execution configuration
  • Models
    • TensorFlow
    • Keras
    • PyTorch
    • AutoKeras
    • CatBoost
    • Fast.ai
    • LightGBM
    • MegEngine
    • MONAI
    • scikit-learn (only using joblib)
    • XGBoost (only using joblib)
    • YOLOv8
    • YOLOv5

ClearML Task

Получение эксперимента по ID

prev_task = Task.get_task(task_id='123456deadbeef')

Получение эксперимента по имени

prev_task = Task.get_task(
    project_name='great project',
    task_name='best experiment',
)

Фильтрация экспериментов по разным параметрам

task_list = Task.get_tasks(
    task_ids=None,  # type Optional[Sequence[str]]
    project_name=None,  # Optional[str]
    task_name=None,  # Optional[str]
    allow_archived=True, # [bool]
    task_filter=None,  # Optional[Dict]#
    # tasks with tag `included_tag` or without tag `excluded_tag`
    tags=['included_tag', '-excluded_tag']
)

ClearML artifacts

Добавление артефактов

# конкретный файл
task.upload_artifact(
    name='data',
    artifact_object='/path/to/preprocess_data.csv',
)
# дирректория и все файлы внутри нее
task.upload_artifact(name='folder', artifact_object='/path/to/folder/')
# объект python
numpy_object = np.eye(100, 100)
task.upload_artifact(name='features', artifact_object=numpy_object)

Использование артефактов

preprocess_task = Task.get_task(task_id='preprocessing_task_id')
local_csv = preprocess_task.artifacts['data'].get_local_copy()


prev_task = Task.get_task(task_id='the_training_task')
last_snapshot = prev_task.models['output'][-1]
local_weights_path = last_snapshot.get_local_copy()

ClearML metrics

Автоматическое логирование

  • TensorBoard
  • TensorBoardX
  • Matplotlib

Ручное логирование метрик

logger = task.get_logger()

for i in range(100):
    logger.report_scalar(
        "unified graph", "series A", iteration=i, value=1./(i+1)
    )
    logger.report_scalar(
        "unified graph", "series B", iteration=i, value=10./(i+1)
    )
   
for i in range(100):
    logger.report_scalar(
        "graph A", "series A", iteration=i, value=1./(i+1)
    )
    logger.report_scalar(
        "graph B", "series B", iteration=i, value=10./(i+1)
    )

ClearML logging

ClearML data

clearml-data — Утилита CLI для создания, загрузки и управления наборами данных.

clearml-data create [-h] [--parents [PARENTS [PARENTS ...]]] [--project PROJECT]
                    --name NAME [--version VERSION] [--output-uri OUTPUT_URI]
                    [--tags [TAGS [TAGS ...]]

clearml.Dataset — Интерфейс Python для создания, извлечения, управления и использования наборов данных.

from clearml import Dataset


dataset = Dataset.create(
  dataset_name='dataset name',
  dataset_project='dataset project',
  parent_datasets=[PARENT_DS_ID_1, PARENT_DS_ID_2],
  dataset_version="1.0",
  output_uri="gs://bucket-name/folder",
  description='my dataset description'
)

Clear ML pipelines