Senior
27
Что такое pruning в LLM и какие подходы (magnitude, structured, SparseGPT)?
Компании, где спрашивали
1221 Systems
Ответ от нейросети
sobes.tech AI
Pruning (обрезка) в больших языковых моделях (LLM) — это метод уменьшения размера модели и ускорения инференса за счёт удаления менее важных параметров (весов).
Основные подходы:
-
Magnitude pruning (обрезка по величине):
- Удаляются веса с наименьшими абсолютными значениями, так как они считаются наименее значимыми.
- Простой и широко используемый метод.
-
Structured pruning (структурированная обрезка):
- Удаляются целые структуры, например, нейроны, фильтры, слои или блоки.
- Позволяет получить более эффективные модели для аппаратного ускорения, так как уменьшает размерность тензоров.
-
SparseGPT:
- Специфический метод для GPT-подобных моделей.
- Использует алгоритмы жадного отбора для сохранения важнейших весов с учётом структуры модели.
- Позволяет добиться высокой степени разреженности без значительной потери качества.
Зачем pruning?
- Уменьшение объёма модели и памяти.
- Ускорение инференса и снижение энергопотребления.
- Возможность запуска моделей на менее мощном оборудовании.
Пример magnitude pruning на PyTorch:
import torch
def magnitude_prune(model, pruning_ratio=0.2):
all_weights = torch.cat([param.view(-1).abs() for param in model.parameters()])
threshold = torch.quantile(all_weights, pruning_ratio)
with torch.no_grad():
for param in model.parameters():
mask = param.abs() >= threshold
param.mul_(mask)
Pruning требует аккуратного подхода, часто с последующей дообучением (fine-tuning) для восстановления качества.