Model Pruning
Tìm hiểu cách model pruning giảm kích thước và độ phức tạp của mạng thần kinh cho Edge AI. Khám phá các chiến lược tối ưu hóa Ultralytics YOLO26 để suy luận nhanh hơn trên thiết bị di động.
Model pruning là một kỹ thuật trong machine learning được sử dụng để giảm kích thước và độ phức tạp tính toán của một neural network bằng cách loại bỏ có hệ thống các tham số không cần thiết. Giống như một người làm vườn cắt tỉa các cành khô hoặc mọc rậm rạp để khuyến khích cây phát triển mạnh, các lập trình viên cắt tỉa các mạng nhân tạo để làm cho chúng nhanh hơn, nhỏ gọn hơn và tiết kiệm năng lượng hơn. Quá trình này rất cần thiết để triển khai các kiến trúc deep learning hiện đại trên các thiết bị có tài nguyên hạn chế, chẳng hạn như điện thoại thông minh, cảm biến nhúng và phần cứng edge computing.
Cắt tỉa mô hình hoạt động như thế nào#
Ý tưởng cốt lõi đằng sau việc pruning là các deep neural network thường "quá tham số hóa" (over-parameterized), nghĩa là chúng chứa số lượng weights and biases lớn hơn đáng kể so với mức thực sự cần thiết để giải quyết một bài toán cụ thể. Trong quá trình training, model học một số lượng lớn các kết nối, nhưng không phải tất cả đều đóng góp như nhau vào kết quả cuối cùng. Các thuật toán pruning phân tích model đã được train để xác định các kết nối dư thừa hoặc ít thông tin này—thường là những kết nối có trọng số gần bằng không—và loại bỏ chúng.
Vòng đời của một mô hình được cắt tỉa thường tuân theo các bước sau:
-
Huấn luyện: Một mô hình lớn được huấn luyện đến khi hội tụ để nắm bắt các đặc trưng phức tạp.
-
Cắt tỉa: Các tham số có tầm quan trọng thấp được đặt về 0 hoặc loại bỏ hoàn toàn khỏi cấu trúc mạng.
-
Fine-Tuning: Model trải qua vòng fine-tuning thứ hai để cho phép các tham số còn lại điều chỉnh và khôi phục bất kỳ accuracy nào bị mất trong giai đoạn pruning.
Phương pháp này thường được liên kết với Lottery Ticket Hypothesis, cho thấy rằng các mạng dày đặc chứa các tiểu mạng nhỏ hơn, cô lập (các vé trúng thưởng) có thể đạt được độ chính xác tương đương với model gốc nếu được train độc lập.
Các loại chiến lược cắt tỉa#
Các phương pháp cắt tỉa thường được phân loại dựa trên cấu trúc của các thành phần bị loại bỏ.
- Unstructured Pruning: Tiếp cận này loại bỏ từng trọng số riêng lẻ ở bất kỳ đâu trong model dựa trên một ngưỡng (ví dụ: độ lớn). Mặc dù cách này làm giảm hiệu quả số lượng tham số, nhưng nó tạo ra các sparse matrices có thể khó xử lý hiệu quả đối với phần cứng tiêu chuẩn. Nếu không có phần mềm chuyên dụng hoặc các bộ tăng tốc phần cứng, unstructured pruning có thể không mang lại sự cải thiện tốc độ đáng kể.
- Structured Pruning: Phương pháp này loại bỏ toàn bộ các cấu trúc hình học, chẳng hạn như các kênh (channels), bộ lọc (filters), hoặc các lớp trong một convolutional neural network (CNN). Bằng cách bảo tồn cấu trúc ma trận dày đặc, model sau khi prune vẫn tương thích với phần cứng GPU và CPU tiêu chuẩn, dẫn đến những cải thiện trực tiếp về inference latency và thông lượng.
Các ứng dụng trong thực tế#
Pruning là yếu tố hỗ trợ quan trọng cho Edge AI, cho phép các model phức tạp chạy trong các môi trường mà kết nối đám mây không khả dụng hoặc quá chậm.
- Mobile Object Detection: Các ứng dụng trên thiết bị di động, chẳng hạn như dịch ngôn ngữ thời gian thực hoặc thực tế tăng cường, tận dụng các model đã prune để duy trì thời lượng pin và giảm memory usage. Các kiến trúc được tối ưu hóa như YOLO26 thường được ưu tiên làm nền tảng cho các tác vụ này nhờ tính hiệu quả vốn có của chúng.
- Automotive Safety: Xe tự lái và autonomous vehicles đòi hỏi khả năng ra quyết định trong tích tắc. Các model đã prune cho phép máy tính trên xe xử lý các luồng camera độ phân giải cao để phát hiện người đi bộ mà không gặp độ trễ do việc truyền dữ liệu đến máy chủ.
- IoT công nghiệp: Trong sản xuất, các hệ thống kiểm tra trực quan trên dây chuyền lắp ráp sử dụng các mô hình nhẹ để phát hiện lỗi. Việc cắt tỉa đảm bảo các hệ thống này có thể chạy trên các bộ vi điều khiển tiết kiệm chi phí thay vì các tủ máy chủ đắt tiền.
So sánh cắt tỉa và các kỹ thuật tối ưu hóa liên quan#
Mặc dù model pruning là một công cụ mạnh mẽ, nó thường bị nhầm lẫn với hoặc được sử dụng cùng với các kỹ thuật model optimization khác.
- Pruning vs. Quantization: Pruning làm giảm số lượng tham số (các kết nối) trong model. Ngược lại, model quantization làm giảm độ chính xác (precision) của các tham số đó, ví dụ, bằng cách chuyển đổi các số dấu phẩy động 32-bit thành số nguyên 8-bit. Cả hai thường được kết hợp để tối đa hóa hiệu quả cho việc model deployment.
- Pruning vs. Knowledge Distillation: Pruning sửa đổi model gốc bằng cách cắt bỏ các phần. Knowledge distillation liên quan đến việc training một model "học sinh" mới hoàn toàn, nhỏ hơn để bắt chước hành vi của một model "giáo viên" lớn hơn.
Ví dụ về triển khai#
Ví dụ bằng Python sau đây minh họa cách áp dụng unstructured pruning cho một lớp tích chập (convolutional layer) bằng cách sử dụng PyTorch. Đây là một bước phổ biến trước khi xuất model sang các định dạng được tối ưu hóa như ONNX.
import torch
import torch.nn as nn
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
module = nn.Conv2d(in_channels=1, out_channels=20, kernel_size=3)
# Apply unstructured pruning to remove 30% of the connections
# This sets the weights with the lowest L1-norm to zero
prune.l1_unstructured(module, name="weight", amount=0.3)
# Calculate and print the sparsity (percentage of zero elements)
sparsity = 100.0 * float(torch.sum(module.weight == 0)) / module.weight.nelement()
print(f"Layer Sparsity: {sparsity:.2f}%")Đối với những người dùng muốn quản lý toàn bộ vòng đời của tập dữ liệu và model của họ—bao gồm training, đánh giá và deployment—Ultralytics Platform cung cấp một giao diện được tối ưu hóa. Nền tảng này đơn giản hóa quá trình tạo ra các model có độ tối ưu hóa cao như YOLO26 và xuất chúng sang các định dạng thân thiện với phần cứng như TensorRT hoặc CoreML.






