Lượng tử hóa mô hình là một kỹ thuật tối ưu hóa mô hình quan trọng được sử dụng trong học sâu (DL) để giảm chi phí tính toán và bộ nhớ của các mô hình. Nó đạt được điều này bằng cách chuyển đổi độ chính xác số của các tham số mô hình ( trọng số và kích hoạt) từ các biểu diễn có độ chính xác cao hơn, thường là số dấu phẩy động 32 bit ( FP32 ), 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), số nguyên 8 bit ( INT8 ) hoặc thậm chí các biểu diễn bit thấp hơn. Quá trình này làm cho các mô hình học máy nhỏ hơn, nhanh hơn và tiết kiệm năng lượng hơn, điều này đặc biệt quan trọng khi triển khai các mô hình phức tạp trên các môi trường hạn chế về tài nguyên như thiết bị di động hoặc hệ thống AI biên .
Mô hình lượng tử hóa hoạt động như thế nào
Về bản chất, lượng tử hóa mô hình liên quan đến việc ánh xạ phạm vi giá trị được tìm thấy trong tenxơ có độ chính xác cao (như trọng số và kích hoạt trong FP32) thành phạm vi nhỏ hơn có thể biểu diễn bằng các kiểu dữ liệu có độ chính xác thấp hơn (như INT8). Chuyển đổi này làm giảm đáng kể bộ nhớ cần thiết để lưu trữ mô hình và các tài nguyên tính toán cần thiết cho suy luận , vì các phép toán trên các số có độ chính xác thấp hơn (đặc biệt là số nguyên) thường nhanh hơn và tiết kiệm năng lượng hơn trên phần cứng hiện đại như GPU , CPU và các bộ tăng tốc chuyên dụng như TPU hoặc NPU . Mục tiêu là đạt được những mức tăng hiệu quả này với tác động tối thiểu đến hiệu suất dự đoán của mô hình.
Lợi ích của lượng tử hóa mô hình
Việc áp dụng lượng tử hóa vào các mô hình học sâu mang lại một số lợi thế chính:
- Giảm kích thước mô hình: Các kiểu dữ liệu có độ chính xác thấp hơn yêu cầu ít không gian lưu trữ hơn, giúp mô hình dễ lưu trữ và phân phối hơn, đặc biệt là khi triển khai trên thiết bị.
- Tốc độ suy luận nhanh hơn: Các phép tính với số có độ chính xác thấp hơn (đặc biệt là số nguyên) thực hiện nhanh hơn trên phần cứng tương thích, giúp giảm độ trễ suy luận . Điều này rất quan trọng đối với các ứng dụng thời gian thực .
- Hiệu quả năng lượng được cải thiện: Tốc độ tính toán nhanh hơn và giảm khả năng truy cập bộ nhớ giúp giảm mức tiêu thụ điện năng, kéo dài tuổi thọ pin trên thiết bị di động và thiết bị biên .
- Khả năng tương thích phần cứng được nâng cao: Nhiều bộ tăng tốc phần cứng chuyên dụng ( Edge TPU , NPU trên bộ xử lý ARM ) được tối ưu hóa cho phép tính số nguyên có độ chính xác thấp, cho phép tăng hiệu suất đáng kể cho các mô hình lượng tử.
Kỹ thuật lượng tử hóa
Có hai cách tiếp cận chính để lượng tử hóa mô hình:
- Lượng tử hóa sau đào tạo (PTQ): Phương pháp này liên quan đến việc lượng tử hóa một mô hình đã được đào tạo bằng độ chính xác dấu phẩy động tiêu chuẩn. Phương pháp này đơn giản hơn để triển khai vì không yêu cầu đào tạo lại hoặc truy cập vào dữ liệu đào tạo ban đầu. Tuy nhiên, đôi khi nó có thể dẫn đến giảm đáng kể độ chính xác của mô hình. Các công cụ như Bộ công cụ tối ưu hóa mô hình TensorFlow cung cấp khả năng PTQ.
- Đào tạo có nhận thức về lượng tử hóa (QAT) : Kỹ thuật này mô phỏng các hiệu ứng của lượng tử hóa trong quá trình đào tạo mô hình. Bằng cách khiến mô hình "nhận thức" về việc giảm độ chính xác sắp tới, QAT thường đạt được độ chính xác tốt hơn so với PTQ, đặc biệt là đối với các mô hình nhạy cảm với lượng tử hóa, mặc dù nó yêu cầu sửa đổi quy trình đào tạo và truy cập vào dữ liệu đào tạo. PyTorch cung cấp hỗ trợ QAT .
Ứng dụng trong thế giới thực
Lượng tử hóa mô hình được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau:
- Ứng dụng thị giác di động: Cho phép các tác vụ thị giác máy tính phức tạp như phát hiện đối tượng theo thời gian thực (ví dụ: sử dụng lượng tử hóa Ultralytics YOLO mô hình) hoặc phân đoạn hình ảnh trực tiếp trên điện thoại thông minh cho các ứng dụng như thực tế tăng cường, chỉnh sửa ảnh hoặc tìm kiếm trực quan . Lượng tử hóa làm cho các mô hình đòi hỏi khắt khe này khả thi trên phần cứng di động .
- Xe tự hành và Robot: Triển khai các mô hình nhận thức (để phát hiện người đi bộ, xe cộ, chướng ngại vật) trong ô tô hoặc máy bay không người lái, nơi độ trễ thấp và hiệu quả năng lượng là tối quan trọng đối với sự an toàn và độ bền hoạt động. Các mô hình lượng tử hóa giúp đáp ứng các yêu cầu xử lý thời gian thực nghiêm ngặt này.
- Thiết bị AI biên: Chạy các mô hình AI cho các tác vụ như phát hiện lỗi công nghiệp, tự động hóa nhà thông minh hoặc theo dõi sức khỏe trên thiết bị đeo được trên bộ vi điều khiển công suất thấp hoặc bộ xử lý biên chuyên dụng.
Những cân nhắc và khái niệm liên quan
Mặc dù có lợi ích cao, lượng tử hóa có khả năng tác động đến độ chính xác của mô hình. Đánh giá cẩn thận bằng cách sử dụng các số liệu hiệu suất có liên quan là điều cần thiết sau khi lượng tử hóa. Các kỹ thuật như sử dụng kiến trúc mô hình thân thiện với lượng tử hóa (ví dụ: thay thế một số hàm kích hoạt như được thấy trong YOLO -NAS ) có thể giúp giảm thiểu sự suy giảm độ chính xác, như đã thảo luận trong triển khai các mô hình YOLOv8 lượng tử hóa .
Lượng tử hóa mô hình là một trong số nhiều kỹ thuật tối ưu hóa mô hình. Những kỹ thuật khác bao gồm:
- Cắt tỉa mô hình : Loại bỏ các kết nối dư thừa hoặc không quan trọng (trọng số) trong mạng nơ-ron.
- Độ chính xác hỗn hợp : Sử dụng kết hợp các độ chính xác số khác nhau (ví dụ: FP16 và FP32) trong quá trình đào tạo hoặc suy luận.
- Chắt lọc kiến thứ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 đã được đào tạo trước.
Ultralytics hỗ trợ xuất mô hình sang nhiều định dạng khác nhau giúp lượng tử hóa và triển khai dễ dàng, bao gồm ONNX , OpenVINO (tối ưu hóa cho phần cứng Intel ), TensorRT (cho GPU NVIDIA ), CoreML (cho thiết bị Apple ) và TFLite , cho phép triển khai mô hình hiệu quả trên nhiều nền tảng phần cứng khác nhau. Bạn có thể quản lý và triển khai mô hình của mình, bao gồm các phiên bản lượng tử hóa, bằng các công cụ như Ultralytics HUB . Các tích hợp như Neural Magic cũng tận dụng lượng tử hóa cho CPU tối ưu hóa.