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
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 weightsEksempel 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
3Kilder
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)