Đào tạo nhận thức lượng tử hóa

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Được duy trì bởi Tối ưu hóa mô hình TensorFlow

Có hai hình thức lượng tử hóa: lượng tử hóa sau đào tạo và lượng tử hóa đào tạo nhận thức. Bắt đầu với lượng tử hóa sau đào tạo vì nó dễ sử dụng hơn, mặc dù đào tạo nhận thức lượng tử hóa thường tốt hơn cho độ chính xác của mô hình.

Trang này cung cấp tổng quan về đào tạo nhận thức lượng tử hóa để giúp bạn xác định cách nó phù hợp với trường hợp sử dụng của bạn.

Tổng quan

Đào tạo nhận thức lượng tử hóa mô phỏng lượng tử hóa thời gian suy luận, tạo ra một mô hình mà các công cụ hạ nguồn sẽ sử dụng để tạo ra các mô hình lượng tử hóa thực sự. Các mô hình lượng tử hóa sử dụng độ chính xác thấp hơn (ví dụ: 8 bit thay vì 32 bit float), dẫn đến lợi ích trong quá trình triển khai.

Triển khai với lượng tử hóa

Lượng tử hóa mang lại những cải tiến thông qua nén mô hình và giảm độ trễ. Với mặc định API, kích thước mô hình thu nhỏ lại 4 lần và chúng tôi thường thấy độ trễ CPU được cải thiện từ 1,5 - 4 lần trong các chương trình phụ trợ được thử nghiệm. Cuối cùng, các cải tiến về độ trễ có thể được nhìn thấy trên các trình tăng tốc học máy tương thích, chẳng hạn như EdgeTPU và NNAPI.

Kỹ thuật này được sử dụng trong sản xuất trong các trường hợp sử dụng giọng nói, thị giác, văn bản và dịch thuật. Mã hiện hỗ trợ một tập hợp con của các mô hình này .

Thử nghiệm với lượng tử hóa và phần cứng liên quan

Người dùng có thể cấu hình các tham số lượng tử hóa (ví dụ: số bit) và ở một mức độ nào đó, các thuật toán cơ bản. Lưu ý rằng với những thay đổi này từ mặc định API, hiện không có đường dẫn nào được hỗ trợ để triển khai tới chương trình phụ trợ. Ví dụ, chuyển đổi TFLite và triển khai nhân chỉ hỗ trợ lượng tử hóa 8-bit.

Các API cụ thể cho cấu hình này là thử nghiệm và không có khả năng tương thích ngược.

Khả năng tương thích API

Người dùng có thể áp dụng lượng tử hóa với các API sau:

  • Xây dựng mô hình: tf.keras chỉ với các mô hình Tuần tự và Chức năng.
  • Các phiên bản TensorFlow: TF 2.x cho tf-nightly.
  • Chế độ thực thi TensorFlow: thực thi háo hức

Chúng tôi đang trong lộ trình bổ sung hỗ trợ trong các lĩnh vực sau:

  • Xây dựng mô hình: làm rõ cách Mô hình phân lớp đã hạn chế đến mức không hỗ trợ
  • Đào tạo phân tán: tf.distribute

Ma trận hỗ trợ chung

Hỗ trợ có sẵn trong các lĩnh vực sau:

  • Phạm vi của mô hình: các mô hình sử dụng các lớp được phép, BatchNormalization khi nó theo sau các lớp Conv2D và DepthwiseConv2D và trong một số trường hợp hạn chế là Concat .
  • Tăng tốc phần cứng: mặc định API của chúng tôi tương thích với khả năng tăng tốc trên các phụ trợ EdgeTPU, NNAPI và TFLite, trong số những thứ khác. Xem thông báo trước trong lộ trình.
  • Triển khai với lượng tử hóa: hiện chỉ hỗ trợ lượng tử hóa theo trục cho các lớp chập, không lượng tử hóa theo hàng chục.

Chúng tôi đang trong lộ trình bổ sung hỗ trợ trong các lĩnh vực sau:

  • Phạm vi mô hình: được mở rộng để bao gồm RNN / LSTM và hỗ trợ Concat chung.
  • Tăng tốc phần cứng: đảm bảo bộ chuyển đổi TFLite có thể tạo ra các mô hình số nguyên đầy đủ. Xem vấn đề này để biết chi tiết.
  • Thử nghiệm với các trường hợp sử dụng lượng tử hóa:
    • Thử nghiệm với các thuật toán lượng tử hóa trải dài các lớp Keras hoặc yêu cầu bước đào tạo.
    • Ổn định các API.

Kết quả

Phân loại hình ảnh bằng các công cụ

Người mẫu Độ chính xác Top-1 không lượng tử hóa Độ chính xác được lượng tử hóa 8-bit
MobilenetV1 224 71,03% 71,06%
Resnet v1 50 76,3% 76,1%
MobilenetV2 224 70,77% 70,01%

Các mô hình đã được thử nghiệm trên Imagenet và được đánh giá trên cả TensorFlow và TFLite.

Phân loại hình ảnh cho kỹ thuật

Người mẫu Độ chính xác Top-1 không lượng tử hóa Độ chính xác được lượng tử hóa 8-bit
Nasnet-Mobile 74% 73%
Resnet-v2 50 75,6% 75%

Các mô hình đã được thử nghiệm trên Imagenet và được đánh giá trên cả TensorFlow và TFLite.

Các ví dụ

Ngoài ví dụ đào tạo nhận thức lượng tử hóa , hãy xem các ví dụ sau:

  • Mô hình CNN về nhiệm vụ phân loại chữ số viết tay MNIST với lượng tử hóa:

Để biết thông tin cơ bản về một cái gì đó tương tự, hãy xem bài báo Lượng tử hóa và Đào tạo Mạng Nơ-ron để có hiệu quả Số nguyên-Số học-Chỉ suy luận . Bài báo này giới thiệu một số khái niệm mà công cụ này sử dụng. Việc triển khai không hoàn toàn giống nhau và có những khái niệm bổ sung được sử dụng trong công cụ này (ví dụ: lượng tử hóa trên mỗi trục).