Job

Функция Job позволяет работать с задачами обучения в регионах.

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

Обязательные параметры

Параметр

Описание параметра

script

Тип — string

…

Путь до запускаемого скрипта. Обратите внимание, что точка монтирования — это корневой каталог, поэтому его не должно быть в начале пути. Если ваш скрипт лежит по пути /data/demo_examples/script.py, то необходимо указать /home/jovyan/data/demo_examples/script.py.

Примечание

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

base_image

Тип — string

…

Базовый образ, в котором будет исполняться скрипт обучения модели. Образ должен быть из cr.ai.cloud.ru/aicloud-base-images или из проекта Docker registry для текущего воркспейса. Подробнее про базовые образы.

Если указать несуществующий образ, задача не будет создана.

instance_type

Тип — string

…

Конфигурация вычислительных ресурсов, используемых для решения задач.

Для просмотра доступных instance_type воспользуйтесь методом.

Опциональные параметры

Параметр

Описание параметра

n_workers

Тип — integer

Значение по умолчанию — 1

…

Количество рабочих узлов региона, на котором будет исполняться скрипт. Параметр игнорируется задачами обучения на CPU и определяется для:

  • Christofari.A100

  • Christofari.V100

  • Cloud.Region.A100 (GPU Tesla A100)

  • Cloud.Region.HP1

Если в регионе Cloud.Region.A100 (GPU Tesla A100) указать «n_workers» больше единицы, вернется ошибка n_workers > 1 not allowed.

type

Тип — string

Значение по умолчанию — horovod

…

Тип распределенных вычислений.

Возможные значения:

  • 'binary' для исполнения бинарных файлов и shell-скриптов. Пример запуска.

  • 'pytorch' для использования встроенного механизма pytorch.distributed.

  • 'pytorch2' для использования встроенного механизма pytorch.distributed.

    Примечание

    Если запускаете задачу обучения с типом 'pytorch2' на instance_type='a100plus..', используйте образы cr.ai.cloud.ru/aicloud-base-images/cuda12.2-torch2-py310 и cr.ai.cloud.ru/aicloud-base-images/cuda12.2-torch2-py310.

    'pytorch' планируется отключить.

  • 'horovod' для использования библиотеки horovod.

  • 'pytorch_elastic' для запуска задачи с типом Pytorch Elastic Learning. При некорректных значениях параметров возможны ошибки:

    • если n_workers < 2 — возникает ошибка «elastic job needs n_workers >= 2».

    • если elastic_max_workers != n_workers — возникает ошибка «elastic_max_workers != n_workers is not implemented».

    • если elastic_min_workers > n_workers — возникает ошибка «elastic_min_workers must be <= n_workers».

    Подробнее в разделе Обучить модель с использованием PyTorch Elastic Learning.

    Примечание

    Этот тип задач недоступен для региона Cloud.Region.A100 (GPU Tesla A100).

  • 'spark' для запуска распределенных задач обучения с использованием Spark. Позволяет запускать задачи как на CPU, так и на GPU. Для запуска используйте образ «cr.ai.cloud.ru/aicloud-base-images/spark-3.2.1:0.0.32.1». Список библиотек в образах.

    Параметр region обязателен для типа распределенных вычислений 'spark'.

    Примечание

    Этот тип задач недоступен для регионов Cloud.Region.A100 (GPU Tesla A100), Cloud.Region.HP. Рекомендуемые регионы — Christofari.V100, Christofari.A100, Cloud.Region.HP1. См. Узнать доступные конфигурации.

spark_executor_memory

Тип — float

…

Объем памяти в ГБ, которую использует каждый воркер Spark.

Значение параметра должно быть больше нуля, но меньше, чем \(memory - 512 - 384\), где

  • memory — ограничение памяти для instance_type;

  • 512 MiB — объем памяти, необходимый для обслуживания контейнера;

  • 384 MiB — минимальное значение spark.executor.memoryOverhead.

Если не указано, значение по умолчанию вычисляется по формуле \((memory - 512) \div (1 + 0,2)\), где 0,2 — это spark.executor.memoryOverheadFactor. При этом значение параметра spark.executor.memoryOverhead рассчитывается как \(max(memory - 512 - spark\_executor\_memory, 384)\). Подробнее — см. Конфигурацию Spark.

Если type не равен spark, параметр spark_executor_memory игнорируется.

pytorch_use_env (опц.)

Тип — boolean

Значение по умолчанию — False

…

Параметр pytorch_use_env дублирует флаг «use_env» в torch.distributed.launch и нужен, если в скрипте «local_rank» передается через окружения, а не через «argparse».

flags (опц.)

Тип — dict

Значение по умолчанию — {}

…

Флаги, с которыми необходимо запустить скрипт (если таковые имеются в скрипте обучения модели).

Пример запуска.

Примечание

Значения возможно передавать с пробелами, обращая внимание на кавычки. Пример — "'some value'".

elastic_min_workers (опц.)

Тип — integer

Значение по умолчанию — 1

…

Параметр устанавливает минимальное количество воркеров для задач Pytorch Elastic Learning. Возможно передать значения больше 0 или строку default.

elastic_max_workers (опц.)

Тип — integer

Значение по умолчанию — n_workers

…

Параметр устанавливает максимальное количество воркеров для задач Pytorch Elastic Learning. Возможно передать значения больше 0 или строку default.

elastic_max_restarts (опц.)

Тип — integer

Значение по умолчанию — 5

…

Параметр устанавливает максимальное количество перезапусков задач Pytorch Elastic Learning.

stop_timer (опц.)

Тип — integer

Значение по умолчанию — 0 (задача не будет принудительно удалена)

…

Параметр задает время в минутах до принудительного удаления задачи, которая перешла в статус «Выполняется» (подробнее о статусах задач см. в разделе Проверить статистику по задачам и Jupyter Server).

env_variables (опц.)

Тип — dict

Значение по умолчанию — {}

…

Параметр задает переменные окружения.

Примечание

Значения возможно передавать с пробелами, обращая внимание на кавычки. Пример — "'some value'".

processes_per_worker (опц.)

Тип — integer

Значение по умолчанию — "default"

…

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

Можно запустить задачу на 16 GPU одного рабочего узла региона, указать process_per_worker=1, не заботясь о механизме распараллеливания и не оборачивая весь исполняемый код, например, в hvd.init(). Вместо этого напишите код как на обычной исполняющей машине.

Пример запуска.

conda_env (опц.)

Тип — string

Значение по умолчанию — None

…

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

job_desc (опц.)

Тип — string

Значение по умолчанию — None

…

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

Пример запуска.

region (опц.)

Тип — RegionMT | str

Значение по умолчанию — DGX2-MT

…

Параметр позволяет выбирать регион размещения вычислительных ресурсов.

Доступны значения:

  • DGX2-MT — Christofari.V100

  • A100-MT — Christofari.A100

  • SR002-MT — Cloud.Region.A100 (GPU Tesla A100)

  • SR003 — Cloud.Region.HP1

  • SR006 — Cloud.Region.HP

Примечание

В регионе Cloud.Region.A100 (GPU Tesla A100) можно запускать только нераспределенные задачи обучения.

preflight_check (опц.)

Тип — boolean

Значение по умолчанию — False

…

Позволяет проверить исправность GPU перед запуском задачи обучения. Доступны значения True или False. Проверка доступна в регионах Christofari (Christofari.V100) и Christofari Neo (Christofari.A100) для кастомных и базовых образов. Подробнее см. preflight check.

forbid_s3 (опц.)

Тип — boolean

Значение по умолчанию — False

…

В значении True позволяет запретить скрипту при выполнении получать доступ к S3. В значении False доступ к S3 разрешен.

forbid_internet (опц.)

Тип — boolean

Значение по умолчанию — False

…

В значении True позволяет запретить скрипту при выполнении получать доступ к интернету. В значении False доступ к интернету разрешен.

Примечание

Параметр доступен в регионах Christofari.V100, Cloud.Region.A100 (GPU Tesla A100), Cloud.Region.HP1.

in_communal_cluster (опц.)

Тип — boolean

Значение по умолчанию — False

…

В значении True позволяет запускать задачи обучения вне аллокации.

max_retry (опц.)

Тип — integer

Значение по умолчанию — None

…

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

Допустимые значения — от 3 до 10 включительно.

Используется, если type принимает одно из значений: pytorch, pytorch2, horovod, binary.

Параметр доступен только в аллокациях.

Примечание

При использовании параметра рекомендуем добавить в пользовательский код обучения поддержку checkpoints. См. Сохранить промежуточные результаты обучения (чекпоинты).

checkpoints_dir (опц.)

Тип — string

Значение по умолчанию — None

…

Путь к директории, в которую записываются промежуточные итоги задачи обучения. Подробнее о checkpoint — см. Сохранить промежуточные результаты обучения (чекпоинты).

Пример значения параметра: /home/jovyan/my-checkpoints.

Использование параметра checkpoints_dir упрощает получение перерасчета, если в задаче обучения возникли технические ошибки со стороны ML Space.

health_params (опц.)

Тип — object | HealthParams

Набор параметров для мониторинга зависших задач. См. Примеры использования.

Примечание

Кроме обязательного параметра log_period необходимо задать хотя бы один из параметров action, sub_actions.

  • log_period (обяз.)

    Тип — integer

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

    Допустимые значения — от 20 до 720 включительно.

  • action (опц.)

    Тип — str | JobHealthAction

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

    Допустимые значения:

    • delete — удаление задачи;

    • restart — перезапуск задачи. Задача перезапустится, если при ее создании передано значение параметра max_retry, а количество попыток перезапуска не исчерпано.

  • sub_actions (опц.)

    Тип — list[str | JobHealthSubAction]

    Действия, которые не повлияют на задачу напрямую, но будут полезны пользователю, например, для получения дополнительной информации и диагностики проблем.

    Допустимые значения:

    • notify — отправить пользователю уведомление с информацией по зависшей задаче.

Примеры команд

Пример добавления job_desc к задаче
client_lib.Job(base_image='cr.ai.cloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0:0.0.31',
               script='/home/jovyan/quick-start/job_launch/scripts/horovod/tensorflow_mnist_estimator.py',
               instance_type='a100.1gpu.80vG.12C.96G',
               job_desc='your_job_description')
Пример запуска задачи с типом binary
job = client_lib.Job(base_image='cr.ai.cloud.ru/aicloud-base-images/horovod-cuda11.0-tf2.4.0-pt1.7.1',
               script='ls',
               n_workers=2, instance_type='a100.1gpu.80vG.12C.96G', type ="binary", region='SR002-MT')

job.submit()

При запуске задач с типом binary для переменной script можно использовать bash-скрипты.

Пример использования параметра process_per_worker
client_lib.Job(base_image='cr.ai.cloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0:0.0.31',
               script='/home/jovyan/quick-start/job_launch/scripts/horovod/tensorflow_mnist_estimator.py',
               instance_type='a100.1gpu.80vG.12C.96G',
               n_workers=1,
               process_per_worker=1)
Пример задания параметра flags
   flags = {
     "batch_size": 512,
     "model": "mymodel50",
     "xla": False
     }

Скрипт будет запущен с параметрами <your_script> --batch_size=512 --model="mymodel50" --xla=False.

Примеры использования JobHealthParams
from client_lib import *

# Example 1

Job(
    base_image="cr.ai.cloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0:0.0.32.3",
    script="/home/jovyan/quick-start/job_launch/scripts/horovod/tensorflow_mnist_estimator.py",
    instance_type="v100.1gpu",
    # If there were no updates in the job log for 20 minutes,
    # the user will receive a notification, the job will be deleted
    health_params=JobHealthParams(log_period=20, action=JobHealthAction.delete, sub_actions=[JobHealthSubAction.notify]),
)

# Example 2

Job(
    base_image="cr.ai.cloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0:0.0.32.3",
    script="/home/jovyan/quick-start/job_launch/scripts/horovod/tensorflow_mnist_estimator.py",
    instance_type="v100.1gpu",
    max_retry=3,
    # If there were no updates in the job log for 120 minutes,
    # the user will receive a notification, the job will be restarted
    health_params=JobHealthParams(log_period=120, action="restart", sub_actions=["notify"]),
)

# Example 3

Job(
    base_image="cr.ai.cloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0:0.0.32.3",
    script="/home/jovyan/quick-start/job_launch/scripts/horovod/tensorflow_mnist_estimator.py",
    instance_type="v100.1gpu",
    # If there were no updates in the job log for 180 minutes,
    # the user will receive a notification
    health_params=JobHealthParams(log_period=180, sub_actions=[JobHealthSubAction.notify]),
)

# Example 4

Job(
    base_image="cr.ai.cloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0:0.0.32.3",
    script="/home/jovyan/quick-start/job_launch/scripts/horovod/tensorflow_mnist_estimator.py",
    instance_type="v100.1gpu",
    max_retry=3,
    # If there were no updates in the job log for 60 minutes,
    # the job will be restarted without notification
    health_params=JobHealthParams(log_period=60, action=JobHealthAction.restart),
)

Команды

client_lib.Job.submit()

Команда submit() отправляет сформированную задачу на вычисление в регион, после чего задача ставится в очередь на выполнение.

client_lib.Job.status()

Команда status() возвращает статус только по одной задаче обучения.

Статусы задач обучения

Статус

Описание

«Pending»

  • Задача находится в очереди на выделение ресурсов, которые нужны для ее исполнения.

  • Ресурсы для выполнения были заняты, но еще скачивается образ для ее выполнения.

«Running»

Задача обучения выполняется.

«Completed» или «Succeeded»

Задача обучения завершилась.

«Completing»

Задача обучения завершается.

«Failed»

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

«Deleted» или «Terminated»

Задача обучения удалена.

«Stopped» или «Aborted»

Задача обучения остановлена.

«Terminating»

Задача обучения останавливается. Освобождаются ресурсы, задача и поды удаляются.

«Aborting»

Задача обучения останавливается. Освобождаются ресурсы, удаляются только поды.

client_lib.Job.kill()

Команда kill() удаляет задачу вне зависимости от того, находится ли она в очереди или уже исполняется в регионе.

client_lib.Job.logs(tail, verbose)

Команда logs(tail, verbose) возвращает логи по задаче, отправленной в регион на исполнение.

Параметры:

Параметр

Описание параметра

tail (опц.)

Тип — integer

Значение по умолчанию — 0

…

Параметр определяет количество выводимых строк из лога, начиная с конца.

verbose (опц.)

Тип — boolean

Значение по умолчанию — True

…

Параметр определяет уровень детализации логов для пользователя. True — предоставляется полный лог. False — из лога исключается информация о статусе выполнения некоторых служебных процессов, например, пула образа или старта рабочих узлов региона.

client_lib.logs(job_name, tail, verbose)

Метод возвращает логи по названию задачи.

Обязательные параметры

Параметр

Описание параметра

job_name (обяз.)

Тип — string

…

Название задачи.

Опциональные параметры

Параметр

Описание параметра

tail (опц.)

Тип — integer

Значение по умолчанию — None

…

Параметр определяет количество выводимых строк из лога, начиная с конца.

verbose (опц.)

Тип — boolean

Значение по умолчанию — False

…

Параметр определяет уровень детализации логов для пользователя. True — предоставляется полный лог. False — из лога исключается информация о статусе выполнения некоторых служебных процессов, например, пула образа или старта рабочих узлов региона.

Запустили Evolution free tier
для Dev & Test
Получить