Pruning
Tìm hiểu cách cắt tỉa (pruning) tối ưu hóa các mạng thần kinh như Ultralytics YOLO26 bằng cách loại bỏ các tham số dư thừa. Khám phá các phương pháp có cấu trúc và không có cấu trúc cho Edge AI.
Cắt tỉa là một kỹ thuật tối ưu hóa mô hình chiến lược được sử dụng để giảm kích thước và độ phức tạp tính toán của mạng nơ-ron bằng cách loại bỏ các tham số không cần thiết. Giống như người làm vườn cắt tỉa những cành cây chết hoặc mọc quá dày để giúp cây phát triển tốt hơn, các thuật toán cắt tỉa xác định và loại bỏ các weights and biases dư thừa vốn đóng góp rất ít vào khả năng dự đoán của mô hình. Mục tiêu chính là tạo ra một mô hình "thưa" (sparse) đã được nén, duy trì độ chính xác cao trong khi tiêu thụ ít bộ nhớ và năng lượng hơn đáng kể. Việc giảm thiểu này rất quan trọng để cải thiện độ trễ suy luận, cho phép các kiến trúc tiên tiến chạy hiệu quả trên phần cứng bị hạn chế tài nguyên như điện thoại di động và các thiết bị nhúng.
Link to this sectionCơ chế và Phương pháp luận#
Các mô hình deep learning hiện đại thường bị quá tham số hóa, nghĩa là chúng chứa nhiều kết nối hơn mức cần thiết để giải quyết một tác vụ cụ thể. Cắt tỉa khai thác điều này bằng cách loại bỏ các kết nối có giá trị gần bằng 0, với giả định rằng chúng có tác động không đáng kể đến kết quả đầu ra. Sau khi các tham số được loại bỏ, mô hình thường trải qua quá trình tinh chỉnh, nơi nó được huấn luyện lại trong thời gian ngắn để điều chỉnh các trọng số còn lại và khôi phục hiệu suất bị mất. Khái niệm này liên quan chặt chẽ đến Giả thuyết Tấm vé Số (Lottery Ticket Hypothesis), cho thấy rằng các mạng lớn chứa các mạng con nhỏ hơn, hiệu quả cao có khả năng đạt được độ chính xác tương tự.
Có hai danh mục chiến lược cắt tỉa chính:
- Cắt tỉa không cấu trúc (Unstructured Pruning): Phương pháp này loại bỏ các trọng số riêng lẻ dựa trên độ lớn của chúng, bất kể vị trí của chúng. Mặc dù nó làm giảm hiệu quả tổng số lượng tham số, nhưng nó tạo ra các ma trận thưa không đều mà các CPU và GPU tiêu chuẩn có thể gặp khó khăn khi xử lý hiệu quả nếu không có phần mềm chuyên dụng.
- Cắt tỉa có cấu trúc (Structured Pruning): Cách tiếp cận này loại bỏ toàn bộ các cấu trúc hình học, chẳng hạn như nơ-ron, kênh hoặc lớp trong một mạng nơ-ron tích chập (CNN). Bằng cách duy trì cấu trúc ma trận, cắt tỉa có cấu trúc tương thích cao với các bộ tăng tốc phần cứng tiêu chuẩn, thường mang lại tốc độ xử lý nhanh hơn ngay lập tức cho suy luận thời gian thực.
Link to this sectionCác ứng dụng trong thực tế#
Cắt tỉa là không thể thiếu để kích hoạt Edge AI trong các ngành công nghiệp khác nhau, nơi tài nguyên phần cứng bị hạn chế:
-
Máy bay không người lái tự hành: Các phương tiện bay không người lái được sử dụng cho mục đích tìm kiếm và cứu nạn dựa vào computer vision để điều hướng trong các môi trường phức tạp. Các mô hình object detection đã qua cắt tỉa cho phép các thiết bị này xử lý luồng video cục bộ trong thời gian thực, tránh được các vấn đề về độ trễ liên quan đến giao tiếp đám mây.
-
Chăm sóc sức khỏe di động: Các thiết bị y tế cầm tay để phân tích siêu âm sử dụng các mô hình đã qua cắt tỉa để phát hiện bất thường trực tiếp trên thiết bị. Điều này đảm bảo quyền riêng tư dữ liệu của bệnh nhân và cho phép chẩn đoán tinh vi ở các khu vực xa xôi không có internet.
Link to this sectionVí dụ về triển khai#
Mặc dù các mô hình tiên tiến như YOLO26 được thiết kế để tối ưu hiệu suất, các nhà phát triển vẫn có thể áp dụng cắt tỉa để tối ưu hóa thêm các lớp bằng cách sử dụng các thư viện như PyTorch. Ví dụ sau đây minh họa cách áp dụng cắt tỉa không cấu trúc cho một lớp tích chập.
import torch
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)
# Apply L1 unstructured pruning to remove 30% of weights with the lowest magnitude
prune.l1_unstructured(layer, name="weight", amount=0.3)
# Verify sparsity (percentage of zero parameters)
sparsity = 100.0 * float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Sparsity achieved: {sparsity:.2f}%")Link to this sectionSo sánh cắt tỉa và các kỹ thuật tối ưu hóa liên quan#
Để tối ưu hóa hiệu quả một mô hình cho việc triển khai, việc phân biệt cắt tỉa với các chiến lược khác là rất hữu ích:
- Lượng tử hóa mô hình (Model Quantization): Không giống như cắt tỉa, vốn loại bỏ các kết nối, lượng tử hóa làm giảm độ chính xác của các trọng số (ví dụ: chuyển đổi các số dấu phẩy động 32-bit thành số nguyên 8-bit). Cả hai kỹ thuật có thể được sử dụng cùng nhau để tối đa hóa hiệu quả trên các hệ thống nhúng.
- Chưng cất tri thức (Knowledge Distillation): Phương pháp này bao gồm việc huấn luyện một mô hình "học sinh" nhỏ hơn để bắt chước hành vi của một mô hình "giáo viên" lớn hơn. Cắt tỉa sửa đổi trực tiếp mô hình gốc, trong khi chưng cất huấn luyện một kiến trúc mới, nhỏ gọn hơn.
Để quản lý vòng đời toàn diện, bao gồm huấn luyện, chú thích và triển khai các mô hình đã tối ưu hóa, người dùng có thể tận dụng Ultralytics Platform. Nền tảng này đơn giản hóa quy trình từ quản lý tập dữ liệu đến xuất mô hình sang các định dạng thân thiện với phần cứng như ONNX hoặc TensorRT.






