Sobes.tech
Senior
27

Что такое pruning в LLM и какие подходы (magnitude, structured, SparseGPT)?

Компании, где спрашивали
1221 Systems

Ответ от нейросети

sobes.tech AI

Pruning (обрезка) в больших языковых моделях (LLM) — это метод уменьшения размера модели и ускорения инференса за счёт удаления менее важных параметров (весов).

Основные подходы:

  1. Magnitude pruning (обрезка по величине):

    • Удаляются веса с наименьшими абсолютными значениями, так как они считаются наименее значимыми.
    • Простой и широко используемый метод.
  2. Structured pruning (структурированная обрезка):

    • Удаляются целые структуры, например, нейроны, фильтры, слои или блоки.
    • Позволяет получить более эффективные модели для аппаратного ускорения, так как уменьшает размерность тензоров.
  3. 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) для восстановления качества.