Класс Job

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

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

Параметр

Описание

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

base_image

Тип: string

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

script

Тип: string

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

n_workers (опц.)

Тип: integer

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

1

n_gpus (опц.)

Тип: integer

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

1

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

warm_cache (опц.)

Тип: boolean

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

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

Обратите внимание на то, что данные все равно будут переданы в первой эпохе обучения, так что ставьте 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.0.30.

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

env_variables (опц.)

Тип: dict

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

processes_per_worker (опц.)

Тип: integer

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

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

Пример

client_lib.Job(base_image='registry.aicloud.sbcp.ru/base/horovod-cuda10.0-tf1.14.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

Методы

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, из лога исключается информация о статусе выполнения некоторых служебных процессов, например, пул образа или старт рабочих узлов кластера.