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 и определяется для:
Если в регионе Cloud.Region.A100 (GPU Tesla A100) указать «n_workers» больше единицы, вернется ошибка n_workers > 1 not allowed. |
type |
Тип — string Значение по умолчанию — horovod
Тип задачи. Может быть фреймворком машинного обучения или бинарным исполняемым файлом. Возможные значения:
|
spark_executor_memory |
Тип — float
Объем памяти в ГБ, которую использует каждый воркер Spark. Значение параметра должно быть больше нуля, но меньше, чем \(memory - 512 - 384\)
Если не указано, значение по умолчанию вычисляется по формуле \((memory - 512) \div (1 + 0,2)\) \(max(memory - 512 - spark\_executor\_memory, 384)\) Если 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 (задача не будет принудительно удалена)
Время в минутах до принудительного удаления задачи, которая перешла в статус «Выполняется». Подробнее о статусах задач. |
env_variables (опц.) |
Тип — dict Значение по умолчанию — {}
Параметр задает переменные окружения. Примечание Значения возможно передавать с пробелами, обращая внимание на кавычки. Пример — "'some value'". |
processes_per_worker (опц.) |
Тип — integer Значение по умолчанию — 'default'
Параметр задает количество процессов на один рабочий узел региона, если не подходит количество процессов, равное количеству GPU. Можно запустить задачу на 16 GPU одного рабочего узла региона, указать processes_per_worker=1, не заботясь о механизме распараллеливания и не оборачивая весь исполняемый код, например, в hvd.init(). Вместо этого напишите код как на обычной исполняющей машине. |
conda_env (опц.) |
Тип — string Значение по умолчанию — None
Параметр позволяет указывать название окружения conda, если в образе имеется таковое и используется не стандартное окружение python, а окружение anaconda. |
job_desc (опц.) |
Тип — string Значение по умолчанию — None
Параметр позволяет задавать пользовательские описания для запускаемых задач. |
region (опц.) |
Тип — RegionMT | str Значение по умолчанию — DGX2-MT
Параметр позволяет выбирать регион размещения вычислительных ресурсов. Доступны ключи регионов:
Примечание В регионе Cloud.Region.A100 (GPU Tesla A100) можно запускать только нераспределенные задачи обучения. |
forbid_s3 (опц.) |
Тип — boolean Значение по умолчанию — False
В значении True позволяет запретить скрипту при выполнении получать доступ к S3. В значении False доступ к S3 разрешен. Примечание Параметр будет отключен с 04.07.2024. Вместо него используйте internet |
forbid_internet (опц.) |
Тип — boolean Значение по умолчанию — False
В значении True позволяет запретить скрипту при выполнении получать доступ к интернету. В значении False доступ к интернету разрешен. Примечание
|
internet (опц.) |
Тип — boolean Значение по умолчанию до 04.07.2024 — None. Значение по умолчанию после 04.07.2024 — True.
Примечание
|
max_retry (опц.) |
Тип — integer Значение по умолчанию — None
Максимальное количество попыток запуска задачи для случая, когда первая из этих попыток завершилась с ошибкой. При рестарте задача попадает в очередь на запуск в регионе. Допустимые значения — от 3 до 100 включительно. Используется, если type принимает одно из значений: pytorch, pytorch2, horovod, binary. Параметр доступен только в аллокациях. Примечание При использовании параметра рекомендуем добавить в пользовательский код обучения поддержку чекпоинтов. Доступна переменная окружения MLSPACE_JOB_RETRY_COUNT — количество перезапусков задачи обучения. Переменную можно использовать в собственном скрипте, например, чтобы структурировать логи относительно текущего номера перезапуска задачи. |
checkpoints_dir (опц.) |
Тип — string Значение по умолчанию — None
Путь к директории, в которую записываются чекпоинты обучения. Пример значения параметра: /home/jovyan/my-checkpoints. Использование параметра checkpoints_dir упрощает получение перерасчета, если в задаче обучения возникли технические ошибки со стороны ML Space. |
health_params (опц.) |
Тип — object | HealthParams Набор параметров для мониторинга зависших задач. Примеры использования Примечание Кроме обязательного параметра log_period необходимо задать хотя бы один из параметров action, sub_actions.
|
Примеры команд
client_lib . Job ( base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,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' )
job = client_lib . Job ( base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,script = 'ls' ,n_workers = 1 , instance_type = 'a100.1gpu.80vG.12C.96G' , type = 'binary' , region = 'SR002-MT' )job . submit ()
При запуске задач с типом binary для переменной script можно использовать bash-скрипты.
client_lib . Job ( base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,script = '/home/jovyan/quick-start/job_launch/scripts/horovod/tensorflow_mnist_estimator.py' ,instance_type = 'a100.1gpu.80vG.12C.96G' ,n_workers = 1 ,processes_per_worker = 1 )
flags = {'batch_size' : 512 ,'model' : 'mymodel50' ,'xla' : False}
Скрипт будет запущен с параметрами <your_script> --batch_size=512 --model='mymodel50' --xla=False.
from client_lib import *# Example 1Job (base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,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 deletedhealth_params = JobHealthParams ( log_period = 20 , action = JobHealthAction . delete , sub_actions = [ JobHealthSubAction . notify ]),)# Example 2Job (base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,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 restartedhealth_params = JobHealthParams ( log_period = 120 , action = 'restart' , sub_actions = [ 'notify' ]),)# Example 3Job (base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,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 notificationhealth_params = JobHealthParams ( log_period = 180 , sub_actions = [ JobHealthSubAction . notify ]),)# Example 4Job (base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,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 notificationhealth_params = JobHealthParams ( log_period = 60 , action = JobHealthAction . restart ),)
Команды
submit()
Команда submit() отправляет сформированную задачу на вычисление в регион, после чего задача ставится в очередь на выполнение.
Перед ее использованием рекомендуется выполнить команду get_available_resources_count() для проверки количества доступных ресурсов.
job = client_lib . Job ( base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,script = 'ls' ,n_workers = 1 , instance_type = 'a100.1gpu.80vG.12C.96G' , type = 'binary' , region = 'SR002-MT' )job . submit ()
status()
Команда status() возвращает статус по последней задаче обучения.
job = client_lib . Job ( base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,script = 'ls' ,n_workers = 1 , instance_type = 'a100.1gpu.80vG.12C.96G' , type = 'binary' , region = 'SR002-MT' )job . submit ()job . status ()
Статус |
Описание |
---|---|
«Pending» |
Задача находится в ожидании ресурсов. |
«Inqueue» |
Задача находится в очереди на запуск. |
«Starting» |
Ресурсы аллоцированы, происходит скачивание образов и запуск воркеров. |
«Running» |
Задача обучения выполняется. |
«Completed» |
Задача обучения завершилась. |
«Completing» |
Задача обучения завершается. |
«Failed» |
Задача обучения завершилась с ошибкой, рекомендуется проверить логи задачи. |
«Deleted» или «Terminated» |
Задача обучения удалена. |
«Stopped» или «Aborted» |
Задача обучения остановлена. |
«Terminating» |
Задача обучения останавливается. Освобождаются ресурсы, задача и поды удаляются. |
«Aborting» |
Задача обучения останавливается. Освобождаются ресурсы, удаляются только поды. |
kill()
Команда client_lib.Job(...).kill() удаляет последнюю задачу:
job = client_lib . Job ( base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,script = 'ls' ,n_workers = 1 , instance_type = 'a100.1gpu.80vG.12C.96G' , type = 'binary' , region = 'SR002-MT' )job . submit ()job . status ()job . kill ()
Команда client_lib.kill(job_name, region) удаляет задачу по номеру и ключу региона, где задача выполняется:
client_lib . kill ( 'lm-mpi-job-abbb512e-e2c4-4d57-bb72-4c029b82cf02' , region = 'SR002-MT' )
logs()
Команда client_lib.Job.logs() возвращает логи задачи обучения.
job = client_lib . Job ( base_image = 'cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.2.2:0.0.40' ,script = 'ls' ,n_workers = 1 , instance_type = 'a100.1gpu.80vG.12C.96G' , type = 'binary' , region = 'SR002-MT' )job . submit ()job . status ()job . logs ()
Команда client_lib.logs(job_name, region, tail, verbose) возвращает логи задачи обучения по ее имени.
client_lib . logs ( 'lm-mpi-job-abbb512e-e2c4-4d57-bb72-4c029b82cf02' , region = 'SR002-MT' , tail = 1 , verbose = False )
Параметр |
Описание параметра |
---|---|
job_name |
Тип — string
Название задачи. Обязательный параметр для logs(job_name, tail, verbose) |
tail (опц.) |
Тип — integer Значение по умолчанию — None
Параметр определяет количество выводимых строк из лога, начиная с конца. |
verbose (опц.) |
Тип — boolean Значение по умолчанию — False
Параметр определяет уровень детализации логов для пользователя. True — предоставляется полный лог. False — из лога исключается информация о статусе выполнения некоторых служебных процессов, например, пула образа или старта рабочих узлов региона. |
region (опц.) |
Тип — String Значение по умолчанию — DGX2-MT Параметр позволяет выбирать регион размещения вычислительных ресурсов, где была запущена задача обучения. Для параметра доступны следующие значения:
|
- Список параметров
- Описание параметров
- Примеры команд
- Команды