Пайплайны
Пайплайны позволяют автоматизировать ход обработки данных и ML-моделирования, путем использования модулей платформы (Data transfer service, Environments, Deployments). С помощью чего обеспечивается:
Последовательное обращение к модулям платформы ML Space (Data transfer service, Environments, Deployments).
Упрощение процесса развертывания, т.к. переход от прототипа к решению станет быстрее, а тестирование перехода проще.
Важно
Функциональные возможности пайплайнов позволяют обеспечить запуск модулей платформы ML Space в одном месте. Например, использование параметра
node_type: data_transfer
показывает, что будет запущен модуль Data transfer service.В «node_type: environments_job» создается контейнер на основе заданного образа
base_image
, в котором запускается скрипт script.Задачу обучения можно просмотреть в разделе
. Она будет иметь имя вида:lm-mpi-job-cd190c2b-e240-42cd-a05e-bffd55072b21
.Все изменения, сделанные в запущенном пайплайне, будут применены только при следующем запуске пайплайна.
Создание и редактирование пайплайна
Введите название (например,
Мой первый пайплайн
).Выберите Тип срабатывания:
Ручной запрос
По расписанию
Пайплайн запускается вручную.
Запуск осуществляются по расписанию в указанный период времени с указанными интервалами.
Выберите Поделиться с командой, если требуется доступ к пайплайну всем участникам workspace.
Отредактируйте yaml. Пример можно посмотреть в Примеры кода пайплайнов.
Значения параметров, используемых для составления пайплайна, приведены ниже.
Запустите пайплайн, нажав Запустить сейчас. Если не нажать Запустить сейчас, пайплайн не будет создан.
Для изменения параметров созданного пайплайна нажмите Настройки.
При работе с пайплайнами в меню доступны действия: и .
Описание параметров пайплайна
В этом разделе поблочно описаны параметры и возможные значения, которые можно использовать для составления пайплайна.
Similar for all stages
Общее Параметр
Значение
Описание
nodes
data_transfer
deployments_image
deployments_inference
environments_image
environments_job
Обязательный параметр шага, который определяет, какой модуль использовать.
Data transfer service
Data transfer service Параметр
Значение
Описание
name
pipeline-name
Имя подключения, которое автоматически создаст пайплайн после запуска.
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.V100
christofari-2
= Christofari.A100
cce
= Cloud.Region.CPU (CPU)
pd11
= Cloud.Region.A100 (GPU Tesla A100)Имя региона.
Environments
Environments create image Параметр
Значение
Описание
from_image
cr.msk.sbercloud.ru/aicloud-base-images/image-name:tag
Название базового образа, на основе которого создаем новый. Подробнее про образы см. Библиотеки в образах.
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-base-images/image-name:tag
Базовый образ, в котором будет исполняться скрипт обучения модели. Образ должен быть из cr.msk.sbercloud.ru/aicloud-base-images или из проекта Docker registry для текущего воркспейса. Подробнее про базовые образы.
Подробнее про образы см. Библиотеки в образах.
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.
Важно
Для запуска задачи на CPU, не используя GPU, укажите параметр
n_gpus: 0
. Примеры кода пайплайнов.Опционально
memory_limit
4
Лимит памяти (в ГБ).
warm_cache
false
Параметр отключен (deprecated) и передается в единственном значении —
false
.Опционально
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.
Важно
Параметр устаревший. Передача этого параметра не будет влиять на поведение задачи обучения. Оставляйте в значении
False
.Опционально
region
V100
= Christofari.V100
А100
= Christofari.A100
CCE-MT
= Cloud.Region.CPU (CPU)
SR002-MT
= Cloud.Region.A100 (GPU Tesla A100)Имя региона.
Deployments
Deploy create image Параметр
Значение
Описание
from_image
cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0:0.0.32.3
Имя базового образа должно начинаться с cr.msk.sbercloud.ru/aicloud-base-images. Подробнее про базовые образы.
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
= Christofari.V100CCE-INF
= Cloud.Region.CPU (CPU)Имя региона.
instance_type
v100.1gpu
Тип конфигурации, для региона «DGX2-INF» это строка вида v100.1gpu. Подробнее про типы конфигурации см. Конфигурации вычислительных ресурсов (instances_types)
replicas
min: 0
,max: 100
Количество подов может принимать значения в диапазоне от 0 до 100.
alias
image-name
Название образа.
description
image-descr
Описание.
Важно
Наименования регионов в нодах пайплайнов:
chistofari-1
иV100
— обозначения Christofari.V100christofari-2
иА100
— обозначения Christofari.A100cce
CCE-MT
— обозначения Cloud.Region.CPU (CPU)pd11
иSR002-MT
— обозначения Cloud.Region.A100 (GPU Tesla A100)
Конфигурации вычислительных ресурсов (instances_types)
Для просмотра доступных конфигураций используйте:
Метод API возвращает образы и доступных конфигурации в задачах обучения, Jupyter Server и деплоях (инференсе).
Ключ
MT
— для обучения моделей и Jupyter Server.Ключ
INF
— для деплоев (инференса).
Метод API возвращает доступные spark-конфигурации.
curl --location --request GET 'https://api.aicloud.sbercloud.ru/public/v2/configs?cluster_type=MT' \
--header 'x-api-key: eeeeccee-eeee-eeee-eeee-eeaeefeeb49c' \
--header 'x-workspace-id: frrrrrra-ceee-eeec-eeef-4df7ca4bbbb1' \
--header 'Authorization: eyJhbGciOiJSUzI1NiIsInR5cCIgOi...'
curl --location --request GET 'https://api.aicloud.sbercloud.ru/public/v2/configs?cluster_type=INF' \
--header 'x-api-key: eeeeccee-eeee-eeee-eeee-eeaeefeeb49c' \
--header 'x-workspace-id: frrrrrra-ceee-eeec-eeef-4df7ca4bbbb1' \
--header 'Authorization: eyJhbGciOiJSUzI1NiIsInR5cCIgOi...'
curl --location --request GET 'https://api.aicloud.sbercloud.ru/public/v2/configs/spark' \
--header 'x-api-key: eeeeccee-eeee-eeee-eeee-eeaeefeeb49c' \
--header 'x-workspace-id: frrrrrra-ceee-eeec-eeef-4df7ca4bbbb1' \
--header 'Authorization: eyJhbGciOiJSUzI1NiIsInR5cCIgOi...'
Примеры кода пайплайнов
Важно
Для параллельного запуска этапов пайплайна добавьте
version: "1"
передnodes
. Измените структуру шаблона, согласно примеру для параллельного выполнения.Для указания порядка запуска этапов используйте
dependencies: [node]
. В примере ниже зависимостьdeplinference
отdts
. Пока не выполнитсяdts
этапdeplinference
не запустится.Ранее написанный код пайпланов изменений не требует.
version: "1"
nodes:
dts:
node_type: data_transfer
parameters:
name: "DTS main"
source_conn_id: "2c8a98ee-0000-0000-0000-888831e46993"
source: "b-ws-n999-0rf/requirements.txt"
destination_conn_id: "5678c648-dfgh-ffff-ac50-995afced7bb5"
destination: "PPL-MAIN/"
cluster_name: "christofari-1"
strategy: "write_all"
deplinference:
node_type: deployments_inference
parameters:
image: "cr.msk.sbercloud.ru/c7d4f6fe-erty-4d4a-ad74-22d6ccd07ca7/inference-image-1669123456:latest"
region: 'DGX2-INF-001'
#region: 'CCE-INF'
instance_type: 'v100.1gpu'
replicas:
min: 1
max: 1
alias: "inf-alias"
description: "inf-descr"
name: "name"
dependencies: [dts]
deplimage:
node_type: deployments_image
parameters:
base_image: 'cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0'
artifacts_directory: 'b-ws-n999-132/FakeModelFolder/ruBert-Base/'
run_script: 'kfserving_ruBert_base.py'
requirements_path: 'requirements.txt'
AWS_ACCESS_KEY_ID: 'u-ws-12345-132'
AWS_SECRET_ACCESS_KEY: 'ХХХ12361JSv12345s7v123er0XF5GfxPqUKk1234'
S3_ENDPOINT: 'https://n-ws-1234.s3.sbercloud.ru:0000'
dependencies: [dts]
envimage:
node_type: environments_image
parameters:
from_image: "cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0:0.0.31"
requirements_file: "/home/jovyan/quick-start/job_launch_tf2/requirements.txt"
dependencies: [dts]
envjob:
node_type: environments_job
parameters:
base_image: "cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda10.1-tf2.2.0-pt1.5.0:0.0.27"
script: "/home/jovyan/quick-start/job_launch_tf2/tensorflow_mnist_estimator.py"
n_workers: 1
n_gpus: 1
warm_cache: false
region: "DGX2-MT"
dependencies: [dts, deplimage]
nodes:
- node_type: environments_job
parameters:
#cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0
base_image: 'cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0:0.0.28'
# Путь до скрипта обучения на NFS
script: '/home/jovyan/cpu_job_script.py' # Путь к файлу скрипта
# Количество рабочих узлов региона, на которых будет выполняться скрипт
n_workers: 1
# Количество GPU на одном рабочем узле
n_gpus: 0
# Параметр warm_cache отключен и может передаваться только в значении false. Если передать true, то получим ошибку.
warm_cache: false
# Тип распределенных вычислений, варианты: pytorch, horovod
type: 'cce'
# A100 или V100, по умолчанию V100
region: 'CCE-MT'
memory_limit: 6
cpu_limit: 2
Рассмотрим пример пайплайна, в котором используются модули:
Data transfer service
Environments
Deployments
В примере выполняется:
Перенос файлов с S3 на NFS региона размещения вычислительных ресурсов Christofari.V100 с использованием
data_transfer
.Создание образа на основании базового с использованием зависимостей из файла
requirements.txt
.Запуск задачи обучения в регионе Christofari.V100 с установленными параметрами.
Создание образа для деплоя.
Запуск инференса модели в установленной конфигурации.
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-cuda11.0-tf2.4.0-pt1.7.1"
#------------------------
#------------------------
#-----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"