Lượng tử hóa sau đào tạo bao gồm các kỹ thuật chung để giảm độ trễ của CPU và bộ tăng tốc phần cứng, quá trình xử lý, công suất và kích thước mô hình với độ chính xác của mô hình ít bị suy giảm. Các kỹ thuật này có thể được thực hiện trên mô hình TensorFlow float đã được đào tạo và áp dụng trong quá trình chuyển đổi TensorFlow Lite. Các kỹ thuật này được bật dưới dạng tùy chọn trong bộ chuyển đổi TensorFlow Lite .
Để chuyển ngay sang các ví dụ từ đầu đến cuối, hãy xem các hướng dẫn sau:
- Lượng tử hóa dải động sau đào tạo
- Lượng tử hóa số nguyên đầy đủ sau đào tạo
- Lượng tử hóa float16 sau đào tạo
Định lượng trọng lượng
Trọng số có thể được chuyển đổi thành các loại có độ chính xác giảm, chẳng hạn như số nổi 16 bit hoặc số nguyên 8 bit. Thông thường, chúng tôi khuyên bạn nên sử dụng float 16 bit để tăng tốc GPU và số nguyên 8 bit để thực thi CPU.
Ví dụ, đây là cách chỉ định lượng tử hóa trọng số số nguyên 8 bit:
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()
Theo suy luận, các phần quan trọng nhất được tính bằng 8 bit thay vì dấu phẩy động. Có một số chi phí hiệu suất theo thời gian suy luận, liên quan đến việc định lượng cả trọng lượng và kích hoạt bên dưới.
Để biết thêm thông tin, hãy xem hướng dẫn lượng tử hóa sau đào tạo TensorFlow Lite.
Lượng tử hóa số nguyên đầy đủ của trọng lượng và kích hoạt
Cải thiện độ trễ, xử lý và sử dụng năng lượng, đồng thời có quyền truy cập vào các bộ tăng tốc phần cứng chỉ dành cho số nguyên bằng cách đảm bảo cả trọng số và kích hoạt đều được lượng tử hóa. Điều này yêu cầu một tập dữ liệu đại diện nhỏ.
import tensorflow as tf
def representative_dataset_gen():
for _ in range(num_calibration_steps):
# Get sample input data as a numpy array in a method of your choosing.
yield [input]
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_quant_model = converter.convert()
Mô hình kết quả sẽ vẫn sử dụng đầu vào và đầu ra float để thuận tiện.
Để biết thêm thông tin, hãy xem hướng dẫn lượng tử hóa sau đào tạo TensorFlow Lite.