Job

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

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

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

Параметр

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

script

Тип — string

…

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

Примечание

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

base_image

Тип — string

…

Базовый образ, в котором будет исполняться скрипт обучения модели. Образ должен быть из cr.msk.sbercloud.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.A100&CPU

Если в регионе 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' для тестирования запуска задач.

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

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

  • 'cce' для запуска задачи обучения на CPU. Пример запуска.

  • '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.msk.sbercloud.ru/aicloud-base-images/spark-3.2.1:0.0.32.1». Список библиотек в образах.

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

    Примечание

    Данный тип недоступен для региона Cloud.Region.A100 (GPU Tesla A100).

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

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

…

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

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

  • DGX2-MT — Christofari.V100

  • A100-MT — Christofari.A100

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

  • SR003 — Cloud.Region.A100&CPU

Примечание

В регионе 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.A100&CPU.

in_communal_cluster (опц.)

Тип — boolean

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

…

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

health_log_period (опц.)

Тип — integer

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

…

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

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

checkpoints_dir (опц.)

Тип — string

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

…

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

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

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

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

Пример добавления job_desc к задаче
client_lib.Job(base_image='cr.msk.sbercloud.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.msk.sbercloud.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.msk.sbercloud.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.

Блок для запуска задачи в регионе CCE-MT
client_lib.Job(script: 'your script',
               base_image: 'your base image',
               n_workers: 1,
               type: cce,
               region: CCE-MT,
               instance_type: m3.large.8.linux)

Команды

client_lib.Job.submit()

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

client_lib.Job.status()

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

Для задач обучения:

  • «Pending» — задача находится в очереди на выделение ресурсов, которые нужны для ее исполнения.

  • «Running» — задача обучения выполняется.

  • «Completed» или «Succeeded» — задача обучения завершилась.

  • «Completing» — задача обучения завершается.

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

  • «Deleted» или «Terminated» — задача обучения удалена.

  • «Stopped» или «Aborted» — задача обучения остановлена.

  • «Terminating» — задача обучения останавливается. Освобождаются ресурсы, задача и поды удаляются.

  • «Aborting» — задача обучения останавливается. Освобождаются ресурсы, удаляются только поды.

  • «Restarting» — задача обучения перезапускается.

client_lib.Job.kill()

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

client_lib.Job.logs(tail, verbose)

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

Параметры:

Параметр

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

tail (опц.)

Тип — integer

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

…

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

verbose (опц.)

Тип — boolean

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

…

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

client_lib.logs(job_name, tail, verbose)

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

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

Параметр

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

job_name (обяз.)

Тип — string

…

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

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

Параметр

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

tail (опц.)

Тип — integer

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

…

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

verbose (опц.)

Тип — boolean

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

…

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