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

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


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

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

В рамках очередей поддерживаются приоритеты high, medium, low, shared и shared-cluster, а также автоматическое вытеснение задач, что обеспечивает предсказуемое распределение нагрузки и оптимизацию использования инфраструктуры.

Управление конфигурацией и мониторинг использования доступны через интерфейс Distributed Train и Public API.

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

  • Регион;

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

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

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

Примечание

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

Shared-очередь

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

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

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

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

  • Не поддерживается запуск Jupyter Server из-за высокого приоритета.

  • Возможен запуск задач обучения только с приоритетами shared-medium и shared-low, которые гарантируют низший приоритет.

Default-очередь

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

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

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

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

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

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

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

  • Jupyter Server поддерживаются только с приоритетом high.

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

Custom-очередь

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

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

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

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

  • Jupyter Server поддерживаются только с приоритетом high.

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

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

Shared-cluster очередь

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

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

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

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

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

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

  • Запуск Jupyter Server не поддерживается.

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

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

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

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

Shared-очередь

Default-очередь

Custom-очередь

Shared-cluster-очередь

Кто создает

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

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

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

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

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

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

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

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

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

Запуск Jupyter Server и задач обучения

Jupyter Server запускать нельзя.

Задача обучения запускается с параметром queue_name = 'shared' Если не передать параметр, то задача запустится в очереди, которая определена как очередь по умолчанию

Jupyter Server можно запустить, если воркспейс подключен к очереди

Задача обучения запускается с параметром queue_name = 'default'

Jupyter Server можно запустить, если воркспейс подключен к очереди.

Задача обучения запускается с параметром queue_name = 'custom_name' Если не передать параметр, то задача запустится в очереди, которая определена как очередь по умолчанию

Jupyter Server запускать нельзя.

Задача обучения запускается с параметром queue_name = 'shared-cluster'

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

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

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

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

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

Приоритет задач в очереди

shared-medium и shared-low

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

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

shared-cluster

Вытеснение задач

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

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

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

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

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

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

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

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

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

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

../_images/s__concepts__allocations-choice.svg

Примеры запуска задач

Пример 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 Server.

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

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

На основе этой информации вы можете принимать следующие решения:

  • Изменение конфигурации аллокации.

  • Перераспределение задач между очередями.

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

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