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

Масштабирование инференса


Эта статья описывает принципы масштабирования инференса в зависимости от типа нагрузки и выбранной конфигурации. Использование механизмов масштабирования позволяет оптимизировать производительность и расход ресурсов.

Масштабирование инференса зависит от трех основных подходов:

  • Масштабирование по экземплярам и RPS — механизм масштабирования, при котором количество экземпляров контейнера автоматически регулируется в зависимости от текущей нагрузки.

  • Масштабирование по длине очереди — применяется в сценариях с асинхронной обработкой задач, например, при использовании Comfy UI. В этом случае количество контейнеров определяется объемом накопленных задач в очереди.

  • Масштабирование по cron-расписанию — применяется в сценариях с предсказуемой нагрузкой, когда количество экземпляров автоматически изменяется в соответствии с заданным расписанием.

Масштабирование по экземплярам и RPS

Масштабирование задается при создании инференса и зависит параметров:

  • минимальное и максимальное количество экземпляров контейнера;

  • время жизни при отсутствии нагрузки;

  • тип масштабирования;

  • количество запросов в секунду (порог масштабирования).

Работа и тарификация инференса отличается в зависимости от этих параметров.

../_images/s__scaling.webp

Количество экземпляров больше нуля

Когда минимальное количество экземпляров больше нуля, указанное число экземпляров модели постоянно работает. Эти экземпляры предварительно загружены в память и готовы к обработке запросов.

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

В качестве примера рассмотрим конфигурацию с min_replicas = 1 и порогом масштабирования 200 RPS (количество запросов в секунду). В этом случае один экземпляр модели всегда активен и потребляет ресурсы. Когда нагрузка превышает 200 RPS, система автоматически создает второй экземпляр для распределения запросов.

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

Количество экземпляров равно нулю

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

При поступлении новых запросов экземпляр модели создается из кеша и отвечает на запрос, происходит старт модели. В течение времени, когда нет запущенных экземпляров, инференс не тарифицируется.

Масштабирование по длине очереди

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

Все входящие задачи накапливаются в очереди. Каждый контейнер берет задачи из очереди по мере освобождения. При превышении установленного порога создается новый контейнер.

Количество контейнеров расчитывается по формуле:

Количество контейнеров = ceil(всего задач / длина очереди на контейнер)

При длине очереди, равной 10, и наличии 27 задач в очереди система автоматически создаст 3 контейнера:

  • 1 — задачи 1 – 10.

  • 2 — задачи 11 – 20.

  • 3 — задачи 21 – 27.

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

Масштабирование по cron-расписанию

Cron-расписание — автоматически запускает и останавливает экземпляры в соответствии с заданными правилами, освобождая ресурсы в периоды низкой активности и обеспечивая необходимую вычислительную мощность в периоды высокой нагрузки. В отличие от стандартного масштабирования, cron-расписание дает возможность заранее определить количество экземпляров на разные периоды.

При настройке расписания используются интервалы и правила. Интервал — это период времени, в течение которого применяются правила масштабирования. Один интервал может содержать несколько cron-правил. Если для интервала не задано cron-правило, используется масштабирование по экземплярам.

Сron-правила имеют приоритет над масштабированием по экземплярам. При этом максимальное количество экземпляров в cron-правиле не может превышать значение, установленное в общих настройках масштабирования.

Если периоды действия cron-правил пересекаются, применяется правило с более поздней датой начала. Например:

  • Правило 1: действует с 10.05 по 20.05.

  • Правило 2: действует с 15.05 без конечной даты.

В период с 15.05 применяется правило 2, так как его дата начала позже.

Структура cron-расписания

Расписание состоит из пяти полей, определяющих временные правила выполнения * * * * *.

Каждое поле соответствует единице измерения времени в следующем порядке:

  1. Минуты (0–59)

  2. Часы (0–23)

  3. День месяца (1–31)

  4. Месяц (1–12)

  5. День недели (0–7, где 0 и 7 – воскресенье)

Пример использования

Рассмотрим пример, когда инференс активно используется в рабочее время — с 9:00 до 18:00 по будним дням, а в выходные дни нагрузка минимальна.

Настройки интервала будут выглядеть таким образом:

  • 1 правило:

    • Минимальное количество экземпляров: 1

    • Максимальное количество экземпляров: 3

    • Правило: 0 9-18 * * 1-5

  • 2 правило:

    • Минимальное количество экземпляров: 0

    • Максимальное количество экземпляров: 1

    • Правило: 0 * * * 0,6

../_images/s__scaling-cron.webp

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