Облачная платформаEvolution

Принципы работы аллокаций и очередей


В Distributed Train реализована система аллокаций и очередей — механизм управления вычислительными ресурсами, который позволяет распределять GPU и CPU между различными типами нагрузки: задачами обучения, Jupyter Servers и приложениями Playground.

Основные понятия

  • Аллокация — выделенный объем вычислительных ресурсов в определенном регионе.

  • Очередь — компонент аллокации, организующий выполнение нагрузки с учетом приоритетов и правил вытеснения. Поддерживаются различные типы очередей.

  • Нагрузка — активная задача обучения, Jupyter Servers или приложение Playground, которые используют ресурсы аллокации или очереди. При превышении лимита новые нагрузки ожидают освобождения ресурсов.

  • Приоритет — параметр, определяющий порядок выполнения задач обучения, Jupyter Servers и приложений Playground в очереди или между очередями. Поддерживаются приоритеты: Высокий high, Средний medium, Низкий low, shared-medium, shared-low и shared-cluster.

  • Вытеснение — механизм, при котором нагрузка с более низким приоритетом приостанавливается или завершается, чтобы освободить ресурсы нагрузке с более высоким приоритетом. Вытесненная нагрузка переводится в состояние ожидания до появления свободных ресурсов.

  • Default-очередь — базовая очередь аллокации с доступом ко всем ее ресурсам. Создается автоматически и не может быть удалена. Нагрузка в ней не может быть вытеснена нагрузкой из других очередей.

  • Shared-очередь — очередь для утилизации свободных ресурсов, которые не используются в Default- и Custom-очередях. Доступна всем воркспейсам аллокации, но нагрузка может быть вытеснена нагрузкой с более высоким приоритетом.

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

  • Shared-cluster — общая низкоприоритетная очередь, использующая свободные ресурсы из нескольких аллокаций. Доступна только в регионе SR008 и предназначена исключительно для задач обучения с приоритетом shared-cluster.

Параметры и тарификация аллокации

Ключевыми параметрами аллокации являются:

  • Регион;

  • Тип ресурсов — CPU или GPU;

  • Количество ресурсов.

При создании новой аллокации выделенные ресурсы становятся доступными только привязанным к ней воркспейсам. Пользователи воркспейсов могут запускать задачи обучения, Jupyter Servers и приложения Playground, но их суммарная нагрузка не должна превышать выделенные ресурсы. При превышении лимита новые задачи ожидают свободных ресурсов.

Примечание

Данные в NFS-хранилище остаются на прежнем месте и не требуют перемещения при создании или расформировании аллокации.

Аллокация тарифицируется 24/7 по объему выделенных ресурсов. При этом реальная утилизация ресурсов внутри аллокации не влияет на тарификацию.

Тарификация каждой аллокации начисляется в проект, выбранный при создании аллокации. Стоимость складывается из суммы всех подключенных аллокаций.

Типы аллокаций

Аллокация без очередей

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

Воркспейс может быть подключен к нескольким аллокациям в рамках одного региона.

После создания аллокации администратор проекта может:

Примечание

Расформировать аллокацию может только владелец аллокации.

Аллокация с очередями

Аллокация с очередями включает в себя несколько типов очередей и систему приоритетов, определяющих последовательность выполнения задач.

При подключении очередей в аллокации автоматически создаются два типа очередей: Default и Shared. Администратор проекта может дополнительно создать третий тип: пользовательскую Custom-очередь. Владелец аллокации может подключить аллокацию к очереди Shared-cluster.

Типы очередей

Shared-очередь

Очередь для утилизации свободных ресурсов, которые не используются в Default- и Custom-очередях. Удалить ее нельзя. Запустить нагрузку в Shared-очереди может любой воркспейс, подключенный к аллокации.

Характеристики:

  • Размер очереди не может превышать общий размер аллокации и адаптируется в зависимости от загрузки других очередей.

  • Нагрузку в Shared-очереди вытесняет нагрузка с более высоким приоритетом из других очередей.

  • Возможен запуск нагрузки только с приоритетами shared-medium и shared-low.

Default-очередь

Базовая очередь аллокации, которая не может быть удалена. При подключении имеет доступ ко всем ресурсам аллокации. Воркспейсы, подключенные к аллокации, автоматически получают доступ к Default-очереди.

Характеристики:

  • Администратор проекта может уменьшить размер для создания Custom-очередей.

  • Нагрузка в Default-очереди не может быть вытеснена нагрузкой из других очередей.

  • При отсутствии Custom-очередей использует полный объем ресурсов аллокации.

  • Размер очереди не может превышать общий размер аллокации.

  • Возможен запуск нагрузки с приоритетами high, medium и low.

  • Если не указана конкретная очередь при запуске нагрузки, то используется Default-очередь.

Custom-очередь

Пользовательская очередь, которую может создать администратор проекта. Воркспейсы получают доступ к ресурсам Custom-очередей после того, как администратор устанавливает доступ. Если воркспейс привязан к аллокации, но не привязан к конкретной Custom-очереди, его пользователи не смогут запускать нагрузку в этой очереди.

Характеристики:

  • Размер очереди задается администратором, ресурсы забираются из других очередей.

  • Запуск нагрузки поддерживаются с приоритетами high, medium и low.

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

  • Серверы фиксируются за очередью.

Shared-cluster очередь

Общая низкоприоритетная очередь для повышения утилизации ресурсов. Очередь использует свободные ресурсы из всех аллокаций, которые подключены к ней.

Характеристики:

  • Размер очереди зависит от свободных ресурсов аллокаций, которые к ней подключены.

  • Доступна только в регионе SR008.

  • Поддерживается запуск только задач обучения с приоритетом shared-cluster.

  • Задачи могут быть вытеснены задачами из других очередей.

  • Запуск Jupyter Servers и приложений Playground не поддерживается.

Сравнение типов очередей

Ниже представлено сравнение типов очередей по разным параметрам.

Типы очередей

Характеристика

Shared-очередь

Default-очередь

Custom-очередь

Shared-cluster-очередь

Кто создает

Создается автоматически на аллокацию

Создается автоматически на аллокацию

Создает администратор проекта

Создана автоматически в регионе SR008, владелец аллокации подключает к очереди через запрос в техническую поддержку

Кому доступна

Всем пользователям всех подключенных воркспейсов аллокации

Всем пользователям всех подключенных воркспейсов аллокации

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

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

Запуск нагрузки

Можно запустить все типы нагрузки: задачи обучения, Jupyter Servers и приложения Playground

Можно запустить все типы нагрузки, если воркспейс подключен к очереди

Можно запустить все типы нагрузки, если воркспейс подключен к очереди

Можно запустить только задачи обучения

Лимит на ресурсы

При создании размер очереди равен размеру аллокации. Но для запуска нагрузки можно использовать только неутилизированные ресурсы из других очередей. Администратор не может его изменить

При создании размер очереди равен размеру аллокации. Администратор может его изменить

Объем ресурсов для Сustom-очереди забирается из других очередей. Администратор проекта задает лимит на количество ресурсов

Использует свободные ресурсы из нескольких аллокаций, подключенных к ней. Администратор не может изменить размер

Приоритет нагрузки в очереди

shared-medium и shared-low

Высокий high, Средний medium и Низкий low

Высокий high, Средний medium и Низкий low

shared-cluster

Вытеснение нагрузки

Нагрузку в этой очереди может вытеснить любая нагрузка из Default- или Custom-очереди с любым приоритетом

Нагрузка в этой очереди вытесняется только нагрузкой из нее же в соответствии с приоритетами

Нагрузка в этой очереди вытесняется только нагрузкой из нее же в соответствии с приоритетами

Нагрузку в этой очереди может вытеснить любая нагрузка из Shared-, Default- или Custom-очереди с любым приоритетом

Правила выбора очереди

При запуске нагрузки система определяет очередь следующим образом:

  • Указан параметр queue_name — нагрузка попадает в указанную очередь при наличии доступа.

  • Не указан queue_name — используется очередь по умолчанию для данного типа нагрузки.

  • Очередь по умолчанию не задана — нагрузка запускается в Default-очереди.

Алгоритм принятия решений при запуске нагрузки:

../_images/s__concepts__allocations-choice.webp

Примеры запуска нагрузки

Пример 1: Запуск без указания очереди

Пример API-запроса запуска задачи без указания очереди:

curl -X POST "https://api.ai.cloud.ru/public/v2/jobs" \
-H "X-Workspace-Id: <workspace_id>" \
-H "X-Api-Key: <api_key>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"script": "/home/jovyan/training/model_train.py",
"base_image": "cr.ai.cloud.ru/aicloud-base-images/py3.11-torch2.4.0:0.0.40",
"region": "SR006",
"instance_type": "a100.1gpu.8C.243G",
"type": "pytorch2",
"n_workers": 1,
"job_desc": "Training-job1",
}'

Алгоритм обработки:

  • queue_name не указан.

  • Тип нагрузки: job.

  • Проверка очереди по умолчанию для задач обучения — Default-очередь.

Результат: Запуск в Default-очереди с medium приоритетом.

Пример 2: Запуск в Shared-очереди

Пример API-запроса фоновой задачи:

curl -X POST "https://api.ai.cloud.ru/public/v2/jobs" \
-H "X-Workspace-Id: <workspace_id>" \
-H "X-Api-Key: <api_key>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"script": "/home/jovyan/training/model_train.py",
"base_image": "cr.ai.cloud.ru/aicloud-base-images/py3.11-torch2.4.0:0.0.40",
"region": "SR006",
"instance_type": "a100.1gpu.8C.243G",
"type": "pytorch2",
"n_workers": 1,
"queue_name": "shared",
"priority_class": "shared-low",
"job_desc": "Training-job1",
}'

Алгоритм обработки:

  • Параметр queue_name = shared — Shared-очередь.

  • Приоритет: shared-low (низший в системе).

  • Доступ: все воркспейсы аллокации.

  • Ресурсы: адаптивные (остаточные).

Пример 3: Запуск в Custom-очереди

Пример API-запроса фоновой задачи критически важной задачи:

curl -X POST "https://api.ai.cloud.ru/public/v2/jobs" \
-H "X-Workspace-Id: <workspace_id>" \
-H "X-Api-Key: <api_key>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"script": "/home/jovyan/training/model_train.py",
"base_image": "cr.ai.cloud.ru/aicloud-base-images/py3.11-torch2.4.0:0.0.40",
"region": "SR006",
"instance_type": "a100.1gpu.8C.243G",
"type": "pytorch2",
"n_workers": 1,
"queue_name": "production-pipeline",
"priority_class": "high"
"job_desc": "Training-job1",
}'

Алгоритм обработки:

  • queue_name = production-pipeline — Custom-очередь.

  • Проверка доступа воркспейса к очереди.

  • Приоритет: high — выполняется в первую очередь.

  • Ресурсы: фиксированный лимит очереди.

Мониторинг и оптимизация использования

Мониторинг аллокаций предоставляет возможность отслеживать нагрузку и потребление ресурсов на дашборде по аллокациям.

Сервис мониторинга отслеживает:

  • Количество запущенных задач обучения.

  • Количество запущенных Jupyter Servers.

  • Общее потребление RAM.

  • Среднюю загрузку GPU.

На основе этой информации вы можете:

  • изменить конфигурацию аллокации;

  • перераспределить задачи между очередями;

  • спланировать бюджет на вычислительные ресурсы.

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