Модель на PyTorch в 170 раз медленнее на T4 vs A100 — норма или баг?
Разработчик столкнулся с экстремальным падением производительности: модель трекинга точек на A100 обрабатывает видео за 0.5 секунды, на T4 — за 85 секунд (в 170 раз медленнее). GPU загружен на 99%, модель точно на GPU, обе карты проверены на разных машинах. Архитектура использует 4D корреляционные объёмы и трансформеры на чистом FP32.
Показывает, что при выборе железа для inference нельзя смотреть только на TFLOPS — для некоторых архитектур (особенно с большими промежуточными тензорами) пропускная способность памяти важнее. Это критично для оценки бюджета облачных вычислений.
Когда разница в железе не объясняет разницу в скорости
Разработчик на Reddit столкнулся с необъяснимым провалом производительности при переносе модели трекинга точек с NVIDIA A100 на T4. Задача простая: обработать видео на 47 кадров разрешением 256×256. На A100 — полсекунды, на T4 — 85 секунд. Разница в 170 раз.
Что уже проверили
- GPU загружен на 99% (мониторинг через nvidia-smi)
- Модель точно работает на GPU, не на CPU
- Включение
torch.backends.cudnn.benchmarkне помогло - Проблема воспроизводится на двух независимых T4-машинах
Модель использует архитектуру с 4D корреляционными объёмами (плотное сопоставление между кадрами) и трансформерными слоями для временного контекста. Всё работает на чистом FP32, без квантизации.
Где искать проблему
T4 действительно слабее A100 — но не в 170 раз. A100 имеет ~19.5 TFLOPS FP32, T4 — ~8.1 TFLOPS. Теоретическая разница примерно в 2.4 раза, а не в сотни.
Возможные узкие места:
- Пропускная способность памяти: 4D-объёмы создают огромное давление на память. У A100 — 1.5 TB/s, у T4 — всего 300 GB/s (разница в 5 раз).
- Размер тензоров: если промежуточные корреляционные объёмы не помещаются в кэш L2, T4 будет постоянно обращаться к медленной VRAM.
- Специализированные операции: трансформеры на A100 могут использовать Tensor Cores, даже на FP32 (через автоматическое приведение к TF32).
Редактор поста просит сообщество о помощи: какие инструменты профилирования попробовать первыми? Что может дать такую экстремальную разницу в скорости?
Ключевые выводы
- Разница в производительности GPU не всегда линейна по TFLOPS — архитектурные особенности (память, кэш, Tensor Cores) могут дать разрыв в десятки раз
- 4D корреляционные объёмы создают огромную нагрузку на память, а не только на вычисления — пропускная способность VRAM становится критичной
- T4 проигрывает A100 в 5 раз по пропускной способности памяти (300 vs 1500 GB/s) — именно это может быть узким местом для memory-bound задач
- Даже при 99% загрузке GPU реальным ограничителем может быть не вычислительная мощность, а скорость доступа к данным
Автор: Юлия Тарасова · Источник: reddit.com
**Это отличный кейс для тех, кто планирует деплой на «экономных» GPU.** T4 — популярный выбор для inference в облаке (дешевле A100 в разы), но тут вылезает неочевидная проблема: архитектура с 4D-корреляциями жрёт не столько вычисления, сколько **память**. A100 даёт 1.5 TB/s, T4 — жалкие 300 GB/s. Если твои тензоры постоянно гоняют данные туда-сюда, разница будет не в 2-3 раза (как по TFLOPS), а в разы больше.
Второй момент: **FP32 на A100 автоматом использует TF32** (урезанный формат с той же точностью мантиссы, но меньшим диапазоном) для матричных операций — это даёт ускорение на трансформерах. На T4 такого нет. Короче, если собираешься экономить на железе, сначала профилируй — иначе «дешёвая» карта может обойтись дороже в расчёте на throughput.
Комментарии