Quay lại trang chủ8/10 trong danh mục
Model Pruning
Pruning - Cắt tỉa mô hình
Nâng caotraining-optimization
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: