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ối ưu hóa các mô hình AI bằng cách tỉa thưa (pruning) — giảm độ phức tạp, tăng hiệu quả và triển khai nhanh hơn trên các thiết bị biên mà không làm giảm hiệu suất.

Cắt tỉa là một kỹ thuật quan trọng trong học máy , nhằm mục đích giảm kích thước và độ phức tạp tính toán của mạng nơ-ron (NN) bằng cách loại bỏ các tham số không cần thiết. Giống như việc cắt tỉa cành chết khỏi cây để thúc đẩy sự phát triển khỏe mạnh, cắt tỉa mô hình xác định và loại bỏ các trọng số hoặc kết nối mô hình đóng góp tối thiểu vào đầu ra của hệ thống. Mục tiêu chính là tạo ra một mô hình thưa thớt duy trì độ chính xác cao, đồng thời giảm đáng kể mức sử dụng bộ nhớ và cải thiện độ trễ suy luận . Quá trình này rất cần thiết để triển khai các kiến trúc phức tạp, chẳng hạn như Ultralytics YOLO11 , trên các thiết bị hạn chế về tài nguyên, nơi lưu trữ và khả năng xử lý bị hạn chế.

Cách thức hoạt động của tỉa bớt (Pruning)

Quá trình này thường bắt đầu với một mô hình được huấn luyện trước. Các thuật toán phân tích mạng để tìm các tham số - thường được biểu diễn dưới dạng tenxơ - có giá trị gần bằng 0 hoặc có tác động hạn chế đến dự đoán cuối cùng. Các tham số này sau đó được loại bỏ hoặc "đặt về 0". Vì việc loại bỏ các kết nối có thể tạm thời làm giảm hiệu suất, mô hình thường trải qua một quá trình gọi là tinh chỉnh (fine-tuning) , trong đó nó được huấn luyện lại trong một vài kỷ nguyên để cho phép các trọng số còn lại điều chỉnh và khôi phục độ chính xác đã mất.

Có hai loại cắt tỉa chính:

  • Cắt tỉa không có cấu trúc: Phương pháp này loại bỏ các trọng số riêng lẻ ở bất kỳ đâu trong mạng dựa trên độ lớn. Mặc dù hiệu quả trong việc giảm số lượng tham số, nhưng nó tạo ra các mẫu truy cập bộ nhớ không đều, có thể không mang lại cải thiện tốc độ trên các CPU tiêu chuẩn nếu không có phần mềm hoặc phần cứng chuyên dụng hỗ trợ, chẳng hạn như tính năng thưa thớt của NVIDIA .
  • Cắt tỉa có cấu trúc: Phương pháp này loại bỏ toàn bộ các thành phần cấu trúc, chẳng hạn như nơ-ron, kênh hoặc lớp trong Mạng nơ-ron tích chập (CNN) . Bằng cách duy trì cấu trúc ma trận, phương pháp này thân thiện hơn với phần cứng tiêu chuẩn và thường mang lại tốc độ nhanh hơn ngay lập tức trong quá trình suy luận thời gian thực .

Cắt tỉa so với Lượng tử hóa so với Chưng cất

Điều quan trọng là phải phân biệt việc cắt tỉa với các chiến lược tối ưu hóa mô hình khác, mặc dù chúng thường được sử dụng song song:

  • Lượng tử hóa mô hình : Thay vì loại bỏ các tham số, lượng tử hóa làm giảm độ chính xác của trọng số (ví dụ: chuyển đổi từ số dấu phẩy động 32 bit sang số nguyên 8 bit).
  • Chắt lọc kiến thức : Điều này bao gồm việc đào tạo 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, thay vì sửa đổi trực tiếp mô hình lớn hơn.
  • Cắt tỉa: Tập trung cụ thể vào việc loại bỏ các kết nối hoặc cấu trúc để tạo ra sự thưa thớt.

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

Việc cắt tỉa đóng vai trò quan trọng trong việc hỗ trợ Edge AI trên nhiều ngành công nghiệp khác nhau:

  1. Robot tự động: Robot sử dụng thị giác máy tính để điều hướng cần xử lý dữ liệu hình ảnh cục bộ để tránh độ trễ. Việc cắt tỉa cho phép các mô hình phát hiện vật thể phức tạp chạy trên phần cứng nhúng của máy bay không người lái hoặc robot giao hàng, đảm bảo an toàn và hiệu quả. Đọc thêm về việc tích hợp thị giác máy tính vào robot .
  2. Chẩn đoán Chăm sóc Sức khỏe Di động: Các ứng dụng y tế thường yêu cầu phân tích hình ảnh quét độ phân giải cao trực tiếp trên máy tính bảng hoặc điện thoại thông minh để bảo vệ quyền riêng tư dữ liệu của bệnh nhân. Các mô hình được tinh gọn cho phép các thiết bị này thực hiện các tác vụ như phát hiện khối u mà không cần tải dữ liệu nhạy cảm lên đám mây. Xem cách AI trong chăm sóc sức khỏe đang chuyển đổi chẩn đoán.

Ví dụ thực tế

Trong khi các mô hình YOLO Ultralytics được tối ưu hóa cao ngay khi xuất xưởng, các nhà phát triển có thể thử nghiệm cắt tỉa bằng cách sử dụng tiêu chuẩn PyTorch tiện ích. Ví dụ sau đây minh họa cách áp dụng cắt tỉa không có cấu trúc cho một lớp tích chập tiêu chuẩn có trong các mô hình thị giác máy tính.

import torch
import torch.nn.utils.prune as prune
from ultralytics.nn.modules import Conv

# Initialize a standard convolutional block used in YOLO models
layer = Conv(c1=64, c2=128)

# Apply L1 unstructured pruning to remove 30% of the lowest magnitude weights
prune.l1_unstructured(layer.conv, name="weight", amount=0.3)

# Verify the sparsity (percentage of zero weights)
sparsity = float(torch.sum(layer.conv.weight == 0)) / layer.conv.weight.nelement()
print(f"Layer sparsity achieved: {sparsity:.2%}")

Những tiến bộ trong tương lai về kiến trúc hiệu quả, chẳng hạn như YOLO26 sắp ra mắt, nhằm mục đích tích hợp các nguyên tắc tối ưu hóa này một cách tự nhiên, tạo ra các mô hình nhỏ hơn, nhanh hơn và chính xác hơn theo thiết kế.

Các khái niệm và tài nguyên chính

  • Độ thưa thớt: Tình trạng mà ma trận chứa phần lớn giá trị bằng 0, là kết quả trực tiếp của quá trình cắt tỉa mạnh.
  • Giả thuyết về vé số: Một khái niệm quan trọng từ các nhà nghiên cứu tại MIT cho rằng các mạng lưới dày đặc chứa các mạng con nhỏ hơn (vé trúng thưởng) có thể khớp với độ chính xác ban đầu khi được đào tạo riêng biệt.
  • Tinh chỉnh: Quá trình đào tạo lại mô hình đã cắt tỉa để điều chỉnh các trọng số còn lại theo cấu trúc mới, đơn giản hơn.

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