model pruning

En teknik, hvor overflødige parametre i en neural netværk fjernes for at reducere modelstørrelse og beregningsomkostninger.

Kort fortalt

Ved at skære unødvendige vægte væk bliver modellen mindre og hurtigere, uden at det går voldsomt ud over præcisionen.

Kategori
teknik
Niveau
øvet
Udtale
/ˈmɒdəl ˈpruːnɪŋ/

Betydninger

1
  1. 1

    Fjernelse af parametre (vægte eller neuroner) fra en trænet model for at opnå kompression og acceleration med minimal præcisionstab.

    • Efter pruning blev modellen 90% mindre, men præcisionen faldt kun med 1%.
    • Struktureret pruning fjerner hele filtre eller kanaler, hvilket gør det lettere at accelerere på hardware.

Hvornår bruges det

Anvendes typisk efter træning for at gøre en stor model deployerbar på enheder med begrænsede ressourcer som mobiltelefoner eller IoT-enheder. Kan kombineres med kvantisering og destillation.

Kodeeksempel

import torch

def prune_weights(model, threshold=0.01):
    for name, param in model.named_parameters():
        if 'weight' in name:
            mask = torch.abs(param.data) > threshold
            param.data.mul_(mask)  # zero out small weights

Eksempel på simpel magnitude-baseret pruning i PyTorch: vægte under tærsklen sættes til nul.

Oprindelse

Fra engelsk 'pruning' (beskæring), inspireret af havebeskæring, hvor overflødige grene fjernes.

Afledte ord

3

Kilder

2
  • Learning both Weights and Connections for Efficient Neural Networks (Han et al., 2015)
  • The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks (Frankle & Carbin, 2019)