Работа с разными видами пайплайнов

В этом документе приведены примеры пайплайнов разных типов.

Версия пайплайна

Пайплайны могут не иметь версии или иметь версию 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"
Пайплайн с версией 1
 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

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

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

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

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

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

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

Пример. Код пайплайна для использования нескольких модулей платформы
 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, используйте один из способов ниже.

  • Разложите файлы в источниках по разным директориям и перенесите каждую директорию по отдельности.

  • Создайте архив переносимых файлов и перенесите только архив.

Масштабная конференция
GoCloud 2024:
облачные грани будущего