Menerapkan teknik pruning model

Model AI yang Dapat Diskalakan dengan PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Kapan menggunakan pruning?

$$

  • 📱 Berguna saat menerapkan model ke perangkat edge atau embedded

$$

  • ➕ Dapat digabung dengan kuantisasi untuk efisiensi ganda

$$

  • ⚡ Gunakan saat prioritasnya menurunkan latensi atau ukuran model
Model AI yang Dapat Diskalakan dengan PyTorch Lightning

Apa itu pruning model?

$$

  • Menghapus koneksi kurang penting pada jaringan saraf
  • Menghasilkan model jarang yang efisien untuk penyimpanan dan komputasi
  • Pendekatan umum: L1 unstructured pruning

contoh pruning

Model AI yang Dapat Diskalakan dengan PyTorch Lightning

Apa itu pruning model?

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)
Model AI yang Dapat Diskalakan dengan PyTorch Lightning

Memahami mask pruning

$$

  • Pruning menambahkan mask biner ke setiap tensor bobot yang ditargetkan.

$$

  • Mask = 1 --> bobot dipertahankan.
  • Mask = 0 --> bobot diatur ke 0 saat forward.

$$

  • Bobot tetap disimpan di memori hingga mask dihapus.
Model AI yang Dapat Diskalakan dengan PyTorch Lightning

Membuat pruning permanen

  • Secara default, bobot yang di-prune tetap ada di tensor asli
  • Untuk memfinalkan pruning, hapus reparametrisasi
  • Mengubah layer jarang menjadi layer standar dengan bobot bernilai nol
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
Model AI yang Dapat Diskalakan dengan PyTorch Lightning

Mengevaluasi dampak pruning

  • Bandingkan kinerja model asli vs. yang di-prune
  • Harapkan akurasi sedikit turun tetapi ukuran/memori jauh lebih kecil
  • Membantu menilai apakah trade-off layak untuk deployment

kompromi model pruning

Model AI yang Dapat Diskalakan dengan PyTorch Lightning

Ayo berlatih!

Model AI yang Dapat Diskalakan dengan PyTorch Lightning

Preparing Video For Download...