Implementando técnicas de poda de modelos

Modelos de IA escaláveis com PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Quando usar poda?

$$

  • 📱 Útil ao colocar modelos em edge ou sistemas embarcados

$$

  • ➕ Pode combinar com quantização para ganhos maiores

$$

  • ⚡ Use quando reduzir latência ou tamanho do modelo é prioridade
Modelos de IA escaláveis com PyTorch Lightning

O que é poda de modelo?

$$

  • Remove conexões menos importantes nas redes neurais
  • Gera modelos esparsos, eficientes de armazenar e computar
  • Uma abordagem comum é a poda L1 não estruturada

exemplo de poda

Modelos de IA escaláveis com PyTorch Lightning

O que é poda de modelo?

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]]) # Antes da poda


tensor([[ 0.25, -0.13,  0.00,  0.70],
        [ 0.00,  0.31,  0.00,  0.44]]) # Depois da poda (40% dos pesos zerados)
Modelos de IA escaláveis com PyTorch Lightning

Entendendo máscaras de poda

$$

  • A poda adiciona uma máscara binária a cada tensor de pesos alvo.

$$

  • Máscara = 1 --> peso mantido.
  • Máscara = 0 --> peso vira 0 no forward.

$$

  • Os pesos ainda ficam na memória até remover a máscara.
Modelos de IA escaláveis com PyTorch Lightning

Tornando a poda permanente

  • Por padrão, pesos podados continuam no tensor original
  • Para finalizar a poda, remove as reparametrizações
  • Converte a camada esparsa em camada padrão com pesos zerados
Sequential(
  (fc): Linear(
    in_features=128, out_features=64,
    bias=True
    (weight): PrunedParam()
  )
) # Antes de 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)
) # Depois de prune.remove
Modelos de IA escaláveis com PyTorch Lightning

Avaliando o impacto da poda

  • Compare o desempenho do modelo original vs. podado
  • Espere leve queda na acurácia, mas grande economia de tamanho/memória
  • Ajuda a avaliar se o trade-off vale para produção

trade-off de poda de modelo

Modelos de IA escaláveis com PyTorch Lightning

Vamos praticar!

Modelos de IA escaláveis com PyTorch Lightning

Preparing Video For Download...