Сжатие весов в 2 раза: когда прунинг окупается на своём железе

Прунинг больших открытых моделей обычно игнорируют на практике, потому что GPU не любят спарсённые матрицы: ускорения нет, а управление памятью усложняется. На CPU ситуация иная: специализированные библиотеки типа OpenVINO и ONNX Runtime хорошо оптимизированы для спарсённого вычисления и дают ускорение в 2–3 раза при сохранении точности 95–98 процентов.

Структурированный прунинг работает лучше, чем неструктурированный: удаляются целые блоки весов (head, нейроны слоя), а не отдельные значения. Это совместимо с обычным железом и не требует спецтвёрдвара для спарсированного матмула.

Когда это имеет смысл

На дешёвых GPU (GTX 1650, RTX 3050) или старых CPU экономия памяти помогает запустить модель, которая иначе не влезла бы в видеопамять. Пример: Llama 2 7B в половине весов занимает 3.5 ГБ вместо 7 ГБ, что откроет запуск на мобильных фреймворках и edge-устройствах.

На серверах прунинг имеет смысл только при CPU-инференсе или когда железо совсем старое и медленное. Если есть современный GPU, то потеря от неполного использования матриц больше, чем выигрыш от сжатия.

Хорошая практика — измерить скорость на своём железе перед и после прунинга: экономия памяти не гарантирует ускорение инференса, потому что это зависит от архитектуры CPU и оптимизаций в runtime.