Pruningtechnieken voor modellen implementeren

Schaalbare AI-modellen met PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Wanneer gebruik je pruning?

$$

  • 📱 Handig bij deployment naar edge- of embedded-systemen

$$

  • ➕ Combineer met quantization voor extra efficiëntiewinst

$$

  • ⚡ Gebruik als latentie of modelgrootte prioriteit heeft
Schaalbare AI-modellen met PyTorch Lightning

Wat is model pruning?

$$

  • Verwijdert minder belangrijke verbindingen in neurale netwerken
  • Leidt tot sparse modellen die efficiënt zijn in opslag en berekening
  • Een veelgebruikte aanpak is L1 ongestructureerde pruning

pruningvoorbeeld

Schaalbare AI-modellen met PyTorch Lightning

Wat is model pruning?

import torch.nn.utils.prune as prune

prune.l1_unstructured(model.fc, name="weight",
                      amount=0.4)

print(model.fc.weight.data)
tensor([[ 0.25, -0.13,  0.05,  0.70],
        [-0.88,  0.31, -0.02,  0.44]]) # Before pruning


tensor([[ 0.25, -0.13,  0.00,  0.70],
        [ 0.00,  0.31,  0.00,  0.44]]) # After pruning (40% weights set to 0)
Schaalbare AI-modellen met PyTorch Lightning

Pruning-masks begrijpen

$$

  • Pruning voegt een binaire mask toe aan elke geselecteerde weight-tensor.

$$

  • Mask = 1 --> weight blijft.
  • Mask = 0 --> weight op 0 gezet tijdens forward.

$$

  • Weights blijven in geheugen tot je het mask verwijdert.
Schaalbare AI-modellen met PyTorch Lightning

Pruning permanent maken

  • Standaard blijven geprunede weights deel van de originele tensor
  • Maak pruning definitief door reparametrisaties te verwijderen
  • Zet de sparse laag om naar een standaardlaag met gewichten op nul
Sequential(
  (fc): Linear(
    in_features=128, out_features=64,
    bias=True
    (weight): PrunedParam()
  )
) # Voor prune.remove
import torch.nn.utils.prune as prune

prune.remove(model.fc, 'weight')

# Print model structure
print(model)

Sequential(
  (fc): Linear(in_features=128,
               out_features=64,
               bias=True)
) # Na prune.remove
Schaalbare AI-modellen met PyTorch Lightning

Effect van pruning beoordelen

  • Vergelijk prestaties van het originele en geprunede model
  • Reken op kleine accuraatheidsdalingen maar grote besparingen in grootte/geheugen
  • Helpt bepalen of de trade-off acceptabel is voor deployment

pruning_model_tradeoff.png

Schaalbare AI-modellen met PyTorch Lightning

Laten we oefenen!

Schaalbare AI-modellen met PyTorch Lightning

Preparing Video For Download...