Triển khai kỹ thuật cắt bớt mô hình

Mô hình AI có khả năng mở rộng với PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Khi nào nên cắt bớt?

$$

  • 📱 Hữu ích khi triển khai lên thiết bị biên hoặc hệ nhúng

$$

  • ➕ Có thể kết hợp với lượng tử hóa để tăng hiệu quả tổng hợp

$$

  • ⚡ Dùng khi ưu tiên giảm độ trễ hoặc kích thước mô hình
Mô hình AI có khả năng mở rộng với PyTorch Lightning

Cắt bớt mô hình là gì?

$$

  • Loại bỏ các kết nối kém quan trọng trong mạng nơ-ron
  • Tạo mô hình thưa, lưu trữ và tính toán hiệu quả
  • Cách phổ biến là cắt L1 không cấu trúc

ví dụ cắt bớt

Mô hình AI có khả năng mở rộng với PyTorch Lightning

Cắt bớt mô hình là gì?

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]]) # Trước khi cắt


tensor([[ 0.25, -0.13,  0.00,  0.70],
        [ 0.00,  0.31,  0.00,  0.44]]) # Sau khi cắt (40% trọng số đặt về 0)
Mô hình AI có khả năng mở rộng với PyTorch Lightning

Hiểu mặt nạ cắt bớt

$$

  • Cắt bớt thêm mặt nạ nhị phân vào mỗi tensor trọng số mục tiêu.

$$

  • Mask = 1 --> giữ trọng số.
  • Mask = 0 --> đặt trọng số = 0 khi forward.

$$

  • Trọng số vẫn chiếm bộ nhớ cho đến khi gỡ mặt nạ.
Mô hình AI có khả năng mở rộng với PyTorch Lightning

Làm cho cắt bớt trở nên vĩnh viễn

  • Mặc định, trọng số đã cắt vẫn thuộc tensor gốc
  • Để cố định cắt bớt, hãy gỡ tái tham số hóa
  • Chuyển lớp thưa thành lớp chuẩn với trọng số bằng 0
Sequential(
  (fc): Linear(
    in_features=128, out_features=64,
    bias=True
    (weight): PrunedParam()
  )
) # Trước 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)
) # Sau prune.remove
Mô hình AI có khả năng mở rộng với PyTorch Lightning

Đánh giá tác động của cắt bớt

  • So sánh hiệu năng mô hình gốc và mô hình đã cắt
  • Kỳ vọng độ chính xác giảm nhẹ nhưng tiết kiệm lớn về kích thước/bộ nhớ
  • Giúp đánh giá đánh đổi có chấp nhận được khi triển khai không

biểu đồ đánh đổi mô hình sau cắt bớt

Mô hình AI có khả năng mở rộng với PyTorch Lightning

Ayo berlatih!

Mô hình AI có khả năng mở rộng với PyTorch Lightning

Preparing Video For Download...