structured pruning

Struktureret beskæring er en modelkompressionsteknik, der fjerner hele strukturer (kanaler, filtre, lag) fra et neuralt netværk.

Kort fortalt

Struktureret beskæring gør neuronet lettere ved at fjerne hele grupper af vægte på én gang.

Kategori
teknik
Niveau
øvet

Betydninger

1
  1. 1

    En teknik til komprimering af neurale netværk, hvor man fjerner hele grupper af parametre (f.eks. filtre, kanaler eller lag) i stedet for enkelte vægte.

    • Struktureret beskæring af filtre i et convolutional neuralt netværk kan reducere antallet af FLOPs betydeligt uden stort præcisionstab.
    • Ved at anvende struktureret beskæring på transformer-modeller kan man fjerne hele opmærksomhedshoveder, hvilket gør modellen mere effektiv.

Hvornår bruges det

Struktureret beskæring anvendes typisk efter træning for at reducere modelstørrelse og accelerere inferens, især til implementering på mobile eller edge-enheder. Den adskiller sig fra ustruktureret beskæring, der fjerner individuelle vægte, ved at bevare tætte matrixoperationer, hvilket gør det lettere at opnå hastighedsforbedringer på standard hardware.

Kodeeksempel

import torch
import torch.nn.utils.prune as prune

model = torch.nn.Conv2d(3, 64, 3)
# Structured pruning: prune 50% of channels
prune.ln_structured(model, name='weight', amount=0.5, n=2, dim=0)
print(model.weight.shape)  # channels reduced

Eksempel på struktureret beskæring af kanaler i et convolutional lag ved hjælp af PyTorchs indbyggede funktion.

Oprindelse

Udtrykket 'pruning' (beskæring) kommer fra træplantning og beskriver fjernelse af uønskede grene. 'Struktureret' henviser til, at beskæringen sker på niveau med hele strukturer som filtre eller kanaler.

Afledte ord

2

Kilder

2
  • Pruning Filters for Efficient ConvNets
  • Rethinking the Value of Network Pruning