alterna ai
ALTERNA AI / ГЛАВА 17 · 04

17.4 Несколько запросов используют общую вычислительную работу

На предыдущей странице: как выбирается один вариант.

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

Первый запуск обрабатывает префикс. Каждый последующий добавляет одну позицию; K/V прошлых позиций можно сохранять. Выборка и сжатое хранение решают разные задачи.

Состав batch может меняться между decode ticks

При static batching все requests стартуют вместе, а короткие могут ждать длинный. Continuous batching удаляет завершённые sequences и добавляет новые, чтобы каждый iteration обслуживал актуальный набор. Scheduler должен учитывать доступную KV-memory, token budget, priority и fairness, а не только максимальный batch size. F09.

В упрощённом fixture три requests имеют остатки [2,1,3]. За tick каждый active request производит один token, поэтому active counts [3,2,1], всего шесть token-slots. Реальный iteration time не обязан быть постоянным:

Wtokens=∑tBt,throughput=completed output tokenswall time.W_{tokens}=\sum_t B_t, \qquad throughput=\frac{\text{completed output tokens}}{\text{wall time}}.

Что показывает модель. Timeline различает waiting, prefill, decode и completed. Хороший throughput может сосуществовать с плохой latency отдельного request, поэтому dashboard показывает queue time, TTFT и inter-token latency отдельно. Admission control должен отклонить или отложить request до allocation, а не падать посреди generation без явной ошибки.

Граница применимости. Учебный tick не моделирует разную prompt length, speculative decoding, preemption, prefix caching или hardware occupancy. Aggressive batching способен увеличить latency. Приоритеты без aging создают starvation; fairness policy должна быть наблюдаемой и тестируемой.

remaining_17d=[2,1,3]; active_counts_17d=[]
while any(remaining_17d):
    active_counts_17d.append(sum(value>0 for value in remaining_17d))
    remaining_17d=[max(0,value-1) for value in remaining_17d]
assert active_counts_17d==[3,2,1] and sum(active_counts_17d)==6

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Scheduler совместно использует slots, не переобучая модель.

Приближённое хранение весов. Как этот вопрос продолжает полученный результат?

Python-примеры главы 17 Академическая база →