Implementace technik prořezávání modelu

Škálovatelné modely AI s PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Kdy použít prořezávání?

$$

  • 📱 Vhodné při nasazování modelů na okrajová nebo vestavěná zařízení

$$

  • ➕ Lze kombinovat s kvantizací pro kumulativní úspory

$$

  • ⚡ Použijte, pokud je prioritou snížení latence nebo velikosti modelu
Škálovatelné modely AI s PyTorch Lightning

Co je prořezávání modelu?

$$

  • Odstraňuje méně důležitá spojení v neuronových sítích
  • Vytváří řídké modely efektivní z hlediska úložiště i výpočtů
  • Běžným přístupem je nestrukturované prořezávání L1

Příklad prořezávání

Škálovatelné modely AI s PyTorch Lightning

Co je prořezávání modelu?

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)
Škálovatelné modely AI s PyTorch Lightning

Masky prořezávání

$$

  • Prořezávání přidá ke každému cílovému tenzoru vah binární masku.

$$

  • Maska = 1 --> váha je zachována.
  • Maska = 0 --> váha je při dopředném průchodu nastavena na 0.

$$

  • Váhy jsou stále uloženy v paměti, dokud není maska odstraněna.
Škálovatelné modely AI s PyTorch Lightning

Trvalé prořezávání

  • Prořezané váhy zůstávají ve výchozím nastavení součástí původního tenzoru
  • Pro dokončení prořezávání odstraňte reparametrizace
  • Převede řídkou vrstvu na standardní vrstvu s nulovými váhami
Sequential(
  (fc): Linear(
    in_features=128, out_features=64,
    bias=True
    (weight): PrunedParam()
  )
) # Before 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)
) # After prune.remove
Škálovatelné modely AI s PyTorch Lightning

Vyhodnocení dopadu prořezávání

  • Porovnejte výkon původního a prořezaného modelu
  • Očekávejte mírný pokles přesnosti, ale výrazné úspory paměti
  • Pomáhá posoudit, zda je kompromis přijatelný pro nasazení

Graf kompromisů prořezávání modelu

Škálovatelné modely AI s PyTorch Lightning

Pojďme procvičovat!

Škálovatelné modely AI s PyTorch Lightning

Preparing Video For Download...