Được duy trì bằng cách 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à đào tạo nhận thức lượng tử hóa. 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ù việc đào tạo nhận biết lượng tử hóa thường mang lại độ chính xác cho mô hình tốt hơn.
Trang này cung cấp thông tin tổng quan về đào tạo nhận thức lượng tử hóa để giúp bạn xác định mức độ phù hợp với trường hợp sử dụng của bạn.
- Để đi sâu vào ví dụ từ đầu đến cuối, hãy xem ví dụ đào tạo nhận biết lượng tử hóa .
- Để nhanh chóng tìm thấy các API bạn cần cho trường hợp sử dụng của mình, hãy xem hướng dẫn toàn diện về đào tạo nhận biết lượng tử hóa .
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ụ tiếp theo 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ì float 32 bit), mang lại 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 việc nén mô hình và giảm độ trễ. Với các mặc định API, kích thước mô hình giảm đi 4 lần và chúng tôi thường thấy độ trễ của CPU được cải thiện từ 1,5 đến 4 lần trong các chương trình phụ trợ được thử nghiệm. Cuối cùng, những cải thiện về độ trễ có thể được nhìn thấy trên các bộ 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 lời nói, hình ảnh, 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 lượng tử hóa và phần cứng liên quan
Người dùng có thể định 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 so với mặc định của API, hiện không có đường dẫn nào được hỗ trợ để triển khai sang chương trình phụ trợ. Chẳng hạn, việc triển khai hạt nhân và chuyển đổi TFLite chỉ hỗ trợ lượng tử hóa 8 bit.
Các API dành riêng cho cấu hình này chỉ mang tính 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:
keras
chỉ có các mô hình Tuần tự và Chức năng. - Phiên bản TensorFlow: TF 2.x cho tf-nightly.
-
tf.compat.v1
với gói TF 2.X không được hỗ trợ.
-
- Chế độ thực thi TensorFlow: thực thi háo hức
Chúng tôi có 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 thức Mô hình phân lớp bị hạn chế hoặc không được 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 mô hình: các mô hình sử dụng các lớp trong danh sách cho phép , BatchNormalization khi nó tuân theo các lớp Conv2D và DepthwiseConv2D, và trong một số trường hợp hạn chế,
Concat
. - Tăng tốc phần cứng: các 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 chương trình phụ trợ EdgeTPU, NNAPI và TFLite, cùng với các chương trình khác. Xem cảnh báo trong lộ trình.
- Triển khai với lượng tử hóa: hiện chỉ hỗ trợ lượng tử hóa trên mỗi trục cho các lớp chập chứ không phải lượng tử hóa trên mỗi tensor.
Chúng tôi có 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 các thuật toán lượng tử hóa trải rộng trên các lớp Keras hoặc yêu cầu bước huấn luyện.
- Ổn định API.
Kết quả
Phân loại hình ảnh bằng công cụ
Người mẫu | Độ chính xác Top-1 không lượng tử hóa | Độ chính xác lượng tử hóa 8 bit |
---|---|---|
Mạng di độngV1 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á trong 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 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á trong cả TensorFlow và TFLite.
Ví dụ
Ngoài ví dụ về đà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: code
Để biết thông tin cơ bản về nội dung tương tự, hãy xem bài viết Lượng tử hóa và đào tạo mạng thần kinh để suy luận chỉ số nguyên hiệu quả . Bài viết này giới thiệu một số khái niệm mà công cụ này sử dụng. Cách triển khai không hoàn toàn giống nhau và có các 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).