Этот сайт использует файлы cookies. Продолжая просмотр страниц сайта, вы соглашаетесь с использованием файлов cookies. Если вам нужна дополнительная информация, пожалуйста, посетите страницу Политика файлов Cookie
Subscribe
Прямой эфир
Cryptocurrencies: 9874 / Markets: 82599
Market Cap: $ 2 351 429 981 623 / 24h Vol: $ 50 891 020 683 / BTC Dominance: 53.455923388921%

Н Новости

ClearML Data Management

5wdjvqcqthc0yzwbcthy6xdkbiw.png


Очевидный для ML-инженера факт: если на вход модели подать мусор — на выходе тоже будет мусор. Это правило действует всегда, независимо от того, насколько у нас крутая модель. Поэтому важно понимать, как ваши данные будут храниться, использоваться, версионироваться и воспроизведутся ли при этом результаты экспериментов. Для всех перечисленных задач есть множество различных инструментов: DVC, MLflow, W&B, ClearML и другие. Git использовать недостаточно, потому что он не был спроектирован под требования ML. Но есть инструмент, который подходит для версионирования данных и не только — это ClearML. О нем я сегодня и расскажу.


Разница между Git и ClearML в контексте ML-задач


Git не подходит для версионирования данных по нескольким причинам:


  • ограничения в эффективности при работе с большими объемами данных;
  • не всё хорошо с безопасностью данных;
  • обработка бинарных файлов неоптимальна;
  • управление большими файлами сложное.

В итоге у нас получится медленная и тяжелая система, с которой неудобно работать.


ClearML представляет собой огромную MLOps-экосистему:


heip6mfkufxl-8d_dgsb0qhcn5o.png
Модули ClearML, покрывающие весь цикл разработки ML-продукта


Некоторые из модулей ClearML:


  • ClearML Python (clearml) — служит интеграции ClearML в существующую базу кода. Это обычная питоновская библиотека. Есть CLI и SDK, о работе с ними мы поговорим далее.
  • ClearML Server (clearml-server) — предназначен для хранения данных экспериментов, моделей и рабочих процессов, а также для поддержки Web UI менеджера экспериментов. Можно развернуть у себя локально.
  • ClearML Agent (clearml-agent) — агент оркестровки MLOps. Обеспечивает воспроизводимость экспериментов и рабочих процессов, а также их масштабируемость.
  • ClearML Serving (clearml-serving) — нужен для развертывания и оркестровки моделей. Есть интеграция с Triton. Но на мой взгляд он недоработан: есть проблемы с запуском и версиями на этапе сборки.
  • ClearML Session (clearml-session) необходим для запуска удаленных экземпляров Jupyter Notebooks и VSCode. Очень интересное решение, работает хорошо, можно создавать рабочие места для ML-инженеров и выделять нужное количество мощностей для каждого из них. Все запускается через clearml-agent, для которого можно указать кастомный docker-image.
  • ClearML Data (clearml-data) предназначен для управления данными и версионирования поверх файловых систем/объектных хранилищ, таких как AWS S3.

Редко инструменты покрывают абсолютно все нужды проекта, поэтому обычно приходится использовать зоопарк из различных решений. В случае с ClearML покрыты все возможные потребности ML-проекта. В этой статье мы рассмотрим модуль ClearML Data.


Особенности ClearML по сравнению с аналогичными инструментами


В отличие от, например, DVC, в ClearML версионирование данных происходит отдельно от версионирования кода. Как утверждают сами создатели инструмента, данные не являются кодом, поэтому они не должны находиться в git-репозитории:


We believe Data is not code. It should not be stored in a git tree, because progress on datasets is not always linear. Moreover, it can be difficult and inefficient to find on a git tree the commit associated with a certain version of a dataset.

У ClearML удобный и приятный интерфейс. MLflow в этом плане не так дружелюбен.


i1zwqnorqyu2mc1hx2yld2dawjy.png
Web UI ClearML для датасетов


Познакомиться с отдельными частями интерфейса можно по ссылкам: dataset_details и dataset_page.


Еще одна особенность ClearML заключаются в том, что все сущности являются типом task (experiments в UI). Например, датасеты, эксперименты с моделями, пайплайны — у всех одинаковый тип. Никаких лишних сущностей и понятные статусы для каждого типа. Task — это отдельный сеанс выполнения кода, который может представлять собой эксперимент, шаг или контроллер рабочего процесса, любую пользовательскую реализацию.


txx72oqfxsyzz0isnvkx03_hfcc.png
Возможные статусы tasks


Данными можно управлять с помощью интеграции хранилищ данных: Azure, AWS, MinIO и других [документация]. Также существуют некоторые платные фичи — гипердатасеты.


Интеграция со многими DS-библиотеками (scikit-learn, Matplotlib, PyTorch, TensorFlow и другими) позволяет подхватывать все метрики, графики обучения, гистограммы, логи, незакоммиченные части кода, версии библиотек — нужно просто создать task в начале .py файла / jupyter notebook и в результате можно будет воспроизвести любой эксперимент.


Сейчас инструмент все еще совершенствуется. Как и у всех развивающихся платформ, у этого модуля есть свои недостатки:


  1. В некоторых браузерах plots и debug изображения не будут отображаться;
  2. Мобильная версия сайта неудобна в использовании, поэтому нужно переходить в ПК-версию;
  3. Графики обучения моделей не такие красивые, как у W&B 🙂;
  4. Не всегда автоматически подхватываются метрики для pytorch lightning, из-за чего приходится подключать tensorboard (а метрики из tensorboard уже подхватываются в clearml).

Теперь давайте подробнее рассмотрим работу с модулем СlearML Data, который входит в библиотеку ClearML.


ClearML Data на практике


Воспользуемся платформой ClearML с ограничением в 100 GB для данных и возможностью пригласить еще двух человек в ваше рабочее пространство clearml. Подобные условия есть и у W&B. А вот развернуть W&B локально или на вашем сервере бесплатно нельзя, в отличие от ClearML.


Первый этап: регистрация и создание кредов [более подробно см. в документации]


  1. Устанавливаем у себя clearml через pip install clearml
  2. Регистрируемся по ссылке: app.clear.ml/login
  3. Заходим в Settings → Workspace → Создаем креды «Create new credentials»

lzljf2sreewbyt7n8uhj8pu_dts.png
Настройка рабочего пространства и создание кредов


Можно воспользоваться Local Python или Jupyter Notebook. Инструкция для них представлена ниже.


Local Python
iwzfmol0dbxdmlq_okny_mzm_gq.png


В консоли запускаем команду clearml-init и вставляем креды:


hnnacsxnfkyiy6ebf6oxbd-pdlc.png


Jupyter Notebook


В табе Jupyter Notebook копируем креды в ячейку ноутбука:


wajhanhmzcmussgw-t4wd88ynoc.png


После создания кредов с помощью Local Python или Jupyter Notebook появится конфигурационный файл ~/clearml.conf для Linux. Для других ОС путь может отличаться. В этом файле возможно, например, настроить интеграцию с S3.


Креды не должны коммититься и публично показываться. Примеры выше представлены только в демонстрационных целях.

Весь код данной статьи есть тут → Ссылка на колаб. Попробуйте на практике! 😉


ClearML Data поддерживает два интерфейса:


  • clearml-data — утилита CLI для создания, загрузки и управления наборами данных;
  • clearml.Dataset — интерфейс Python для создания, извлечения, управления и использования наборов данных.

Рассмотрим работу с каждым из них по отдельности.


Создание датасета с CLI


Скачаем и распакуем датасет, с которым будем работать далее:


wget -P /content/dataset_v1/ https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_5340.zip
unzip /content/dataset_v1/kagglecatsanddogs_5340.zip -d /content/dataset_v1/

Есть два способа загрузки данных в ClearML: через ручной контроль каждого этапа и при помощи sync.


Первый способ: ручной контроль каждого этапа


  • сreate создает датасет. Тут мы указываем проект, название датасета, теги, версию. Если не указать версию, она поставится автоматически.

# Инициализируем датасет
clearml-data create --project DeepSchool/Tutorials/cats_vs_dogs \
                    --name cats_vs_dogs \ 
                    --tags init_data

--project — аргумент, в котором можно указать иерархию. Например: Turorials/Toy_Datasets/Cifar10/Train и так до глубины 10.


После выполнения команды clearml-data create в UI мы можем посмотреть статус датасета. Сейчас у нас «Uploading», значит, есть возможность добавлять, удалять и изменять файлы этой версии.


kxsaiwfmf92qlzhfw2jctvv9dbk.jpeg
Статус «Uploading» в ClearML UI после инициализации датасета


clearml-data работает в режиме отслеживания состояния, поэтому после создания нового набора данных для следующих команд не требуется флаг --id.

  • add добавляет локальные файлы в созданный датасет. Он позволяет рекурсивно добавить файлы в датасет через ~/data/*.jpg.

# Добавим файлы.
clearml-data add --files "/content/dataset_v1"

# Перед загрузкой на ClearML можно проверить, какие файлы добавились
clearml-data list --id <dataset_id>

  • close закрывает и загружает данные в clearml. Можно указать --storage — по умолчанию это хранилище ClearML.

Этап close включает в себя загрузку и финализацию датасета finalize и upload, которые также можно использовать по отдельности, например, если нужно загрузить данные и при этом иметь возможность изменить датасет.


<dataset_id> будет получен при создании датасета и виден в ClearML UI после этапа close.


# команда равна clearml-data upload и clearml-data finalize
clearml-data close

После этапа finalize загруженную версию датасета изменить будет нельзя: это нужно для воспроизводимости. Теперь у нашего датасета статус «Final».


Так выглядит результат после выполненных выше команд:


eg1felwteakucq_gw2ml4imfupu.jpeg
Загруженный датасет в ClearML


Второй способ: c помощью sync


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


clearml-data sync --project DeepSchool/Tutorials/cats_vs_dogs \
                  --name cats_vs_dogs_sync \
                  --folder /content/dataset_v1

k-p8zaiyuxebkazl84uzakug1da.jpeg
Загруженный датасет при помощи sync через CLI


Теперь в UI появилась папка «DeepSchool». В ней есть два подпроекта, которые были загружены с помощью предыдущих команд:


jdqzin-pyiavsr22i7higenlqz4.jpeg
Загруженные датасеты в папке «DeepSchool»


Получение данных с CLI


Для получения локальной копии датасета, которую нельзя изменять (read only), нужно выполнить следующую команду при помощи get:


clearml-data get --id <created_dataset_id> 

Получить id датасета можно в UI:


1hazxyw6tjslb6ixhuj3sal4h4w.jpeg
Получение id датасета из ClearML UI


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


Для получения локальной копии датасета, которую можно изменять, нужно выполнить следующую команду при помощи get и указать папку, в которую необходимо скачать датасет:


# Получить изменяемые локальные данные.
# Если нет, то просто копируется локальная версия для изменений
clearml-data get --id 717662694123428bab2b103efed87e4b \
                 --copy ./cats_vs_dogs_sync/

Наши данные уже в кэше, следовательно, ClearML сможет проверить, отличается ли кэш-версия от нужной для скачивания. Если нет — он скопирует часть датасета из кэша и отличающуюся часть из ClearML.


В этом случае вы сможете изменить датасет и загрузить измененную версию.


Создание новой версии датасета с CLI


Изменим датасет, скачав новые изображения для класса Fish.


fish_images = ['http://www.michigansportsman.com/Boaters_Guide/10.18.05_Manistee_Lake_Coho_004_small.jpg',
                'http://www.aosalaska.com/gallery/silvers/silver24.jpg',
                'http://www.piscatorialpursuits.com/images/jimmy.jpg',
                'http://www.fpc.org/spawning/images/multnomahcoho11-04.jpg',
                'http://www.alaskaantlerworks.com/images/jerm_silver.jpg']

from clearml import StorageManager 
for image_path in fish_images:
    StorageManager.get_local_copy(remote_url=image_path,
                        extract_archive=False,
                        cache_context="/content/cats_vs_dogs_sync/PetImages/Fish")

Теперь, когда у нас есть измененная локальная версия датасета, мы можем загрузить ее с помощью команды sync, указав при этом аргумент --parents:


# Загрузим измененный датасет с новым классом Fish,
# важно указать id родительского датасета,
# иначе вместо загрузки только новых файлов загрузится весь датасет, что займет много времени
!clearml-data sync --project DeepSchool/Tutorials/cats_vs_dogs \
                   --name cats_vs_dogs_sync \
                   --parents 717662694123428bab2b103efed87e4b \
                   --folder /content/cats_vs_dogs_sync

Результат версионирования датасета представлен на рисунке ниже. Через VERSION INFO справа на скриншоте можно посмотреть статистику по количеству добавленных, удаленных и измененных изображений.


5e0iedp5b3sbtcud5gh0hzkf6k0.jpeg
Новая версия датасета в ClearML UI. Добавлена папка с классом «Fish»


В загруженных файлах есть битая картинка, удалим ее.


Для начала выведем список фото с помощью clearml-data list:


clearml-data list --id 8f13d861488248fca90aa9522b882ea5 \ 
                  --filter PetImages/Fish/*.jpg

clearml-data - Dataset Management & Versioning CLI
List dataset content: 8f13d861488248fca90aa9522b882ea5
Listing dataset content
file name                                                                                 | size       | hash                                                            
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PetImages/Fish/24af78f36dd391046209db21577ec667.multnomahcoho11-04.jpg                    |      1,520 | 31bb5a2bdbb753adebd1a7c88b69fd7ddd405241619bbb866db4ed9c51d729e2
PetImages/Fish/4d536d76aaf42c0e5524b6f8c6918227.jimmy.jpg                                 |     19,515 | 0432f283284a5ab33c31f42040267bde9a37853b5c4557060c2bcd1527ef78b2
PetImages/Fish/70a4b2cb727768e435b3f77ba7b782b6.silver24.jpg                              |     19,715 | 803de343fd2410e1e5568fbac54f3dba9a699048e1b44d9194b03b8888b2ff90
PetImages/Fish/c18a90447be153bab0d90e175bff269f.10.18.05_Manistee_Lake_Coho_004_small.jpg |      3,548 | c654999d76c033bcb0ed04d75c6a592280c2c8dbbb60133f2c2013a54ca4229e
PetImages/Fish/cdcbd1c83803abb15830e0f0c16bc353.jerm_silver.jpg                           |     67,725 | 0b5ac127c2b7e766116ecc1f8f1a8f5023a23749d255761bbc2785c77b42fc5e
Total 5 files, 112023 bytes

Удалим битую фотографию из папки «Fish» в нашем датасете:


rm -f ./cats_vs_dogs_sync/PetImages/Fish/24af78f36dd391046209db21577ec667.multnomahcoho11-04.jpg

Обновим датасет c помощью sync:


clearml-data sync --project DeepSchool/Tutorials/cats_vs_dogs \
                  --name cats_vs_dogs_sync \
                  --parents 8f13d861488248fca90aa9522b882ea5 \
                  --folder /content/cats_vs_dogs_sync

В ClearML UI можно посмотреть обновленную версию нашего датасета:


ql3du3jo_x9efago93pt5i9xfyg.jpeg
Новая версия датасета с удаленным изображением


Создание датасета с SDK


Аналогично все работает через интерфейс python. Давайте рассмотрим пример на тех же данных:


  1. Загрузка данных в ClearML и контроль каждого этапа:
    
    # Первый способ с возможностью выборочно добавлять файлы
    from clearml import Dataset

dataset_project = "DeepSchool/Tutorials/cats_vs_dogs"
dataset_name = "cats_vs_dogs_SDK"
dataset_path = "/content/cats_vs_dogs_sync"


dataset = Dataset.create(dataset_name=dataset_name,
dataset_project=dataset_project)
dataset.add_files(dataset_path) # рекурсивно добавить файлы в датасет
dataset.upload()
dataset.finalize()


2. Загрузка данных в ClearML через *sync*:
```python
# Второй способ с sync
from clearml import Dataset

dataset_project = "DeepSchool/Tutorials/cats_vs_dogs"
dataset_name = "cats_vs_dogs_SDK_sync"
dataset_path = "/content/cats_vs_dogs_sync" 

dataset = Dataset.create(dataset_name=dataset_name, 
                         dataset_project=dataset_project)
dataset.sync_folder(dataset_path)
dataset.finalize(auto_upload=True)

Важно: после выполнения finalize() мы не сможем изменить слепок датасета в clearml, но сможем создать новую версию датасета с измененными файлами.


jiitvhkud77q9v3tffdv4qejnp0.jpeg
Загруженные версии через CLI и SDK


Получение данных с SDK


Скачать загруженный датасет можно тремя способами.


  1. Получить метаданные, например, имена файлов.


    # Получить данные на read only, 
    # в данном случае получим cats_vs_dogs_SDK_sync датасет
    from clearml import Dataset
    from pathlib import Path
    dataset_path = Dataset.get(dataset_name=dataset_name,
                           dataset_project=dataset_project)
    # или
    dataset_path = Dataset.get(dataset_id=<dataset_id>)

  2. Для скачивания данных явно указать .get_local_copy(), при этом данные будут скачаны в кэш, и их можно будет только читать.


    # Получить данные на read only
    from pathlib import Path
    dataset_path = Dataset.get(dataset_name=dataset_name,
                           dataset_project=dataset_project
                           ).get_local_copy()
    # или
    dataset_path = Dataset.get(dataset_id=<dataset_id>).get_local_copy()

  3. Получить датасет локально в вашей рабочей директории для удаления, добавления, версионирования через .get_mutable_local_copy(target_folder="where/to/save/data”).


    # Получить изменяемые локальные данные 
    dataset_path = Dataset.get(dataset_name=dataset_name,
                           dataset_project=dataset_project
                           ).get_mutable_local_copy(
                                                        target_folder="./cats_vs_dogs_sdk_sync"
                                                        )
    # или 
    dataset_path = Dataset.get(
                                                        dataset_id=<dataset_id>
                                                    ).get_mutable_local_copy(target_folder="./cats_vs_dogs_sdk_sync")


Создание новой версии датасета с SDK


Изменим локальные данные, полученные через SDK, и зальем новую версию датасета.


В этот раз удалим папку «Cat» c помощью метода remove_files (возможны проблемы с использованием этого метода, рекомендуется использовать sync).


--parents — аргумент, в котором можно указать id родительского датасета или нескольких датасетов.


Удалим папку «Cat»:


rm -rf ./cats_vs_dogs_sync/PetImages/Cat

# Первый способ с возможностью выборочно добавлять и удалять файлы
from clearml import Dataset

dataset_project = "DeepSchool/Tutorials/cats_vs_dogs"
dataset_name = "cats_vs_dogs_SDK_sync"
dataset_path = "/content/cats_vs_dogs_sdk_sync"

dataset = Dataset.create(dataset_name=dataset_name,
             dataset_project=dataset_project,
             parent_datasets=["f2999e995d924d239dcd5db8981f27d0"]) 
                        # важно указать родительский датасет

# по умолчанию рекурсивно удаляет файлы из датасета
dataset.remove_files('./PetImages/Cat')

dataset.finalize(auto_upload=True)

Таким образом, вы можете изменить датасет даже без его скачивания.


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

С помощью sync обновить датасет удобнее, так как в большинстве случаев он уже существует локально. Здесь проверяется разница между локальными файлами и файлами в ClearML:



from clearml import Dataset

dataset_project = "DeepSchool/Tutorials/cats_vs_dogs"
dataset_name = "cats_vs_dogs_SDK_sync"
dataset_path = "/content/cats_vs_dogs_sdk_sync"

dataset = Dataset.create(dataset_name=dataset_name,
                         dataset_project=dataset_project,
                         parent_datasets=["f2999e995d924d239dcd5db8981f27d0"]) 
                                                # важно указать родительский датасет

dataset.sync_folder(
    local_path=dataset_path
)

dataset.finalize(auto_upload=True)

oaxdia2rxoh0nvucnrdhwkzrnqa.jpeg
Версия с удаленной папкой класса «Cat»


Объединение датасетов с CLI и SDK


С помощью команды search выведем все датасеты, в названии которых есть подстрока «cats»:


clearml-data search --name cats

clearml-data - Dataset Management & Versioning CLI
Search datasets
project                           | name                             | version             | tags                | created                         
---------------------------------------------------------------------------------------------------------------------------------------------------
DeepSchool/Tutorials/cats_vs_dogs | cats_vs_dogs                     | 1.0.0               | 'init_data'         | 2024-02-20 06:35:02             
DeepSchool/Tutorials/cats_vs_dogs | cats_vs_dogs_sync                | 1.0.0               |                     | 2024-02-20 06:55:16             
DeepSchool/Tutorials/cats_vs_dogs | cats_vs_dogs_sync                | 1.0.1               |                     | 2024-02-20 07:52:41             
DeepSchool/Tutorials/cats_vs_dogs | cats_vs_dogs_sync                | 1.0.2               |                     | 2024-02-21 03:11:04             
DeepSchool/Tutorials/cats_vs_dogs | cats_vs_dogs_SDK                 | 1.0.0               |                     | 2024-02-21 03:32:02             
DeepSchool/Tutorials/cats_vs_dogs | cats_vs_dogs_SDK_sync            | 1.0.0               |                     | 2024-02-21 03:33:41             
DeepSchool/Tutorials/cats_vs_dogs | cats_vs_dogs_SDK_sync            | 1.0.1               |                     | 2024-02-21 05:37:12

Есть небольшая проблема — id датасетов тут не пишут 😢 Поэтому нужно скопировать все id в UI.


Объединить два (и больше) датасета в один можно довольно просто: нужно указать id датасетов с аргументом --parents.


Давайте объединим наши датасеты c create и close, которые мы создали ранее. Для этого укажем новое имя проекта и все id созданных датасетов:



# id возмем из UI
clearml-data create --project DeepSchool/Tutorials/cats_vs_dogs \
                    --name UNITED_DATASET_CLI \
                    --parents 4fb7cf2830c449ca8fc7fc9d62e4fcb8 89158f088e354385a5b905716f746659 \
                               b1f6537691f74d94b4bd5d6569fdd865 55322da674c6439c91a089eb36ff5e29 \
                    --tags united
clearml-data close

На рисунке ниже показан результат объединенного (по последним версиям) датасета, наследованный от четырёх разных родителей. Мы видим каждый датасет и все его версии.


xflmy6y2xoao3iupxvz413mwy8s.jpeg
Результат объединенного датасета, который был наследован от четырех разных родителей


Важно: удаление родительского датасета может повлечь за собой потерю данных в объединенном датасете.

Через SDK мы объединим только с двумя родителями:


# Объединение с SDK, тут возьмем поменьше датасетов

dataset = Dataset.create(
  dataset_name='UNITED DATASET SDK',
  dataset_project='DeepSchool/Tutorials/cats_vs_dogs', 
  parent_datasets=['4fb7cf2830c449ca8fc7fc9d62e4fcb8',
                   '89158f088e354385a5b905716f746659'],
  dataset_version="1.0",
#   output_uri="gs://bucket-name/folder", # S3 или любое другое хранилище
  description='cats vs dogs vs fish'
)

jhz-e8zkqxs3i1rzisodiuds1hy.jpeg
Результат объединенного датасета, который был наследован от двух разных родителей


Объединение табличных данных


При объединении файлы не соединятся в один. Например, у нас не получится объединить два датасета построчно (CSV-файлы) в один общий файл.


  • Если CSV-файлы имеют одно и то же название, то в объединенном датасете будет только одна версия первого указанного родительского датасета.
  • Если названия файлов разные, то будет два разных файла в одной версии датасета.

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


Документация датасета


В начале статьи мы говорили, что все сущности ClearML — это task. Датасеты не исключение. К ним можно подгрузить разные метрики, гистограммы, дебаг изображения, а затем посмотреть их в task датасета.


gr2xru2p4m_ze2pegwyxodcczcm.jpeg
Переход к task датасета


Информацию можно посмотреть следующим образом: task information -> debug samples


yuvzaxdzokysj0gx3n9_r98dda8.jpeg
Информация, которая представлена в task созданного датасета


На рисунке выше мы видим информацию разного типа. В открытой табе DEBUG SAMPLES к датасету подгружены изображения (это примеры для просмотра). Подгрузить можно также графики (посмотреть их в PLOTS и SCALARS). А в ARTIFACTS можно подгрузить CSV-файлы, zip и т. д.


Для загрузки CSV-файлов к датасету, картинок, графиков предлагается использовать Dataset.get_logger().


Пример из документации:


# Attach a table to the dataset
dataset.get_logger().report_table(
    title="Raw Dataset Metadata", series="Raw Dataset Metadata", csv="path/to/csv"
)

# Attach a historgram to the table
dataset.get_logger().report_histogram(
    title="Class distribution",
    series="Class distribution",
    values=histogram_data,
    iteration=0,
    xlabels=histogram_data.index.tolist(),
    yaxis="Number of samples",
)

Хранение кеша


Весь локальный кэш (модели, созданные и скаченные датасеты и др.) будет храниться в ~/clearml/cache.


Для каждого пользователя — свой кэш. Иногда это неудобно: например, если датасет весит больше 1TB, а пропускная способность маленькая. Тогда можно столкнуться с очень долгой (многочасовой) загрузкой этих данных на сервер. Если над таким датасетом работает большая команда, где у каждого своя копия датасета — это может занять приличную часть SSD или HDD на сервере. Для решения дублирования данных на сервере можно сделать общий кэш и скачать туда все датасеты ClearML. Он будет автоматически обновляться с изменением каких-либо датасетов на clearml-server. Таким образом, у всех будут актуальные версии датасетов в локальном доступе.


Заключение


Сейчас есть очень много инструментов версионирования и хранения данных. Не все из них удобны в работе с видео и изображениями. Не все могут предложить единую экосистему жизненного цикла ML-проекта. А при помощи ClearML можно аккуратно и эффективно хранить данные, воспроизводить эксперименты, онбордить новичков и делать еще много чего 🙂


ClearML предлагает два удобных способа взаимодействия через интерфейсы CLI и Python SDK, работу с которыми мы и рассмотрели выше.


В следующих статьях мы разберем clearml agents и clearml pipelines и узнаем, как интегрировать S3 или Minio в clearml и какие у этого есть плюсы.


Полезные ссылки:


  1. Интересное выступление про то, как строилась MLOps платформа на базе ClearML в MTS
  2. Best practices от ClearML Data (версионирование, организация датасетов, документация)
  3. Документация CLI
  4. Документация SDK
  5. Туториалы от ClearML
  6. Целый плейлист по работе с ClearML
  7. Видео по работе с clearml-data

P.S.
Первая версия статьи написана для deepschool-pro, на Хабре публикуется с изменениями и дополнениями.

Источник

  • 07.09.23 16:24 CherryTeam

    Cherry Team atlyginimų skaičiavimo programa yra labai naudingas įrankis įmonėms, kai reikia efektyviai valdyti ir skaičiuoti darbuotojų atlyginimus. Ši programinė įranga, turinti išsamias funkcijas ir patogią naudotojo sąsają, suteikia daug privalumų, kurie padeda supaprastinti darbo užmokesčio skaičiavimo procesus ir pagerinti finansų valdymą. Štai keletas pagrindinių priežasčių, kodėl Cherry Team atlyginimų skaičiavimo programa yra naudinga įmonėms: Automatizuoti ir tikslūs skaičiavimai: Atlyginimų skaičiavimai rankiniu būdu gali būti klaidingi ir reikalauti daug laiko. Programinė įranga Cherry Team automatizuoja visą atlyginimų skaičiavimo procesą, todėl nebereikia atlikti skaičiavimų rankiniu būdu ir sumažėja klaidų rizika. Tiksliai apskaičiuodama atlyginimus, įskaitant tokius veiksnius, kaip pagrindinis atlyginimas, viršvalandžiai, premijos, išskaitos ir mokesčiai, programa užtikrina tikslius ir be klaidų darbo užmokesčio skaičiavimo rezultatus. Sutaupoma laiko ir išlaidų: Darbo užmokesčio valdymas gali būti daug darbo jėgos reikalaujanti užduotis, reikalaujanti daug laiko ir išteklių. Programa Cherry Team supaprastina ir pagreitina darbo užmokesčio skaičiavimo procesą, nes automatizuoja skaičiavimus, generuoja darbo užmokesčio žiniaraščius ir tvarko išskaičiuojamus mokesčius. Šis automatizavimas padeda įmonėms sutaupyti daug laiko ir pastangų, todėl žmogiškųjų išteklių ir finansų komandos gali sutelkti dėmesį į strategiškai svarbesnę veiklą. Be to, racionalizuodamos darbo užmokesčio operacijas, įmonės gali sumažinti administracines išlaidas, susijusias su rankiniu darbo užmokesčio tvarkymu. Mokesčių ir darbo teisės aktų laikymasis: Įmonėms labai svarbu laikytis mokesčių ir darbo teisės aktų, kad išvengtų baudų ir teisinių problemų. Programinė įranga Cherry Team seka besikeičiančius mokesčių įstatymus ir darbo reglamentus, užtikrindama tikslius skaičiavimus ir teisinių reikalavimų laikymąsi. Programa gali dirbti su sudėtingais mokesčių scenarijais, pavyzdžiui, keliomis mokesčių grupėmis ir įvairių rūšių atskaitymais, todėl užtikrina atitiktį reikalavimams ir kartu sumažina klaidų riziką. Ataskaitų rengimas ir analizė: Programa Cherry Team siūlo patikimas ataskaitų teikimo ir analizės galimybes, suteikiančias įmonėms vertingų įžvalgų apie darbo užmokesčio duomenis. Ji gali generuoti ataskaitas apie įvairius aspektus, pavyzdžiui, darbo užmokesčio paskirstymą, išskaičiuojamus mokesčius ir darbo sąnaudas. Šios ataskaitos leidžia įmonėms analizuoti darbo užmokesčio tendencijas, nustatyti tobulintinas sritis ir priimti pagrįstus finansinius sprendimus. Pasinaudodamos duomenimis pagrįstomis įžvalgomis, įmonės gali optimizuoti savo darbo užmokesčio strategijas ir veiksmingai kontroliuoti išlaidas. Integracija su kitomis sistemomis: Cherry Team programinė įranga dažnai sklandžiai integruojama su kitomis personalo ir apskaitos sistemomis. Tokia integracija leidžia automatiškai perkelti atitinkamus duomenis, pavyzdžiui, informaciją apie darbuotojus ir finansinius įrašus, todėl nebereikia dubliuoti duomenų. Supaprastintas duomenų srautas tarp sistemų padidina bendrą efektyvumą ir sumažina duomenų klaidų ar neatitikimų riziką. Cherry Team atlyginimų apskaičiavimo programa įmonėms teikia didelę naudą - automatiniai ir tikslūs skaičiavimai, laiko ir sąnaudų taupymas, atitiktis mokesčių ir darbo teisės aktų reikalavimams, ataskaitų teikimo ir analizės galimybės bei integracija su kitomis sistemomis. Naudodamos šią programinę įrangą įmonės gali supaprastinti darbo užmokesčio skaičiavimo procesus, užtikrinti tikslumą ir atitiktį reikalavimams, padidinti darbuotojų pasitenkinimą ir gauti vertingų įžvalgų apie savo finansinius duomenis. Programa Cherry Team pasirodo esanti nepakeičiamas įrankis įmonėms, siekiančioms efektyviai ir veiksmingai valdyti darbo užmokestį. https://cherryteam.lt/lt/

  • 08.10.23 01:30 davec8080

    The "Shibarium for this confirmed rug pull is a BEP-20 project not related at all to Shibarium, SHIB, BONE or LEASH. The Plot Thickens. Someone posted the actual transactions!!!! https://bscscan.com/tx/0xa846ea0367c89c3f0bbfcc221cceea4c90d8f56ead2eb479d4cee41c75e02c97 It seems the article is true!!!! And it's also FUD. Let me explain. Check this link: https://bscscan.com/token/0x5a752c9fe3520522ea88f37a41c3ddd97c022c2f So there really is a "Shibarium" token. And somebody did a rug pull with it. CONFIRMED. But the "Shibarium" token for this confirmed rug pull is a BEP-20 project not related at all to Shibarium, SHIB, BONE or LEASH.

Для участия в Чате вам необходим бесплатный аккаунт pro-blockchain.com Войти Регистрация
Есть вопросы?
С вами на связи 24/7
Help Icon