Model Quantization
Tìm hiểu cách model quantization tối ưu Ultralytics YOLO26 cho edge AI. Khám phá cách giảm bộ nhớ, hạ độ trễ và export model INT8 để suy luận nhanh hơn.
Lượng tử hóa model là một kỹ thuật tối ưu hóa model phức tạp, được sử dụng để giảm chi phí tính toán và bộ nhớ khi chạy các model deep learning. Trong các quy trình training tiêu chuẩn, mạng neural thường lưu trữ các tham số (weight và bias) cùng các activation map bằ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 training, nó thường không cần thiết khi inference. Lượng tử hóa chuyển đổi các giá trị này sang các định dạng có độ chính xác thấp hơn, chẳng hạn như số dấu phẩy động 16-bit (FP16) hoặc số nguyên 8-bit (INT8), qua đó thu nhỏ kích thước model và tăng tốc độ thực thi mà không làm ảnh hưởng đáng kể đến độ chính xác.
Tại sao lượng tử hóa 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ó tài nguyên hạn chế. Khi các model thị giác máy tính như YOLO26 trở nên phức tạp hơn, yêu 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:
- Mức sử dụng bộ nhớ: Bằng cách giảm độ rộng bit của các weight (ví dụ: từ 32-bit xuống 8-bit), yêu cầu lưu trữ của model được giảm tới 4 lần. Điều này đặc biệt quan trọng đối với các ứng dụng di động, nơi kích thước ứng dụng bị giới hạn.
- Độ trễ inference: Các phép toán với độ chính xác thấp hơn có chi phí tính toán thấp hơn. Các bộ xử lý hiện đại, đặc biệt là những bộ xử lý có bộ 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, qua đó giảm đáng kể độ trễ inference.
- Mức tiêu thụ điện năng: Việc truyề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 của 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 model theo những cách khác nhau:
- 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 giảm độ rộng bit của các tham số, pruning model loại bỏ hoàn toàn các kết nối không cần thiết (weight) để tạo ra một mạng thưa. Pruning thay đổi cấu trúc của model, còn lượng tử hóa thay đổi cách biểu diễn dữ liệu.
- Lượng tử hóa so với chưng cất tri thức: Chưng cất tri thức là một kỹ thuật training trong đó một model "student" nhỏ học cách bắt chước một model "teacher" lớn. Lượng tử hóa thường được áp dụng cho model student sau quá trình chưng cất để tiếp tục nâng cao hiệu năng AI biên.
Các ứng dụng trong thực tế#
Lượng tử hóa giúp triển khai thị giác máy tính và AI trong nhiều ngành khác nhau, nơi hiệu quả là yếu tố then chốt.
-
Hệ thống tự hành: Trong ngành ô tô, xe tự lái phải xử lý dữ liệu hình ảnh từ camera và LiDAR theo thời gian thực. Các model đã được lượng tử hóa triển khai trên các engine NVIDIA TensorRT cho phép những 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: Drone được trang bị camera đa phổ sử dụng các model phát hiện đối tượng đã đượ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 model này cục bộ trên hệ thống nhúng của drone loại bỏ nhu cầu sử dụng kết nối di động không ổn định tại các cánh đồng vùng xa.
Triển khai lượng tử hóa với Ultralytics#
Thư viện Ultralytics đơn giản hóa quy trình export, cho phép developer chuyển đổi các model 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ý liền mạch những lần triển khai này.
Ví dụ sau đây minh họa cách export một model sang TFLite với tính năng lượng tử hóa INT8 được bật. Quy trình này bao gồm một bước calibration, trong đó model quan sát dữ liệu mẫu để xác định dynamic range tối ưu cho các giá trị đã được 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 model đã được tối ưu thường được triển khai bằng các tiêu chuẩn có khả năng tương tác như ONNX hoặc các inference engine hiệu năng cao như OpenVINO, đảm bảo khả năng tương thích rộng rãi trên nhiều hệ sinh thái phần cứng khác nhau.









