TGViewer
Data Science | Machinelearning [ru] Data Science | Machinelearning [ru] @devsp · 19.8K subscribers
Post #5711 1.29K
⁣Эффективное управление memory footprint в serving через on-the-fly разреженное квантование attention-карт в трансформерах

В production часто упираешься в memory footprint при работе с трансформерами — BERT, GPT, T5. Основной пожиратель памяти — attention-карты после softmax, особенно на длинных последовательностях. Стандартные решения (pruning, сжатие) требуют предобучения. Но есть метод, работающий на лету прямо в serving: разреженное квантование attention-карт. Главная ошибка — думать, что для экономии памяти нужен дорогой ретренинг.

Идея и экономия памяти

После softmax attention-карты содержат множество значений, близких к нулю. Можно отбросить все ниже порога (sparse), а оставшиеся квантовать в int8. Это выполняется on-the-fly, без переобучения. Типичная карта [batch=1, heads=16, seq_len=2048] в float32 весит 256 MB на запрос. После отбрасывания 90% значений и квантования в int8 получаем около 6.4 MB. Нагрузка на GPU падает, latency почти не растет при корректной реализации.

Пример production-ready кода

Реализуйте разреженное квантование как часть пайплайна:

def sparse_quant_attention(Q, K, V, threshold=0.01):
attn = torch.matmul(Q, K.transpose(-2, -1))
mask = attn > threshold
attn_sparse = attn * mask
scale = 127.0 / (attn_sparse.max() - attn_sparse.min() + 1e-8)
attn_quant = (attn_sparse * scale).to(torch.int8)
attn_deq = attn_quant.float() / scale
return torch.matmul(attn_deq, V)


Ключевой момент: для реального выигрыша sparse-умножение должно использовать torch.sparse или custom CUDA kernels. Без этого операции на dense матрицах сведут экономию к нулю.

Когда это оправдано и типичная ошибка

Метод подходит для low-latency serving — поиск, классификация с малым числом классов, где допустимо небольшое падение точности. Типичная ошибка: считать, что порог sparse универсален. Он чувствителен к домену данных и длине последовательности. Начинайте с 0.001-0.01, тестируйте на своих данных. Также не комбинируйте с тяжелыми техниками квантования без оценки — это может усугубить потери точности.

Практический совет и trade-off

Метод не заменяет fine-tuning, но дает быстрый memory-буст, когда нет времени на ретренинг. Комбинируйте его со сжатием KV-cache (аналогичная идея: sparse + int8) для максимального эффекта. Trade-off: точность vs. память и latency. Для 2048 токенов при пороге 0.01 падение метрик (например, BLEU или F1) обычно менее 1%, если данные не содержат очень редких паттернов. Проверяйте на валидации: если loss растет больше 1%, снижайте порог или откатывайте квантование отдельных heads.

Вывод: On-the-fly разреженное квантование attention-карт — дешевый инженерный трюк для serving, который дает порядковое сокращение памяти без ретренинга, но требует кастомных sparse-операций и эмпирической настройки порога под конкретную задачу.
  • ❤ 1
More from @devsp
  1. Sep 26, 2026Тем, кто только лезет в ML Начинаешь щупать машинное обучение и хочешь нормально въехать в…
  2. Sep 26, 2026NVIDIA тоже подтянулась к тренду: LeetCode-собесы — на выход И весь замес — вокруг трёх те…
  3. Sep 26, 2026От готовых реплик до памяти о контексте: как AI-чаты дошли до нынешнего уровня В первой ча…
  4. Sep 26, 2026Post #5961
  5. Sep 25, 2026[Перевод] Jev за 25 строк на Python Про Jev галдят все, кому не лень. Jev там, Jev сям. Тв…
  6. Sep 25, 2026Что под капотом у рекомендаций Авито на главной Они решают две задачи: 1️⃣ Показывают поль…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →