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>1notallowed. |
type |
Тип — string Значение по умолчанию — horovod
Тип задачи. Может быть фреймворком машинного обучения или бинарным исполняемым файлом. Возможные значения:
|
spark_executor_memory |
Тип — float
Объем памяти в ГБ, которую использует каждый воркер Spark. Значение параметра должно быть больше нуля, но меньше, чем \(memory - 512 - 384\), где
Если не указано, значение по умолчанию вычисляется по формуле \((memory - 512) \div (1 + 0,2)\), где 0,2 — это spark.executor.memoryOverheadFactor. При этом значение параметра spark.executor.memoryOverhead рассчитывается как \(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 Значение по умолчанию — {}
Флаги, с которыми необходимо запустить скрипт (если таковые имеются в скрипте обучения модели). Примечание Значения возможно передавать с пробелами, обращая внимание на кавычки. Пример — "'somevalue'". |
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 Значение по умолчанию — {}
Параметр задает переменные окружения. Примечание Значения возможно передавать с пробелами, обращая внимание на кавычки. Пример — "'somevalue'". |
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 Параметр позволяет выбирать регион размещения вычислительных ресурсов, где была запущена задача обучения. Для параметра доступны следующие значения:
|
- Список параметров
- Описание параметров
- Примеры команд
- Команды