Pipelines

В данном разделе содержится информация о модуле Pipelines.

Особенности функциональности Pipelines

Использование Pipelines позволяет автоматизировать ход обработки данных и ML-моделирования, путем использования модулей платформы (Data transfer service, Environments, Deployments). Непрерывная цепочка связанных работ дает следующие преимущества:

  • Последовательное обращение к сервисам платформы ML Space (Data transfer service, Environments, Deployments).

  • Меньше ошибок, т.к. выполняя шаги последовательно, вы не пропустите и не сможете неправильно выполнить какой-то этап.

  • Упрощенный процесс развертывания, т.к. переход от прототипа к решению станет быстрее, а тестирование перехода проще.

Важно

  • Модуль Pipelines дублирует модули платформы ML Space, позволяя запускать их в одном общем месте. Например, использование параметра node_type: data_transfer показывает, что будет запущен модуль Data transfer service.

  • В «node_type: environments_job» создается контейнер на основе заданного образа base_image, в котором запускается скрипт script.

  • Задачу обучения можно просмотреть в разделе Environments → Задачи и окружения. Она будет иметь имя вида: lm-mpi-job-cd190c2b-e240-42cd-a05e-bffd55072b21.

Создание и редактирование Pipeline

  1. Введите название (например, Мой первый пайплайн).

  2. Выберите Тип срабатывания:

    Ручной запрос

    По расписанию

    Запуск осуществляется вручную.

    Запуск осуществляются по расписанию в указанный период времени с указанными интервалами.

  3. Выберите Поделиться с командой, если требуется доступ к Pipeline всем участникам workspace.

  4. Отредактируйте .yaml. Пример можно посмотреть в Пример кода для создания Pipeline.

    Значения параметров, используемых для составления Pipeline, приведены ниже.

  5. Запустите Pipeline, нажав Запустить сейчас. Если не нажать Запустить сейчас, Pipeline не будет создан.

Для изменения параметров созданного Pipeline нажмите Настройки.

Действия над Pipeline

При работе с Pipeline в меню Кнопка с тремя вертикальными точками доступны действия: Редактировать и Удалить.

Описание параметров Pipeline

В этом разделе поблочно описаны параметры и возможные значения, которые можно использовать для составления Pipeline.

Общие для всех этапов

Общее

Параметр

Значение

Описание

nodes

  • data_transfer

  • auto_ml

  • deployments_image

  • deployments_inference

  • environments_image

  • environments_job

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

Data transfer service

Data transfer service

Параметр

Значение

Описание

name

pipeline-name

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

source_conn_id

Значение доступно по кнопке Узнать ID коннектора

Идентификатор (id) коннектора до источника данных.

destination_conn_id

Значение доступно по кнопке Узнать ID коннектора

Идентификатор (id) коннектора до источника данных.

strategy

write_all, append_new, sync_all

Правило переноса файлов:

  • Добавлять все данные (write_all) — обновляет все данные в месте назначения и добавляет новые.

  • Добавлять только новые записи (append_new) — добавляет только новые записи в место назначения.

  • Полная синхронизация (sync_all) — синхронизирует данные между двумя подключениями. Пример: на источнике находится файл А, на месте назначения — файл Б, после синхронизации в источнике и месте назначения будут находиться файл А и файл Б.

source

test-transition.txt

Путь до переносимого файла/папки в источнике.

destination

transferred/workflows

Целевой путь в месте назначения.

cluster_name

  • chistofari-1

  • christofari-2

  • cce

Имя региона размещения вычислительных ресурсов (кластера).

Environments

Environments create image

Параметр

Значение

Описание

from_image

cr.msk.sbercloud.ru/aicloud-jupyter/jupyter-cuda10.1-tf2.2.0-gpu-mlspace:0.0.74

Название базового образа, на основе которого создаем новый. Подробнее про образы см. Образы, используемые на платформе ML Space.

requirements_file

/home/jovyan/requirements.txt

Путь к файлу requirements на NFS.

conda_env

base

Имя окружения conda, если в образе используется не стандартное окружение python, а окружение anaconda.

install_type

pip

Параметр используется только при условии install_type == «poetry». Он указывает путь до файла poetry.lock на NFS.

Environments run job

Параметр

Значение

Описание

base_image

cr.msk.sbercloud.ru/aicloud-jupyter/jupyter-cuda10.1-tf2.2.0-gpu-mlspace:0.0.74

Название базового образа, на основе которого делается новый. Подробнее про образы см. Образы, используемые на платформе ML Space.

script

/home/jovyan/quick-start/job_launch/tensorflow_mnist_estimator.py

Путь к скрипту обучения на NFS.

Опционально n_workers

1

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

Опционально n_gpus

1

Количество GPU на одном рабочем узле. Может принимать значения в диапазоне от 1 до 16.

Опционально cpu_limit

3

Лимит количества CPU.

Опционально memory_limit

4

Лимит памяти (в ГБ).

Опционально warm_cache

false

Параметр отключен (deprecated).

Опционально type

horovod

Тип распределенных вычислений, варианты: pytorch, horovod.

Опционально flags

foo: 'bar', baz: 'qux'

Флаги, с которыми нужно запустить скрипт.

Опционально stop_timer

0

Максимальное время выполнения задачи в минутах до принудительного удаления, 0 - не удалять принудительно.

Опционально env_variables

quux: 'quuz', corge: 'grault'

Переменные окружения.

Опционально processes_per_worker

1

Количество процессов на один рабочий узел кластера, по умолчанию равно количеству GPU.

Опционально conda_env

base

Имя окружения conda, если в образе используется не стандартное окружение python, а окружение anaconda.

Опционально job_desc

JOB

Пользовательское описание задачи.

Опционально cuda11

false

Использование cuda11.

Опционально region

V100 или А100

Имя региона размещения вычислительных ресурсов (кластера).

Deployments

Deploy create image

Параметр

Значение

Описание

from_image

cr.msk.sbercloud.ru/aicloud-jupyter/jupyter-cuda10.1-tf2.2.0-gpu-mlspace:0.0.74

Имя базового образа должно начинаться с cr.msk.sbercloud.ru/aicloud-base-images. Подробнее про образы см. Образы, используемые на платформе ML Space.

run_script

foo.py

Путь к каталогу с артефактами модели.

requirements_path

requirements.txt

Путь к файлу requirements.txt.

AWS_ACCESS_KEY_ID

access key

S3 access key ID.

S3_ENDPOINT

s3 endpoint

S3 endpoint.

Inference deploy

Параметр

Значение

Описание

image

cr.msk.sbercloud.ru/.../IMAGE

Название образа, из которого нужно создать деплой.

region

DGX2-INF

Имя региона размещения вычислительных ресурсов (кластера). Может принимать следующие значения:

  • «DGX2-INF» = Christofari.V100

  • «CCE-INF» = SR.01 (CPU, V100)

instance_type

v100.1gpu

Тип конфигурации, для региона «DGX2-INF» это строка вида v100.1gpu, где gpu может принимать значения в диапазоне от 1 до 16.

replicas

min: 0, max: 100

Количество pods может принимать значения в диапазоне от 0 до 100.

alias

image-name

Название образа.

description

image-descr

Описание.

Пример кода для создания Pipeline

Рассмотрим пример Pipelines, в котором используются модули:

  • Data transfer service

  • Environments

  • Deployments

Подробнее про Описание параметров Pipeline.

В рассмотренном ниже примере выполняется:

  1. Перенос файлов с S3 на NFS региона размещения вычислительных ресурсов Christofari.V100 с использованием data_transfer.

  2. Создание образа на основании базового с использованием зависимостей из файла requirements.txt.

  3. Запуск задачи обучения в регионе Christofari.V100 с установленными параметрами.

  4. Создание образ для деплоя.

  5. Запуск инференса модели в установленной конфигурации.

Pipeline code

nodes:
- node_type: data_transfer
  parameters:
    name: "PPL: S3 -> NFS"
    source_conn_id: "d5e32f66-89bb-11ec-a8a3-0242ac120002"
    source: "ruRoBERTa-large/ruRoberta-large/"
    destination_conn_id: "d5e32f66-89bb-11ec-a8a3-0242ac120003"
    destination: "FOLDER_NAME/"
    cluster_name: "christofari-1"
    strategy: "write_all"
#------------------------
#------------------------
#-----ENV image build----
- node_type: environments_image
  parameters:
    requirements_file: "/home/jovyan/quick-start/job_launch/requirements.txt"
    from_image: "cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0"
#------------------------
#------------------------
#-----ENV job-------
- node_type: environments_job
  parameters:
    base_image: 'cr.msk.sbercloud.ru/d5e33f66-89bb-15ec-a8a3-0242ac510002/job-custom-image-d4a804:latest'
    script: '/home/jovyan/quick-start/job_launch/tensorflow_mnist_estimator.py'
    requirements_file: '/home/jovyan/quick-start/job_launch/requirements.txt'
    n_workers: 1
    n_gpus: 1
    job_desc: "Environments job"
    cpu_limit: 3
    memory_limit: 4
    region: 'V100'
#------------------------
#------------------------
#-----DEPL build image---
- node_type: deployments_image
  parameters:
    base_image: 'cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0'
    run_script: 'server.py'
    artifacts_directory: 'b-ws-xa1o9-czq/folder100/'
    requirements_path: "requirements.txt"
    AWS_ACCESS_KEY_ID: 'u-ws-xa1o9-1jt'
    AWS_SECRET_ACCESS_KEY: 'YOUR ACCESS KEY'
    S3_ENDPOINT: 'https://n-ws-lo1c9.s3pd02.sbercloud.ru'
#----------------------------
#----------------------------
#-----DEPL image inference---
- node_type: deployments_inference
  parameters:
    image: "cr.msk.sbercloud.ru/d5e32f66-89bb-11ec-a1a9-0112ac120003/inference-image-1643879777"
    region: 'DGX2-INF'
    instance_type: 'v100.1gpu'
    replicas:
      min: 1
      max: 1
    alias: "DEPLOY INFERENCE"
    description: "You description here"