Использование приоритетов при обучении моделей
Приоритеты позволяют организовать запуск задач в порядке их важности. Они доступны только в аллокациях.
Используйте приоритеты запуска, чтобы:
запускать срочные prod-задачи с более высоким приоритетом, отделяя их от R&D-задач;
мелкие неприоритетные задачи автоматически освобождали ресурсы для крупных с высоким приоритетом.
Установить приоритет для задачи обучения
Приоритеты доступны в публичном API и client_lib и задаются при помощи поля priority_class. Например:
POST /public/v2/jobs{base_image='cr.ai.cloud.ru/aicloud-base-images/py3.10-torch2.1.2:0.0.40',script='/home/jovyan/test_script.py',region='SR006',instance_type='a100plus.8gpu.80vG.96C.768G',n_workers=2,type="pytorch2",processes_per_worker=1,job_desc="medium-priority training job",priority_class="medium",max_retry=3}
Описание приоритетов
Название |
Значение поля priority_class |
Для какой сущности |
Описание |
---|---|---|---|
Низкий |
low |
Задача обучения |
В очереди из приоритетов выполняется последним. |
Средний |
medium |
Задача обучения |
Значение по умолчанию. В очереди из приоритетов выполняется после Jupyter Server и всех задач с высоким приоритетом. |
Высокий |
high |
Задача обучения, Jupyter Server |
В очереди из приоритетов выполняется первым. |
Для задач с низким и средним приоритетом рекомендуется задавать параметр max_retry, чтобы они перезапустились, если их вытеснит более приоритетная задача.
Принцип работы
Поскольку у Jupyter Server всегда высокий приоритет запуска, то:
Если запуска ожидают задача с высоким приоритетом и Jupyter Server, то они запустятся в порядке очереди и освобождения ресурсов.
Если запуска ожидают Jupyter Server и несколько задач обучения со средним приоритетом, то сначала запустится Jupyter Server, а потом задачи обучения со средним приоритетом в порядке очереди.
Новые задачи, имеющие более высокий приоритет, могут вытеснить уже запущенные задачи с приоритетом ниже, если ресурсов не хватает.
Рассмотрим пример с несколькими задачами обучения, которые имеют разное время создания, приоритет и занимают разное количество ресурсов.
Допустим, в регионе запущено 2 задачи: Job 0 с низким приоритетом в стадии завершения и Job 1 с высоким приоритетом. Обе задачи вместе заняли 8 из 8 доступных в регионе GPU.
При этом в очереди находится задача Job 3 со средним приоритетом, которая претендует на освобождающиеся 4 GPU в регионе.
Пока ресурсы заняты, новые задачи Job 4 и Job 2 не могут попасть в очередь.
Job 1 тоже завершается, и в очередь попадает задача Job 4. Она имеет приоритет выше, чем у Job 3.
Поскольку при завершении Job 1 не все поды могут успеть завершить работу, на частично освободившихся ресурсах запустится задача с высоким приоритетом Job 4.
Задача Job 3 останется в очереди, задача Job 2 в очередь не попадает, несмотря на то что она была создана раньше.
- Установить приоритет для задачи обучения
- Описание приоритетов
- Принцип работы