Job

Данный класс характеризует задачу обучения скрипта на кластере.

Параметры конструктора класса

Важно

Параметр warm_cache — отключен (deprecated). Он может быть корректно обработан только в значении warm_cache=False

При значении warm_cache=True возникнет ошибка с кодом 400.

Параметр

Описание

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

script

Тип: string

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

base_image

Тип: string

Базовый образ, в котором будет исполняться скрипт обучения модели

n_workers (опц.)

Тип: integer

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

1

n_gpus (опц.)

Тип: integer

Количество GPU на одном рабочем узле кластера.

1

Укажите n_gpus=16, если твердо не уверены, что вам нужно иное. Подробнее см. в разделе Обучение моделей на большом количестве GPU.

cpu_limit (опц.)

Тип: integer

Количество CPU на одном рабочем узле кластера.

1

warm_cache — false

Тип: boolean

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

False (прогрев не нужен).

Обратите внимание на то, что данные все равно будут переданы в первой эпохе обучения.

type (опц.)

Тип: string

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

На данный момент возможны: type='pytorch' для использования встроенного механизма pytorch.distributed и type='horovod' для использования библиотеки horovod.

horovod

flags (опц.)

Тип: dict

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

Например:

"flags": {
     "batch_size": 512,
     "model": "mymodel50",
     "xla": False
     }";

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

stop_timer (опц.)

Тип: integer

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

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

env_variables (опц.)

Тип: dict

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

processes_per_worker (опц.)

Тип: integer

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

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

Пример

client_lib.Job(base_image='cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda10.0-tf1.15.0-pt1.3.0',
                     script='tensorflow_mnist_estimator.py', n_workers=1,
                     n_gpus=16, warm_cache=False, process_per_worker=1)

conda_env (опц.)

Тип: string

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

None

job_desc (опц.)

Тип: string

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

Пример

client_lib.Job(base_image='your base image',
               script='your script',
               job_desc="your_job_description"
               n_workers=1,
               n_gpus=1,
               warm_cache=False,
               process_per_worker=1)

None

cuda11 (опц.)

Тип: string

Параметр в значении true позволяет использовать cuda11.

None

region (опц.)

Тип: string

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

None

preflight_check (опц.)

Тип: string

Позволяет проверить исправность GPU перед запуском задачи обучения. Доступны значения True или False.

None

Методы

Client_lib.Job.submit()

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

Client_lib.Job.kill()

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

Client_lib.Job.logs(tail, verbose)

Возвращает логи по задаче, отправленной на кластер.

Параметры:

Параметр

Описание

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

tail (опц.)

Тип: integer

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

verbose (опц.)

Тип: boolean

Параметр определяет уровень детализации логов для пользователя.

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

Client_lib.logs(job_name, tail, verbose)

Данный метод возвращает логи по имени задачи.

Параметр

Описание

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

job_name

Тип: string

Имя задачи.

tail (опц.)

Тип: integer

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

verbose (опц.)

Тип: boolean

Параметр определяет уровень детализации логов для пользователя.

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