Yolo Vision 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.

Tỉa thưa (Pruning) là một kỹ thuật tối ưu hóa mô hình được sử dụng để giảm kích thước và độ phức tạp tính toán của một mạng nơ-ron (NN) đã được huấn luyện. Quá trình này bao gồm việc xác định và loại bỏ các tham số (trọng số) hoặc cấu trúc (nơ-ron, kênh hoặc lớp) dư thừa hoặc ít quan trọng hơn khỏi mô hình. Mục tiêu là tạo ra một mô hình nhỏ hơn, nhanh hơn và tiết kiệm năng lượng hơn, đồng thời duy trì mức độ chính xác tương đương với mô hình ban đầu. Điều này đặc biệt quan trọng để triển khai các mô hình AI phức tạp trên các môi trường bị hạn chế về tài nguyên, chẳng hạn như thiết bị biên.

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

Quá trình tỉa thưa thường bắt đầu sau khi một mô hình học sâu đã được huấn luyện đầy đủ. Nó hoạt động dựa trên nguyên tắc rằng nhiều mô hình lớn được tham số hóa quá mức, có nghĩa là chúng chứa nhiều trọng số và nơ-ron đóng góp rất ít vào dự đoán cuối cùng. Một phương pháp phổ biến để xác định các thành phần không quan trọng này là phân tích độ lớn của chúng; các tham số có giá trị gần bằng không được coi là ít quan trọng hơn. Sau khi được xác định, các tham số này sẽ bị loại bỏ hoặc đặt thành không. Sau quá trình tỉa thưa, mạng nhỏ hơn hiện tại thường trải qua quá trình tinh chỉnh, bao gồm việc huấn luyện lại mô hình trong một vài epoch nữa. Bước này giúp các tham số còn lại điều chỉnh theo các thay đổi kiến trúc và phục hồi bất kỳ hiệu suất nào có thể bị mất trong quá trình tỉa thưa. Quá trình lặp đi lặp lại này của việc tỉa thưa và tinh chỉnh có thể được lặp lại để đạt được sự cân bằng mong muốn giữa kích thước và hiệu suất của mô hình, như được mô tả trong các bài báo nghiên cứu nền tảng như "Deep Compression".

Các loại tỉa bớt (Pruning)

Các kỹ thuật tỉa thưa có thể được phân loại rộng rãi dựa trên những gì bị loại bỏ khỏi mạng:

  • Tỉa thưa phi cấu trúc (Tỉa thưa trọng số): Phương pháp này loại bỏ các trọng số riêng lẻ khỏi mạng dựa trên một tiêu chí cụ thể, chẳng hạn như độ lớn của chúng. Nó tạo ra một mô hình thưa thớt, trong đó nhiều kết nối bị đưa về 0. Mặc dù điều này có thể làm giảm đáng kể số lượng tham số, nhưng nó không phải lúc nào cũng dẫn đến suy luận nhanh hơn trên phần cứng tiêu chuẩn như CPU hoặc GPU mà không có các thư viện phần mềm chuyên dụng, chẳng hạn như các công cụ của NVIDIA dành cho mô hình thưa thớt.
  • 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 của mạng, chẳng hạn như các nơ-ron, kênh hoặc thậm chí toàn bộ các lớp trong một Mạng nơ-ron tích chập (CNN). Vì nó loại bỏ các khối thông thường của mạng, nó làm giảm trực tiếp kích thước và yêu cầu tính toán của mô hình theo cách mà phần cứng tiêu chuẩn có thể dễ dàng khai thác, thường dẫn đến tăng tốc có thể dự đoán được hơn. Các công cụ như DeepSparse của Neural Magic được thiết kế để tăng tốc suy luận trên CPU cho các mô hình thưa thớt có cấu trúc như vậy.

Các framework machine learning lớn như PyTorchTensorFlow cung cấp các tiện ích tích hợp và hướng dẫn để triển khai tỉa bớt (pruning).

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

Tỉa thưa là điều cần thiết để triển khai các mô hình AI mạnh mẽ trong các tình huống thực tế, nơi tài nguyên tính toán bị hạn chế.

  1. Tối ưu hóa phát hiện đối tượng trên thiết bị biên: Các mô hình như Ultralytics YOLO được sử dụng để phát hiện đối tượng theo thời gian thực. Bằng cách tỉa bớt một mô hình như YOLOv8, nó có thể được triển khai trên các thiết bị biên tiêu thụ ít điện năng như Raspberry Pi hoặc NVIDIA Jetson. Điều này cho phép các ứng dụng như giám sát thông minh trên thiết bị, tối ưu hóa quản lý giao thôngtích hợp thị giác máy tính trong robot.
  2. Chạy các Mô hình Ngôn ngữ Lớn (LLM) cục bộ: Cắt tỉa (Pruning) có thể giảm đáng kể dung lượng bộ nhớ của Mô hình Ngôn ngữ Lớn (LLM) dựa trên các kiến trúc như Transformer. Một LLM đã được cắt tỉa có thể chạy trực tiếp trên điện thoại thông minh hoặc máy tính xách tay cho các tác vụ Xử lý Ngôn ngữ Tự nhiên (NLP) như tóm tắt văn bản hoặc trợ lý ảo cục bộ. Điều này cải thiện khả năng phản hồi và tăng cường quyền riêng tư dữ liệu bằng cách giữ dữ liệu người dùng trên thiết bị, một nguyên tắc quan trọng đối với các tổ chức như Electronic Frontier Foundation (EFF).

Tỉa bớt (Pruning) so với các Kỹ thuật Tối ưu hóa khác

Tỉa thưa là một trong số các kỹ thuật để tối ưu hóa mô hình và thường được sử dụng cùng với các kỹ thuật khác. Điều quan trọng là phải phân biệt nó với các khái niệm liên quan:

  • Lượng tử hóa mô hình: Kỹ thuật này làm giảm độ chính xác số của trọng số và kích hoạt của mô hình (ví dụ: từ số thực 32 bit thành số nguyên 8 bit). Điều này làm giảm kích thước mô hình và có thể tăng tốc tính toán, đặc biệt là trên phần cứng có hỗ trợ chuyên dụng. Không giống như tỉa thưa, loại bỏ các tham số, lượng tử hóa nén chúng.
  • Chưng cất tri thức (Knowledge Distillation): Trong phương pháp này, một mô hình "học sinh" nhỏ hơn được đào tạo để sao chép đầu ra của một mô hình "giáo viên" lớn hơn, được đào tạo trước. Mục tiêu là chuyển kiến thức đã học sang một kiến trúc nhỏ gọn hơn, trong khi pruning sửa đổi kiến trúc hiện có.

Các kỹ thuật này không loại trừ lẫn nhau. Một quy trình làm việc phổ biến là trước tiên cắt tỉa một mô hình để loại bỏ các tham số dư thừa, sau đó áp dụng lượng tử hóa cho mô hình đã cắt tỉa để có hiệu quả tối đa. Sau đó, các mô hình được tối ưu hóa có thể được xuất sang các định dạng tiêu chuẩn như ONNX bằng cách sử dụng chức năng xuất của Ultralytics để triển khai rộng rãi trên nhiều inference engine khác nhau. Các nền tảng như Ultralytics HUB có thể giúp quản lý toàn bộ vòng đời, từ huấn luyện đến triển khai mô hình được tối ưu hóa.

Tham gia cộng đồng Ultralytics

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
Đã sao chép liên kết vào clipboard