Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

Tỉa thưa (Pruning)

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ơ chế và phương pháp luận

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:

  • Cắt tỉa không cấu trúc : 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í. Mặc dù nó làm giảm hiệu quả tổng số tham số, nhưng nó tạo ra các ma trận thưa không đều mà các CPUGPU tiêu chuẩn có thể gặp khó khăn trong việc 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 : Phương pháp này loại bỏ toàn bộ cấu trúc hình học, chẳng hạn như các nơron, kênh hoặc lớp bên trong mạng nơron tích chập (CNN) . Bằng cách bảo toàn cấu trúc ma trận, cắt tỉa có cấu trúc có khả năng 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 độ tăng tức thì cho suy luận thời gian thực .

Các Ứng dụng Thực tế

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ế:

  1. 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 hoạt động tìm kiếm và cứu hộ dựa vào thị giác máy tính để điều hướng trong môi trường phức tạp. Các mô hình phát hiện đối tượng được tinh chỉnh cho phép các thiết bị này xử lý nguồn cấp dữ liệu 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.
  2. 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 được tinh chỉnh để detect Các bất thường được phát hiện trực tiếp trên thiết bị. Điều này đảm bảo quyền riêng tư dữ liệu bệnh nhân và cho phép chẩn đoán phức tạp ở những vùng xa xôi không có kết nối internet.

Ví dụ triển khai

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}%")

Cắt tỉa cành so với các kỹ thuật tối ưu hóa liên quan

Để 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:

  • Lượng tử hóa mô hình : Không giống như việc cắt tỉa (pruning) loại bỏ các kết nối, lượng tử hóa làm giảm độ chính xác của trọng số (ví dụ: chuyển đổi số thực 32 bit thành số nguyên 8 bit). Cả hai kỹ thuật này 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 : Quá trình này bao gồm việc huấn luyện một mô hình "học trò" 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. Việc 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 đượ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 .

Tham gia Ultralytics cộng đồng

Tham gia vào tương lai của AI. Kết nối, hợp tác và phát triển cùng với những nhà đổi mới toàn cầu

Tham gia ngay