การใช้เทคนิค Model Pruning

AI Models แบบ Scalable ด้วย PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

ควรใช้ pruning เมื่อใด?

$$

  • 📱 เหมาะสำหรับการ deploy โมเดลบน edge หรือ embedded systems

$$

  • ➕ ใช้ร่วมกับ quantization เพื่อเพิ่มประสิทธิภาพสูงสุด

$$

  • ⚡ ใช้เมื่อต้องการลด latency หรือขนาดโมเดล
AI Models แบบ Scalable ด้วย PyTorch Lightning

Model Pruning คืออะไร?

$$

  • ตัด connection ที่ไม่สำคัญออกจากโครงข่ายประสาทเทียม
  • ได้โมเดลแบบ sparse ที่จัดเก็บและคำนวณได้อย่างมีประสิทธิภาพ
  • วิธีที่นิยมใช้คือ L1 unstructured pruning

ตัวอย่าง pruning

AI Models แบบ Scalable ด้วย PyTorch Lightning

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]]) # 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)
AI Models แบบ Scalable ด้วย PyTorch Lightning

ทำความเข้าใจ pruning masks

$$

  • Pruning จะเพิ่ม binary mask ให้กับ weight tensor ที่กำหนดไว้

$$

  • Mask = 1 --> เก็บ weight ไว้
  • Mask = 0 --> ตั้งค่า weight เป็น 0 ในขั้นตอน forward

$$

  • Weight ยังคงอยู่ในหน่วยความจำจนกว่าจะนำ mask ออก
AI Models แบบ Scalable ด้วย PyTorch Lightning

ทำให้ pruning มีผลถาวร

  • โดยค่าเริ่มต้น weight ที่ถูก prune จะยังอยู่ใน tensor เดิม
  • ในการ finalize pruning ให้นำ reparametrization ออก
  • แปลง sparse layer ให้เป็น layer มาตรฐานที่มี weight เป็น 0
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
AI Models แบบ Scalable ด้วย PyTorch Lightning

ประเมินผลกระทบของ pruning

  • เปรียบเทียบประสิทธิภาพของโมเดลก่อนและหลัง pruning
  • ความแม่นยำอาจลดลงเล็กน้อย แต่ขนาดและหน่วยความจำลดลงมาก
  • ช่วยประเมินว่า trade-off นี้เหมาะสมสำหรับการ deploy หรือไม่

pruning_model_tradeoff.png

AI Models แบบ Scalable ด้วย PyTorch Lightning

มาฝึกกันเถอะ!

AI Models แบบ Scalable ด้วย PyTorch Lightning

Preparing Video For Download...