Pruningtechnieken toepassen

Schaalbare AI-modellen met PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Wanneer pruning gebruiken?

$$

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

$$

  • ➕ Combineerbaar met kwantisatie voor extra efficiëntie

$$

  • ⚡ Gebruik als latentie of modelgrootte omlaag moet
Schaalbare AI-modellen met PyTorch Lightning

Wat is modelpruning?

$$

  • Verwijdert minder belangrijke verbindingen in neurale netwerken
  • Levert sparse modellen op die efficiënt zijn in opslag en compute
  • Een gangbare aanpak is L1 ongestructureerde pruning

pruning example

Schaalbare AI-modellen met PyTorch Lightning

Wat is modelpruning?

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]]) # Voor pruning


tensor([[ 0.25, -0.13,  0.00,  0.70],
        [ 0.00,  0.31,  0.00,  0.44]]) # Na pruning (40% gewichten op 0)
Schaalbare AI-modellen met PyTorch Lightning

Pruning-masks begrijpen

$$

  • Pruning voegt een binaire mask toe aan elke getargete gewichtstensor.

$$

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

$$

  • Gewichten blijven in geheugen tot het mask is verwijderd.
Schaalbare AI-modellen met PyTorch Lightning

Pruning permanent maken

  • Standaard blijven geprunede gewichten in de originele tensor
  • Maak pruning definitief door herparametrisaties te verwijderen
  • Zet een sparse laag om naar een standaardlaag met null-gewichten
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

Impact van pruning evalueren

  • Vergelijk performance van origineel en gepruned model
  • Verwacht lichte accuraatheidsdaling maar grote winst in grootte/geheugen
  • Helpt inschatten 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...