Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Quantization-Aware Training (QAT)

Huấn luyện có nhận biết lượng tử hóa (QAT) mô phỏng quá trình làm tròn INT8 trong khi huấn luyện để trọng số thích ứng trước khi xuất model, giữ được độ chính xác mà quá trình chuyển đổi INT8 thông thường làm mất.

Huấn luyện có nhận biết lượng tử hóa (QAT) là kỹ thuật huấn luyện giúp chuẩn bị model cho suy luận độ chính xác thấp bằng cách mô phỏng lượng tử hóa trong quá trình huấn luyện. Model thường được huấn luyện và lưu trọng số dưới dạng số thực dấu phẩy động 32 bit (FP32); lượng tử hóa model chuyển chúng sang các định dạng như số nguyên 8 bit (INT8) để triển khai, giúp trọng số nhỏ hơn 4 lần và cho phép CPU, GPU cùng bộ xử lý thần kinh (NPU) sử dụng phép toán số nguyên tốc độ cao. Quá trình chuyển đổi làm tròn mọi giá trị và cắt các giá trị ngoại lai, gây tổn thất accuracy. QAT đưa phép làm tròn đó vào lượt truyền xuôi khi model vẫn đang học, nhờ vậy gradient descent tìm được các trọng số vẫn hoạt động tốt sau khi lượng tử hóa. QAT thường được chạy như một giai đoạn tinh chỉnh ngắn trên model đã huấn luyện. Phương pháp suy luận chỉ dùng phép toán số nguyên của Google dành cho CPU di động kết hợp suy luận INT8 với quy trình huấn luyện kiểu này; từ đó, QAT trở thành công cụ tiêu chuẩn để triển khai AI biên.

Cách hoạt động của huấn luyện có nhận biết lượng tử hóa#

QAT bổ sung các phép toán lượng tử hóa giả, còn gọi là cặp lượng tử hóa-khử lượng tử hóa (Q/DQ), vào trọng số và activation của model. Mỗi phép toán ánh xạ một giá trị float về mức INT8 gần nhất bằng scale và zero point, sau đó lập tức ánh xạ giá trị đó trở lại float; vì vậy, mạng vẫn tính toán bằng số dấu phẩy động nhưng nhìn thấy các giá trị đã làm tròn giống như engine INT8. Các scale được lấy từ bước hiệu chỉnh, ghi lại phạm vi thường gặp của mỗi tensor trên một số batch dữ liệu; một số phương pháp còn học các scale này trong quá trình huấn luyện.

Đạo hàm của phép làm tròn bằng 0 ở hầu hết mọi điểm, khiến quá trình học bị dừng. QAT dùng bộ ước lượng truyền thẳng (STE), xem bước làm tròn như hàm đồng nhất trong quá trình lan truyền ngược, nhờ vậy gradient truyền tới các trọng số FP32 bên dưới:

import torch

# FP32 weights that training keeps and updates
w = torch.tensor([0.3137, -0.7214, 0.0521, 1.1800], requires_grad=True)

# Symmetric INT8 fake quantization: snap each weight to one of 255 levels, then map back to float
scale = w.detach().abs().max().item() / 127
w_q = torch.fake_quantize_per_tensor_affine(w, scale, 0, -127, 127)
print(f"Fake-quantized: {[round(v, 4) for v in w_q.tolist()]}")

# The forward pass sees the rounded weights; the straight-through estimator still delivers gradients to w
x = torch.tensor([1.0, 2.0, 3.0, 4.0])
loss = (w_q * x).sum()
loss.backward()
print(f"Gradient on FP32 weights: {w.grad.tolist()}")

Lượt truyền xuôi sử dụng các trọng số đã làm tròn 0.3159, −0.7247, 0.0557 và 1.18; mỗi giá trị nằm trong phạm vi nửa bước lượng tử hóa (0.0046) so với giá trị FP32 tương ứng, nhưng gradient truyền tới trọng số FP32 vẫn chính xác là các giá trị đầu vào 1.0, 2.0, 3.0 và 4.0, như thể không có phép làm tròn nào diễn ra. Qua nhiều bước, optimizer dịch chuyển trọng số tới các vị trí mà sai số làm tròn gây ít tác động nhất; model đã huấn luyện được xuất sang INT8 cùng các scale đã học.

QAT và lượng tử hóa sau huấn luyện#

Lượng tử hóa sau huấn luyện (PTQ) chuyển đổi trực tiếp model FP32 đã hoàn tất, sử dụng vài trăm ảnh hiệu chỉnh để thiết lập các phạm vi. Quá trình này chỉ mất vài phút và không cần pipeline huấn luyện, nhưng trọng số không có cơ hội thích ứng với phép làm tròn, nên model nhạy cảm có thể mất accuracy đáng kể. QAT cần một lượt tinh chỉnh bằng toàn bộ dữ liệu huấn luyện, đổi lại có thể khôi phục phần lớn accuracy đã mất. Các nhóm thường thử PTQ trước và chỉ chuyển sang QAT khi mức giảm accuracy của INT8 quá lớn:

Ultralytics YOLO chạy QAT khi nhận quantize=8 trong quá trình huấn luyện: công cụ hiệu chỉnh lượng tử hóa giả INT8 thông qua NVIDIA Model Optimizer, tinh chỉnh model trong khi áp dụng quá trình này và lưu các phạm vi mà khi xuất sang ONNX và TensorRT sẽ được ghi thành node Q/DQ mà không cần dữ liệu hiệu chỉnh riêng. Trên engine TensorRT, với COCO val2017, PTQ khiến model YOLO26 cỡ medium giảm từ 0.527 xuống 0.470 mAP50-95, trong khi QAT giữ mức 0.514; model nano chỉ giảm 0.010 với PTQ nên QAT không đem lại lợi ích nào.

from ultralytics import YOLO

# Bắt đầu với checkpoint YOLO26 FP32 đã huấn luyện
model = YOLO("yolo26n.pt")

# Tinh chỉnh với lượng tử hóa giả INT8 trong vòng lặp, dùng learning rate nhỏ
model.train(data="coco8.yaml", epochs=5, quantize=8, optimizer="AdamW", lr0=0.00001, cos_lr=True)

# Xuất sang ONNX; các phạm vi INT8 đã học trở thành node Q/DQ nên không cần dữ liệu hiệu chỉnh
model.export(format="onnx", quantize=8)

QAT được sử dụng ở đâu#

  • Thị giác biên: Detector INT8 trên điện thoại di động, camera thông minh, drone và NPU, nơi các bộ tăng tốc chỉ dùng số nguyên hoàn toàn không thể chạy model dấu phẩy động.
  • Máy chủ suy luận: Engine GPU như TensorRT chạy kernel Tensor Core INT8 để tăng thông lượng; QAT giúp accuracy gần với FP32.
  • Model ngôn ngữ: QAT hiện có thể giảm xuống dưới 8 bit. Google phát hành checkpoint Gemma 3 QAT ở định dạng 4 bit Q4_0, giữ chất lượng gần với bfloat16 trong khi chỉ dùng một phần nhỏ bộ nhớ.

Các framework lớn đều cung cấp công cụ QAT, bao gồm torchao của PyTorch, Bộ công cụ tối ưu hóa model của TensorFlow và NNCF của Intel dành cho OpenVINO.

  • Lượng tử hóa model: Thuật ngữ bao quát chỉ việc giảm độ chính xác số học. PTQ và QAT là hai quy trình chính.
  • Huấn luyện độ chính xác hỗn hợp: Huấn luyện bằng FP16 hoặc BF16 để tiết kiệm bộ nhớ và thời gian, nhưng không chuẩn bị model cho suy luận INT8.
  • Độ chính xác bán phần: Suy luận FP16; hầu hết model có thể sử dụng định dạng này mà không cần huấn luyện lại, nên hiếm khi cần QAT.
  • Cắt tỉa model: Loại bỏ trọng số hoặc channel thay vì giảm độ chính xác của chúng; hai phương pháp nén này có thể kết hợp.
  • Chưng cất tri thức: Huấn luyện kiến trúc nhỏ hơn để mô phỏng kiến trúc lớn hơn. Phương pháp này thường được kết hợp với QAT, trong đó model độ chính xác đầy đủ đóng vai trò teacher cho bản sao đã lượng tử hóa của chính nó.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning