Quay lại trang chủ8/10 trong danh mục
training-optimization
Model Pruning
Pruning - Cắt tỉa mô hình
1Dự đoán1/8
Nghiên cứu cho thấy có thể xoá đến 90% trọng số của một mạng nơ-ron. Kết quả sẽ ra sao?
2Khám phá2/8
Hình minh họa
Cắt tỉa mạng nơ-ron tương tác
Kéo ngưỡng lên để cắt tỉa nhiều hơn. Quan sát kết nối nào biến mất.
6/12
Kết nối còn lại
50%
Đã cắt tỉa
85%
Chất lượng ước tính
Thử nghiệm
Kéo ngưỡng lên 0.5. chất lượng vẫn ~85% dù đã cắt gần nửa kết nối! Các trọng số lớn (đường đậm) mang phần lớn thông tin.
3Khoảnh khắc aha3/8
Mạng nơ-ron giống khu rừng um tùm: phần lớn cành lá nhỏ không đóng góp gì cho tán cây. Pruning phát hiện rằng chỉ một tập con nhỏ trọng số thực sự quan trọng (Lottery Ticket Hypothesis). cắt bỏ phần còn lại không chỉ giảm kích thước mà còn có thể cải thiện tổng quát hoá vì giảm overfitting.
4Thử thách4/8
Bạn pruning 80% trọng số (unstructured). Mô hình nhỏ hơn 80% trên đĩa nhưng tốc độ inference KHÔNG nhanh hơn. Tại sao?
5Lý thuyết5/8
Giải thích
Pruning loại bỏ các thành phần ít quan trọng trong mô hình. Tiêu chí cơ bản: trọng số có giá trị tuyệt đối nhỏ thì ít quan trọng.
Hai loại pruning chính:
- Unstructured Pruning: Xoá từng trọng số riêng lẻ. Tỷ lệ cắt tỉa cao (90%+) nhưng tạo ma trận thưa. cần phần cứng chuyên biệt.
- Structured Pruning: Xoá toàn bộ neuron, filter CNN, hoặc attention head. Giảm kích thước thật sự trên phần cứng tiêu chuẩn.
pruning_example.py
import torch.nn.utils.prune as prune
# Unstructured pruning. xoá 50% trọng số nhỏ nhất
prune.l1_unstructured(model.layer1, name="weight", amount=0.5)
# Structured pruning. xoá 30% filter kém quan trọng nhất
prune.ln_structured(model.conv1, name="weight", amount=0.3, n=2, dim=0)
# Quy trình: Train → Prune → Fine-tune → (Lặp lại)
for round in range(3):
train(model, epochs=5) # Fine-tune phục hồi
prune.l1_unstructured(model, amount=0.3) # Cắt thêmPruning + Quantization = Combo mạnh
Kết hợp pruning (giảm số tham số) và quantization (giảm bit/tham số) có thể giảm mô hình 10-40x. Ví dụ: pruning 75% + quantize INT4 = giảm 16x so với gốc FP32. Bạn cũng có thể kết hợp với distillation để phục hồi chất lượng.
6Tóm tắt6/8
Những điều cần nhớ về Pruning
- Pruning loại bỏ trọng số/neuron ít quan trọng. có thể cắt 90% mà chỉ mất <2% chất lượng.
- Unstructured: cắt từng trọng số (tỷ lệ cao, cần phần cứng thưa). Structured: cắt toàn bộ neuron/head (tăng tốc thật sự trên GPU tiêu chuẩn).
- Quy trình: Huấn luyện → Cắt tỉa → Fine-tune lại → Lặp. Iterative pruning cho kết quả tốt nhất.
- Lottery Ticket Hypothesis: mạng lớn chứa mạng con nhỏ đạt hiệu suất tương đương. pruning tìm ra mạng con đó.
7Kiểm tra7/8
Kiểm tra hiểu biết
Câu 1/4
Phân biệt unstructured vs structured pruning: