Сколько FLOPS нужно для генерации одной секунды видео в реальном времени? Можно ли достичь этого на одном GPU? А на телефоне? В этой статье я разбираю задачу realtime видеогенерации «от первых принципов» — начинаю с конкретной архитектуры (Wan2.1-14B), считаю FLOPS по каждому слою, калибрую по реальным замерам и последовательно применяю оптимизации: от FlashAttention и step distillation до квантизации и новых GPU. Спойлер: на серверах realtime уже почти здесь, а вот с мобилками всё сложнее.

Глава 1: Baseline — считаем от Wan2.1-14B

Для расчётов нам нужна конкретная архитектура, которую можно разложить на числа. Берём Wan2.1-14B — одну из лучших open-source моделей для генерации видео (Technical Report).

Настоящий realtime на практике почти наверняка будет авторегрессивным — модель генерирует кадр за кадром с фиксированным контекстным окном, а не весь клип целиком. Именно поэтому мы делаем все расчёты в стандартной постановке (5с, 81 кадр, 720p) — это соответствует размеру одного контекстного окна, которое и будет единицей compute в реальной системе. Для ознакомления с работами рекомендую почитать Helios, LongLive, Self-Forcing.

Как устроена модель

Генерация видео в Wan2.1 — это три этапа:

Wan2.1 Architecture
Wan2.1 Architecture

Этап 1: Text Encoder. Текстовый промпт кодируется через UMT5 (5.3B параметров) в 512 текстовых токенов. Это делается один раз и кэшируется.

Этап 2: DiT (Diffusion Transformer). Основной вычислительный блок. 14 миллиардов параметров. Берёт шум в latent space и за 50 steps превращает его в сжатое представление видео. Каждый шаг — полный forward pass через все 40 transformer layers.

Этап 3: VAE Decode. Wan-VAE (127M параметров) декодирует latent представление обратно в пиксели. Вычислительно дёшево по сравнению с DiT.

DiT в числах

Параметр

Значение

Число параметров

14B

Transformer layers

40

Hidden dimension (d)

5120

Attention heads

40 (head dim = 128)

Feedforward dimension (d_ff)

13,824

Сколько токенов обрабатывает DiT?

DiT работает не с пикселями, а с latent tokens — сжатым представлением видео. Считаем:

Формула: tokens = (1 + T/4) × (H/16) × (W/16)

720p (1280×720), 5 сек, 16 fps = 81 кадр:

Temporal: 1 + 80/4 = 21 latent кадров
Spatial:  (720/16) × (1280/16) = 45 × 80 = 3,600 latent пикселей на кадр
Tokens = 21 × 3,600 = 75,600

75 тысяч токенов — вот с чем работает DiT на каждом из 50 шагов деноизинга.

FLOPS на один шаг

Каждый из 40 layers DiT состоит из трёх блоков. Считаем FLOPS для каждого (S = 75,600, d = 5120):

Self-Attention:

  • QKV проекции: 8 × S × d² = 8 × 75,600 × 5120²15.9 TFLOP

  • Attention (scores): 4 × S² × d = 4 × 75,600² × 5120117.1 TFLOP

  • Итого: ≈ 133 TFLOP

Cross-Attention (текст → видео):8.4 TFLOP per layer

FFN (feedforward): 4 × S × d × d_ff = 4 × 75,600 × 5120 × 13,82421.4 TFLOP

Итого на один layer:

133 + 8.4 + 21.4 = ~163 TFLOP

40 layers, один step:

40 × 163 = ~6,500 TFLOP = 6.5 PFLOP
Compute per DiT Layer
Compute per DiT Layer

Self-Attention = 82% всех вычислений. Обратите внимание на 4 × S² × d — квадратичная зависимость от числа токенов. Удвоение разрешения → учетверение attention compute.

Калибровка по реальности

Теоретические FLOPS — это хорошо, но давайте сверимся с реальными замерами.

Wan2.1-14B на 1×H100:

  • 720p, 5 сек, 50 steps: 242 секунды

  • На 8×H100 (FSDP + Ulysses): 7.7 секунд

Из реальных замеров: 1 секунда видео 720p ≈ 48 секунд на H100 (242 сек / 5 сек). Это наша калиброванная точка отсчёта — все дальнейшие расчёты масштабируем от неё.

Где мы сейчас

Цель: 720p@16fps, streaming realtime — генерировать 1 секунду видео за ≤1 секунду.
Реальность: 1 секунда видео 720p = 242/5 ≈ 48 секунд на H100.

Глава 2: Базовые ускорения — что можно сделать прямо сейчас

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

FlashAttention + torch.compile

FlashAttention не уменьшает FLOPS — он уменьшает обращения к памяти. Вместо материализации матрицы attention (75K × 75K ≈ 5.7 миллиардов элементов), считает блоками, не записывая промежуточные результаты в HBM.

torch.compile добавляет kernel fusion — объединяет операции в один GPU kernel.

Эффект: MFU с ~30% → ~50-60%. Speedup: ~1.5-2×.

Step Distillation: 50 → 4 шага

Каждый step — полный forward pass через 14B модель. Consistency distillation обучает модель делать то же за меньше шагов:

  • 50 → 8 steps: качество почти не падает

  • 50 → 4 steps: минимальная деградация

  • 50 → 1 step: заметная потеря, но usable для preview

Эффект: 50/4 = 12.5×. Консервативно: ~10×.

CFG distillation

CFG делает два forward pass на каждый step (с промптом и без). Guidance distillation учит модель генерировать "guided" за один проход.

Эффект: ~2× speedup.

Sparse Attention

Не все пары токенов одинаково важны. VSA (Variable Sparse Attention) и Block Sparse пропускают ненужные пары. TurboDiffusion комбинирует sparse attention со step distillation и показывает 100-200× суммарный speedup.

Консервативная оценка sparse attention отдельно: ~3-6×.

Суммарный эффект

Суммарный эффект оптимизаций
Суммарный эффект оптимизаций

Baseline (1 сек видео 720p): 48 сек на 1×H100

Оптимизация

Множитель

Результат

Flash + compile

×1.7

28 сек

Step distillation

×10

2.8 сек

CFG removal

×2

1.4 сек

Sparse attention

×4

0.35 сек ✅

Результат: 720p realtime на одном H100 достижим с aggressive optimization (4 steps, sparse, no CFG).

Реалистичный сценарий (8 steps, moderate sparse, partial CFG):

×1.7 × 6 × 1.5 × 3 = ×46
48 / 46 ≈ 1.0 сек — на границе realtime

Глава 3: Квантизация — меньше бит, больше скорость

Современные GPU имеют физически разные Tensor Cores для разных числовых форматов. FP8 Tensor Cores выдают ровно 2× throughput по сравнению с FP16.

Compute: меньше бит → больше операций в секунду.

GPU

FP16

FP8

FP4

H100

989 TFLOP/s

1,979 TFLOP/s (×2)

B200

2,250

4,500

9,000 (×4)

Пересчёт с FP8:

Сценарий

FP16

FP8

Aggressive opt

0.35 сек

0.18 сек

Moderate opt

1.0 сек

0.5 сек

Глава 4: Новое поколение карточек

Граница: H100 и B200 — реальность, можно купить/арендовать сегодня. B300 объявлен, поставки H2 2025. Всё дальше — экстраполяция на основе NVIDIA roadmap и исторических трендов.

GPU Roadmap

NVIDIA анонсировала roadmap на GTC 2025: Blackwell Ultra (B300), Rubin (2026), Rubin Ultra (2027), Feynman (2028).

Исторический тренд: ~2× achievable FLOPS каждые ~18 месяцев. Memory bandwidth растёт медленнее (~1.5× за поколение), но новые форматы (HBM4, HBM4E) компенсируют.

GPU Roadmap
GPU Roadmap

Экстраполяция по тренду ~2× за 18 мес

Пересчёт для новых GPU

Пересчёт для новых GPU
Пересчёт для новых GPU

Вывод главы 4: 720p realtime уже достигнут на 1×H100 с оптимизациями. 1080p realtime — 8×H100 уже сейчас или 1×Rubin в 2026. Дальше — запас.

Глава 5: Мои предположения о будущих улучшениях

По моей интуиции, сейчас основной bottleneck видеогенерации — не эффективное представление данных. Видео из 81 кадра ≠ 81 изображению по объему информации, и даже темпоральное сжатие не сильно помогает, так как, к примеру, использование видеокодеков позволяет сжимать видео намного сильнее. Поэтому мне интересно следить за подходами, которые используют более эффективное представление видео, например CoPE-VideoLM.

Хочется сделать предположение, что для видеогенерации будет использоваться более сжатое представление, и как ориентир взять Wan2.2 VAE:

  • Wan2.1 VAE: compression 8×8 spatial → 75,600 tokens для 720p

  • Wan2.2 VAE: compression 16×16 spatial:

    • Tokens в (16/8)² = 4× меньше → ~18,900 tokens

    • Attention compute: 4² = 16× меньше (квадратичная зависимость!)

    • Weighted average (attention ~82%): ~13.6× суммарное ускорение

С patchification 2×2: total compression 32×32×4 → ещё 4× меньше.

Mobile vs Server: Current Inference Gap
Ускорение VAE эквивалентно двум поколениям GPU

Использование более эффективного VAE сравнимо с двумя поколениями GPU — это уже 2-4 года.

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

Пока писался этот пост, вышла realtime видеогенерация в 1080p на базе LTX2.3. А у LTX сжатие 32× пространственное и 8× темпоральное.

Глава 6: А давайте всё на мобилку засунем

Серверные GPU — хорошо, но телефон в кармане — другая история. Хочется взять телефон и, например, сделать свой персональный Subway Surfer симулятор, чтобы мотивировать себя заниматься бегом. Давайте глянем, насколько мы далеко от реальности. За основу возьмём архитектуру 1.3B, т.к. на мобильных устройствах железо слабее.

Baseline

Параметр

Значение

Модель

1.3B, INT8 = 1.4 GB

Разрешение

480p

FPS на H100 FP8

24.8

Compute H100

3,958 TFLOPS (FP8)

Текущие мобильные NPU

Чип

TOPS (FP8)

Qualcomm X2 Elite

80

Snapdragon 8 Elite

45

Apple A18 Pro

35

Разница серверным GPU и мобильным NPU в производительности
Разница серверным GPU и мобильным NPU в производительности

Разница колоссальная — текущие вычислительные мощности не позволяют даже близко делать realtime на мобильном устройстве. При этом мы даже не учли, что стек для мобильных устройств менее развит, и реальная скорость будет ещё медленнее.

Прогноз TOPS по годам

Исторический тренд: ~2× каждые 2 года.

Когда будет реалтайм видеогенерация на мобилке?
Когда будет реалтайм видеогенерация на мобилке?

Год

TOPS

2025

45-80 (реальность)

2027

~150 (Intel Nova Lake анонс + тренд)

2029

~250 (экстраполяция ×2 от 2027)

2030

~400

2031

~600

2033

~1,500

Вывод: мобильный realtime с текущим AR-подходом — это долгая история.

  • 480p@1FPS: ~2027.

  • 480p@12FPS: ~2031-2033.

  • 720p realtime на мобилке — не раньше 2033-2035.

Но: это без учёта будущих архитектурных прорывов (smaller models, better compression, hardware-aware architectures). Каждое 10× improvement в model efficiency сдвигает timeline на ~3 года влево.

Выводы

Глядя на вычисления, качественная реалтайм-генерация на серверах — вопрос ближайших 2 лет. Отсюда можно дальше прогнозировать, когда появятся реалтайм-игры — я бы поиграл в бесконечный Euro Truck Simulator или Subnautica. Надеюсь, это будет к 2030 году.

Для меня оказалось неожиданным, насколько мы далеки от realtime-генерации на мобильных устройствах — 2030-е года не выглядят как «AGI завтра». Возможно мы получим её за счёт качественного сдвига в инференсе: специальные чипы, более оптимизированные архитектуры, где будут решены две проблемы — attention и более эффективное представление видео. Тут прогнозирую ближе к 2030 году.

Добавлю, что расчёты для архитектуры Wan не слишком реалистичны, потому что бо́льшие архитектуры показывают качественный рост в консистентности, prompt following и эстетике. Чтобы учесть этот фактор и посмотреть, когда будет realtime на 30B, 200B архитектурах — или попытаться использовать свою интуицию для оценки — переходите на интерактивное демо.


Подписывайтесь: Telegram @awesome_dl | Twitter @anvilapex