Pruning-Techniken implementieren

Skalierbare KI-Modelle mit PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Wann Pruning einsetzen?

$$

  • 📱 Nützlich für Deployment auf Edge- oder Embedded-Systemen

$$

  • ➕ Mit Quantisierung kombinierbar für zusätzliche Effizienzgewinne

$$

  • ⚡ Verwenden, wenn Latenz- oder Modellgröße Priorität hat
Skalierbare KI-Modelle mit PyTorch Lightning

Was ist Model Pruning?

$$

  • Entfernt weniger wichtige Verbindungen in neuronalen Netzen
  • Führt zu spärlichen Modellen, die Speicher und Rechenzeit sparen
  • Üblich: L1 unstrukturiertes Pruning

Pruning-Beispiel

Skalierbare KI-Modelle mit PyTorch Lightning

Was ist 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]]) # Vor Pruning


tensor([[ 0.25, -0.13,  0.00,  0.70],
        [ 0.00,  0.31,  0.00,  0.44]]) # Nach Pruning (40% Gewichte auf 0 gesetzt)
Skalierbare KI-Modelle mit PyTorch Lightning

Pruning-Masken verstehen

$$

  • Pruning fügt jedem Ziel-Gewichtstensor eine binäre Maske hinzu.

$$

  • Maske = 1 --> Gewicht bleibt.
  • Maske = 0 --> Gewicht im Forward-Pass auf 0 gesetzt.

$$

  • Gewichte bleiben im Speicher, bis die Maske entfernt wird.
Skalierbare KI-Modelle mit PyTorch Lightning

Pruning dauerhaft machen

  • Standardmäßig bleiben geprunte Gewichte Teil des ursprünglichen Tensors
  • Um Pruning zu finalisieren, Reparametrisierungen entfernen
  • Wandelt die spärliche Schicht in eine Standardschicht mit auf 0 gesetzten Gewichten um
Sequential(
  (fc): Linear(
    in_features=128, out_features=64,
    bias=True
    (weight): PrunedParam()
  )
) # Vor 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)
) # Nach prune.remove
Skalierbare KI-Modelle mit PyTorch Lightning

Pruning-Auswirkung bewerten

  • Vergleiche Leistung von Original- und Pruning-Modell
  • Leichte Genauigkeitseinbußen, aber große Speicher-/Größenvorteile erwarten
  • Hilft zu entscheiden, ob der Trade-off für Deployment passt

Trade-off beim Pruning

Skalierbare KI-Modelle mit PyTorch Lightning

Lass uns üben!

Skalierbare KI-Modelle mit PyTorch Lightning

Preparing Video For Download...