alterna ai
ALTERNA AI / ГЛАВА 10 · 06

10.6 Вычисления и переносы ограничивают скорость

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

Иногда не хватает арифметической мощности, иногда — скорости памяти. Оценка этих границ и оценка вместимости отвечают на разные вопросы.

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

Верхняя граница throughput, нижняя оценка времени

ПустьF — FLOPs задачи,Q —байты трафика,B —bandwidth вбайтах/с,P_peak —FLOP/s. Arithmetic intensity I=F/Q. Упрощённая roofline-модель:

P≤min⁡(Ppeak,BI),T≥max⁡(F/Ppeak,Q/B).P\le\min(P_{peak},BI),\qquad T\ge\max(F/P_{peak},Q/B).

Это оптимистичная оценка при выбранных допущениях, не benchmark. Для F=2e9,Q=1e9,B=100e9,P_peak=10e12получаем I=2, memory limit200GFLOP/s и T≥.01с. Compute lower time=.0002с, меньше memory time. Presets в лаборатории условные, а не результаты обнаруженного оборудования.

Weights Pпараметров поb_wбайт занимаютPb_wбез metadata. KV-cache дляdecoder в выбранной модели:

MKV=2LBSHKVdhbKV.M_{KV}=2LBSH_{KV}d_hb_{KV}.

Двойка означаетKиV,Lслоёв,Bbatch,Sтокенов,H_KVчислоKVheads,d_hразмерhead. При32,1,2048,8,128и2байтахполучаем268435456байт=256MiB. Нельзя всегда подставлять числоqueryheads: вGQAоно другое.

В training-оценке этой лаборатории добавляются FP32 gradients, дваFP32Adam moments иFP32master weights; KV-cache не используется. Activations/workspace задаются отдельным бюджетом, а не вычисляются точно по миллиардам параметров. Фрагментация, runtimecontext иquantization metadata не включены. Поэтому «сумма меньше VRAM» означает только прохождение этой оценки, не гарантию запуска.

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

kv=2*32*1*2048*8*128*2
assert kv==268435456 and kv/2**20==256

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

В калькулятор входят только подписанные компоненты, а не весь runtime.

Как теми же локальными суммами обрабатывать изображение или сигнал?

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