- tocdepth
2
Использовать разные виды пайплайнов
В этом документе приведены примеры пайплайнов разных типов.
См.также
Версия пайплайна
Пайплайны могут не иметь версии или иметь версию 1 — version : "1"
.
В версии 1 доступны параллельное выполнение и повторный запуск шагов.
Кроме того, можно задать название шага пайплайна внутри nodes
и затем использовать это название в dependencies
.
Ниже сравниваются пайплайн без версии и пайплайн с версией 1.
nodes:
- node_type: "data_transfer"
parameters:
name: "S3->NFS(v100)"
source_conn_id: "ba0d91ea-f376-481f-9641-a9298e183da8"
source: "dc-source/"
destination_conn_id: "310630a9-ec4d-4530-a37c-cf96f3917e05"
destination: "dc-destination/test/"
cluster_name: "christofari-1"
strategy: "write_all"
version: "1"
nodes:
node_name_test: # For version 1 you must specify the step name
node_type: "data_transfer"
parameters:
name: "S3->NFS(v100)"
source_conn_id: "ba0d91ea-f376-481f-9641-a9298e183da8"
source: "dc-source/"
destination_conn_id: "310630a9-ec4d-4530-a37c-cf96f3917e05"
destination: "dc-destination/test/"
cluster_name: "christofari-1"
strategy: "write_all"
Пример пайплайна для переноса данных, обучения и развертывания модели
Рассмотрим пример пайплайна, в котором используются модули:
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.ai.cloud.ru/aicloud-base-images/horovod-cuda11.0-tf2.4.0-pt1.7.1"
#------------------------
#------------------------
#-----ENV job-------
- node_type: environments_job
parameters:
base_image: "cr.ai.cloud.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
job_desc: "Environments job"
region: "V100"
instance_type: "v100.1gpu"
#------------------------
#------------------------
#-----DEPL build image---
- node_type: deployments_image
parameters:
base_image: "cr.ai.cloud.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.ai.cloud.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"
Пайплайн с параллельным выполнением шагов
Для параллельного запуска шагов пайплайна добавьте название, или ключ, для каждого шага.
Примечание
Добавить параллельное выполнение можно только в пайплайн, в коде которого указана version: "1"
.
Ниже представлен код пайплайна (на основе Примера пайплайна), в который добавлен параллельный перенос данных из S3-хранилища на разные NFS.
version: "1"
nodes:
s3_to_christofari_1:
node_type: data_transfer
parameters:
name: "PPL: S3 -> NFS (christofari-1)"
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"
s3_to_christofari_2:
node_type: data_transfer
parameters:
name: "PPL: S3 -> NFS (christofari-2)"
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-2"
strategy: "write_all"
Примечание
Код пайплайна, написанный ранее без параллельных шагов, изменений не требует.
Пайплайн с зависимыми шагами
Чтобы указать порядок запуска шагов пайплайна, используйте параметр dependencies
.
Примечание
Добавить параметр dependencies
можно только в пайплайн, в коде которого указана version: "1"
.
Ниже представлен код пайплайна (на основе Примера пайплайна), в который добавлена зависимость шага environments_job
от environments_image
.
nodes:
#-----ENV image build----
- node_type: environments_image
parameters:
requirements_file: "/home/jovyan/quick-start/job_launch/requirements.txt"
from_image: "cr.ai.cloud.ru/aicloud-base-images/horovod-cuda11.0-tf2.4.0-pt1.7.1"
#------------------------
#------------------------
#-----ENV job-------
- node_type: environments_job
parameters:
base_image: "cr.ai.cloud.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
job_desc: "Environments job"
region: "V100"
instance_type: "v100.1gpu"
dependencies: [environments_image]
Пока не выполнится environments_image
, шаг environments_job
не запустится.
Если необходимо, чтобы шаг зависел от нескольких других шагов, перечислите их через запятую.
Пайплайн с повторным запуском шага
Чтобы пайплайн автоматически перезапускался в случае ошибки, используется retries
— параметр шага пайплайна.
Параметр может принимать значение от 0 до 100.
Примечание
Добавить параметр retries
можно только в пайплайн, в коде которого указана version: "1"
.
Ниже представлен код пайплайна (на основе Примера пайплайна), в который добавлен повторный запуск нескольких шагов.
version: "1"
nodes:
#-----ENV image build----
env_build:
node_type: environments_image
parameters:
requirements_file: "/home/jovyan/quick-start/job_launch/requirements.txt"
from_image: "cr.ai.cloud.ru/aicloud-base-images/horovod-cuda11.0-tf2.4.0-pt1.7.1"
retries: 3
#------------------------
#------------------------
#-----ENV job-------
env_job:
node_type: environments_job
parameters:
base_image: "cr.ai.cloud.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
job_desc: "Environments job"
region: "V100"
instance_type: "v100.1gpu"
dependencies: [env_build]
retries: 4
Когда пайплайн, в котором настроены повторные запуски, завершит работу, отобразится статус последней попытки запуска. Посмотреть отчет по всем попыткам можно в логах пайплайна.
Ограничения по количеству переносимых файлов
Внимание
Если количество файлов для одного переноса превышает 400 000, перенос не выполнится.
400 000 — это допустимая сумма файлов в источнике и месте назначения при выборе следующих способов переноса:
Добавить только новые записи (в пайплайнах соответствует такому значению параметра
strategy
, какappend_new
);Полная синхронизация (в пайплайнах соответствует такому значению параметра
strategy
, какsync_all
).
Например, если при запуске переноса Добавить только новые записи (append_new
) в источнике находится 250 000 файлов, а в месте назначения — 150 000 файлов, то лимит файлов будет превышен и перенос не выполнится.
Перенести файлы сверх лимита
Если переносимых файлов больше 400 000, используйте один из способов ниже.
Разложите файлы в источниках по разным директориям и перенесите каждую директорию по отдельности.
Создайте архив переносимых файлов и перенесите только архив.
для Dev & Test