Tìm hiểu cách cắt tỉa giúp tối ưu hóa mạng nơ-ron như thế nào. 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 Trí tuệ nhân tạo biên (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 các cành cây chết hoặc mọc quá mức để giúp cây phát triển tốt, các thuật toán cắt tỉa xác định và loại bỏ weights and biases dư thừa đó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 được nén, "thưa thớt" mà vẫ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 cần thiết để cải thiện độ trễ suy luận , cho phép các kiến trúc tiên tiến hoạt động hiệu quả trên phần cứng hạn chế tài nguyên như điện thoại di động và thiết bị nhúng.
Các mô hình học sâu hiện đại thường bị thừa tham số, 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 nhiệm vụ cụ thể. Kỹ thuật cắt tỉa (pruning) 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 đầ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 (fine-tuning ), trong đó 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 có liên quan chặt chẽ đến Giả thuyết Vé số (Lottery Ticket Hypothesis ), cho 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 loại chiến lược cắt tỉa chính:
Việc cắt tỉa cây là không thể thiếu để cho phép AI biên hoạt động trong nhiều ngành công nghiệp khác nhau, nơi tài nguyên phần cứng bị hạn chế:
Mặc dù các mô hình tiên tiến như YOLO26 được thiết kế để đạt hiệu quả cao, các nhà phát triển vẫn có thể áp dụng kỹ thuật 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 kỹ thuật 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}%")
Để tối ưu hóa mô hình một cách hiệu quả cho việc triển khai , cần phân biệt giữa việc cắt tỉa và các chiến lược khác:
Để 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 được tối ưu hóa, người dùng có thể tận dụng Nền tảng Ultralytics . Điều này đơn giản hóa quy trình làm việc từ quản lý tập dữ liệu đến xuất mô hình ở các định dạng thân thiện với phần cứng như ONNX hoặc TensorRT .