Model Quantization
Tìm hiểu cách model quantization tối ưu hóa Ultralytics YOLO26 cho edge AI. Khám phá cách giảm bộ nhớ, giảm độ trễ và xuất các model INT8 để suy luận nhanh hơn.
Lượng tử hóa mô hình là một kỹ thuật tối ưu hóa mô hình tiên tiến được sử dụng để giảm chi phí tính toán và bộ nhớ khi chạy các mô hình deep learning. Trong các quy trình huấn luyện tiêu chuẩn, các mạng neural thường lưu trữ các tham số (trọng số và bias) và bản đồ kích hoạt sử dụng số dấu phẩy động 32-bit (FP32). Mặc dù độ chính xác cao này đảm bảo các phép tính chính xác trong quá trình huấn luyện, nó thường là không cần thiết cho quá trình inference. Lượng tử hóa chuyển đổi các giá trị này thành các định dạng có độ precision thấp hơn, chẳng hạn như dấu phẩy động 16-bit (FP16) hoặc số nguyên 8-bit (INT8), giúp thu gọn kích thước mô hình một cách hiệu quả và tăng tốc độ thực thi mà không làm suy giảm đáng kể độ chính xác.
Tại sao lượng tử hóa lại quan trọng#
Động lực chính cho việc lượng tử hóa là nhu cầu triển khai AI mạnh mẽ trên phần cứng có nguồn lực hạn chế. Khi các mô hình computer vision như YOLO26 trở nên phức tạp hơn, nhu cầu tính toán của chúng cũng tăng lên. Lượng tử hóa giải quyết ba điểm nghẽn quan trọng:
- Dung lượng bộ nhớ: Bằng cách giảm độ rộng bit của các trọng số (ví dụ: từ 32-bit xuống 8-bit), yêu cầu lưu trữ của mô hình giảm tới 4 lần. Điều này rất quan trọng đối với các ứng dụng di động nơi kích thước ứng dụng bị hạn chế.
- Độ trễ Inference: Các phép toán độ precision thấp có chi phí tính toán rẻ hơn. Các bộ xử lý hiện đại, đặc biệt là những bộ xử lý có đơn vị xử lý neural (NPU) chuyên dụng, có thể thực hiện các phép toán INT8 nhanh hơn nhiều so với FP32, làm giảm đáng kể độ trễ inference.
- Tiêu thụ Năng lượng: Việc di chuyển ít dữ liệu hơn qua bộ nhớ và thực hiện các phép toán số học đơn giản hơn sẽ tiêu thụ ít năng lượng hơn, kéo dài thời lượng pin trên các thiết bị di động và phương tiện tự hành.
So sánh với các khái niệm liên quan#
Điều quan trọng là phải phân biệt lượng tử hóa với các kỹ thuật tối ưu hóa khác, vì chúng sửa đổi mô hình theo những cách riêng biệt:
- Lượng tử hóa so với Pruning: Trong khi lượng tử hóa làm giảm kích thước tệp bằng cách hạ thấp độ rộng bit của các tham số, cắt tỉa mô hình liên quan đến việc loại bỏ hoàn toàn các kết nối (trọng số) không cần thiết để tạo ra một mạng thưa. Pruning làm thay đổi cấu trúc của mô hình, trong khi lượng tử hóa làm thay đổi biểu diễn dữ liệu.
- Lượng tử hóa so với Knowledge Distillation: Knowledge distillation là một kỹ thuật huấn luyện trong đó một mô hình "học sinh" nhỏ học cách bắt chước một mô hình "giáo viên" lớn. Lượng tử hóa thường được áp dụng cho mô hình học sinh sau khi distillation để nâng cao hơn nữa hiệu suất edge AI.
Các ứng dụng trong thực tế#
Lượng tử hóa cho phép ứng dụng thị giác máy tính và AI trên nhiều ngành công nghiệp nơi hiệu quả là ưu tiên hàng đầu.
-
Hệ thống Tự hành: Trong ngành công nghiệp ô tô, xe tự lái phải xử lý dữ liệu trực quan từ camera và LiDAR theo thời gian thực. Các mô hình lượng tử hóa được triển khai trên các công cụ NVIDIA TensorRT cho phép các phương tiện này phát hiện người đi bộ và chướng ngại vật với độ trễ tính bằng mili-giây, đảm bảo an toàn cho hành khách.
-
Nông nghiệp Thông minh: Các drone được trang bị camera đa phổ sử dụng các mô hình object detection đã được lượng tử hóa để xác định bệnh cây trồng hoặc theo dõi các giai đoạn sinh trưởng. Việc chạy các mô hình này cục bộ trên hệ thống nhúng của drone loại bỏ nhu cầu kết nối di động không đáng tin cậy ở các cánh đồng xa xôi.
Triển khai lượng tử hóa với Ultralytics#
Thư viện Ultralytics đơn giản hóa quá trình xuất, cho phép các nhà phát triển chuyển đổi các mô hình như YOLO26 tiên tiến thành các định dạng được lượng tử hóa. Ultralytics Platform cũng cung cấp các công cụ để quản lý các việc triển khai này một cách liền mạch.
Ví dụ sau đây minh họa cách xuất một mô hình sang TFLite với tính năng lượng tử hóa INT8 được bật. Quá trình này bao gồm bước hiệu chuẩn nơi mô hình quan sát dữ liệu mẫu để xác định dải động tối ưu cho các giá trị lượng tử hóa.
from ultralytics import YOLO
# Load a standard YOLO26 model
model = YOLO("yolo26n.pt")
# Export to TFLite format with INT8 quantization
# The 'int8' argument triggers Post-Training Quantization
# 'data' provides the calibration dataset needed for mapping values
model.export(format="tflite", int8=True, data="coco8.yaml")Các mô hình được tối ưu hóa thường được triển khai bằng cách sử dụng các tiêu chuẩn có khả năng tương tác như ONNX hoặc các công cụ inference hiệu suất cao như OpenVINO, đảm bảo khả năng tương thích rộng rãi trên các hệ sinh thái phần cứng đa dạng.






