<НА ГЛАВНУЮ

Amin: как оптимистичный планировщик ускоряет LLM в 5 раз

'Amin — адаптивный оптимистичный планировщик, который использует нижние оценки длины вывода и упорядоченную эвикцию, чтобы значительно снизить задержки инференса и приблизиться к ретроспективному оптимуму.'

Скрытый узкий горлышко в инференсе LLM

Инференс больших языковых моделей делится на быстрый prefill для входа и постепенную autoregressive генерацию токенов. Длина входа известна заранее, но длина вывода — нет: это может быть одно слово или длинное сочинение. Эта неопределенность тормозит работу на GPU с ограниченной KV-кеш-памятью. Чтобы избежать переполнений, планировщики часто резервируют память под наихудший сценарий, что приводит к низкой загрузке и высоким задержкам.

Почему пессимизм вреден

Консервативные алгоритмы вроде Amax предполагают, что каждое задание развернется до предсказанного верхнего предела. Это предотвращает сбои, но ухудшает эффективность: в кеше хранится меньше запросов, параллелизм падает, задержка растет. На реальных наборах (например, LMSYS-Chat-1M) Amax показывает резкое ухудшение при росте неопределенности, иногда давая задержки в 5 раз выше оптимума. При миллиардах запросов это означает заметные лишние затраты на вычисления и энергию.

Amin: оптимизм с адаптацией

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

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

  • Динамическое уточнение: по мере генерации токенов Amin обновляет псевдонижнюю границу для каждого задания. Если уже сгенерировано 100 токенов, нижняя граница становится как минимум 100, что улучшает последующую упаковку.
  • Упорядоченная эвикция: при нехватке памяти Amin сортирует активные задания по текущим псевдонижним границам и выпихивает в первую очередь те, что меньше продвинулись, случайно решая равенства. Это защищает задания, близкие к завершению, и снижает потерю работы из-за рестартов.

Amin специально игнорирует верхние оценки, так как их трудно предсказывать надежно, в то время как нижние границы проще получить. Алгоритм работает за O(M log M) на шаг, где M — размер KV-кеша.

Теоретические гарантии и эмпирика

Amin подкреплен математическими доказательствами и экспериментами. Авторы анализируют конкурентное отношение Amin по сравнению с планировщиком с ретроспективным знанием длин вывода. Amin достигает O(log(alpha^-1)) конкурентного отношения, где alpha — отношение нижней к верхней границе, характеризующее неопределенность. В то время как консервативные алгоритмы могут иметь бесконтрольно растущие потери при увеличении неопределенности, Amin остается логарифмическим в худшем случае.

Для практичных распределений получаются небольшие коэффициенты:

  • Двухточечные распределения: отношение не более 1.5.
  • Геометрические распределения: не более 1.7.
  • Линейно-взвешенные геометрические: около 1.56.

На численных тестах с выборками из LMSYS-Chat-1M Amin часто близок к теоретическому оптимуму. При грубых предсказаниях Amin сравнялся с ретроспективным оптимумом, тогда как Amax отстал примерно в 2 раза. При шумных предсказаниях Amin давал до 5x меньшую задержку по сравнению с Amax.

Что это даёт на практике

Amin позволяет добиться значимого прироста производительности без изменения модели или аппаратуры. За счёт опоры на простые нижние оценки и адаптивного управления очередью он выжимает почти оптимальную производительность из несовершенных предсказаний. Для команд, запускающих LLM-инференс в промышленных масштабах, переход на планировщик по типу Amin может снизить задержки, повысить пропускную способность и сократить расходы на вычисления.

Практические замечания

  • Amin требует нижней оценки длины вывода для каждого запроса, что получить проще, чем точный верхний предел.
  • Политика эвикции сохраняет прогресс, минимизируя потери сгенерированных токенов.
  • Сложность O(M log M) приемлема для типичных размеров KV-кеша.

Если вы разворачиваете LLM в продакшене, стоит прочитать статью и посмотреть псевдокод — это может дать быстрый путь к заметному ускорению ваших inference-пайплайнов.

🇬🇧

Switch Language

Read this article in English

Switch to English