Cảm ơn bạn đã theo dõi Google I/O. Xem tất cả các phiên theo yêu cầu Xem theo yêu cầu

Tối ưu hóa cộng tác

Được bảo trì bởi Arm ML Tooling

Tài liệu này cung cấp tổng quan về các API thử nghiệm để kết hợp các kỹ thuật khác nhau nhằm tối ưu hóa các mô hình học máy để triển khai.

Tổng quan

Tối ưu hóa cộng tác là một quá trình tổng thể bao gồm các kỹ thuật khác nhau để tạo ra một mô hình, khi triển khai, thể hiện sự cân bằng tốt nhất của các đặc điểm mục tiêu như tốc độ suy luận, kích thước mô hình và độ chính xác.

Ý tưởng về tối ưu hóa hợp tác là xây dựng dựa trên các kỹ thuật riêng lẻ bằng cách áp dụng chúng lần lượt để đạt được hiệu quả tối ưu hóa tích lũy. Có thể kết hợp nhiều cách tối ưu hóa sau:

Vấn đề nảy sinh khi cố gắng kết nối các kỹ thuật này với nhau là việc áp dụng một kỹ thuật thường phá hủy kết quả của kỹ thuật trước đó, làm hỏng lợi ích tổng thể của việc áp dụng đồng thời tất cả chúng; ví dụ: phân cụm không bảo toàn sự thưa thớt được giới thiệu bởi API cắt tỉa. Để giải quyết vấn đề này, chúng tôi giới thiệu các kỹ thuật tối ưu hóa cộng tác thử nghiệm sau:

Chúng cung cấp một số đường dẫn triển khai có thể được sử dụng để nén mô hình học máy và tận dụng khả năng tăng tốc phần cứng tại thời điểm suy luận. Sơ đồ dưới đây minh họa một số đường dẫn triển khai có thể được khám phá để tìm kiếm mô hình có các đặc điểm triển khai mong muốn, trong đó các nút lá là mô hình sẵn sàng triển khai, nghĩa là chúng được lượng tử hóa một phần hoặc toàn bộ và ở định dạng tflite. Phần tô màu xanh lá cây cho biết các bước cần đào tạo lại / tinh chỉnh và đường viền gạch ngang màu đỏ làm nổi bật các bước tối ưu hóa cộng tác. Kỹ thuật được sử dụng để thu được một mô hình tại một nút nhất định được chỉ ra trong nhãn tương ứng.

collaborative optimization

Đường dẫn triển khai trực tiếp, chỉ lượng tử hóa (sau đào tạo hoặc QAT) được bỏ qua trong hình trên.

Ý tưởng là đạt được mô hình được tối ưu hóa hoàn toàn ở cấp độ thứ ba của cây triển khai ở trên; tuy nhiên, bất kỳ mức độ tối ưu hóa nào khác đều có thể thỏa mãn và đạt được sự cân bằng độ trễ / độ chính xác của suy luận cần thiết, trong trường hợp đó không cần tối ưu hóa thêm. Quy trình đào tạo được đề xuất sẽ là lặp đi lặp lại các cấp của cây triển khai áp dụng cho kịch bản triển khai mục tiêu và xem liệu mô hình có đáp ứng các yêu cầu về độ trễ suy luận hay không và nếu không, hãy sử dụng kỹ thuật tối ưu hóa cộng tác tương ứng để nén mô hình hơn nữa và lặp lại cho đến khi mô hình được tối ưu hóa hoàn toàn (lược bỏ, phân cụm và lượng tử hóa), nếu cần.

Hình dưới đây cho thấy biểu đồ mật độ của hạt nhân trọng lượng mẫu đi qua đường ống tối ưu hóa cộng tác.

collaborative optimization density plot

Kết quả là một mô hình triển khai lượng tử hóa với số lượng giá trị duy nhất giảm đi cũng như số lượng trọng số thưa thớt đáng kể, tùy thuộc vào độ thưa thớt mục tiêu được chỉ định tại thời điểm huấn luyện. Ngoài các ưu điểm nén mô hình đáng kể, hỗ trợ phần cứng cụ thể có thể tận dụng lợi thế của các mô hình phân cụm, thưa thớt này để giảm đáng kể độ trễ suy luận.

Kết quả

Dưới đây là một số độ chính xác và kết quả nén mà chúng tôi thu được khi thử nghiệm với các đường dẫn tối ưu hóa cộng tác PQAT và CQAT.

Đào tạo nhận thức về số lượng hóa (PQAT)

Người mẫu vật phẩm Đường cơ sở Mô hình cắt tỉa (50% thưa thớt) Mô hình QAT Mô hình PQAT
DS-CNN-L FP32 Top1 Độ chính xác 95,23% 94,80% (INT8 giả) 94,721% (INT8 giả) 94,18%
Lượng tử hóa số nguyên đầy đủ INT8 94,48% 93,80% 94,72% 94,13%
Nén 528.128 → 434.879 (17,66%) 528.128 → 334.154 (36,73%) 512.224 → 403.261 (21,27%) 512.032 → 303.997 (40,63%)
Mobilenet_v1-224 FP32 Độ chính xác hàng đầu 1 70,99% 70,11% (INT8 giả) 70,67% (INT8 giả) 70,29%
Lượng tử hóa số nguyên đầy đủ INT8 69,37% 67,82% 70,67% 70,29%
Nén 4,665,520 → 3,880,331 (16,83%) 4,665,520 → 2,939,734 (37,00%) 4.569.416 → 3.808.781 (16,65%) 4.569.416 → 2.869.600 (37,20%)

Đào tạo nhận thức lượng tử hóa bảo toàn cụm (CQAT)

Người mẫu vật phẩm Đường cơ sở Mô hình cụm Mô hình QAT Mô hình CQAT
Mobilenet_v1 trên CIFAR-10 FP32 Top1 Độ chính xác 94,88% 94,48% (INT8 giả) 94,80% (Giả mạo INT8) 94,60%
Lượng tử hóa số nguyên đầy đủ INT8 94,65% 94,41% 94,77% 94,52%
Kích thước 3,00 MB 2,00 MB 2,84 MB 1,94 MB
Mobilenet_v1 trên ImageNet FP32 Độ chính xác hàng đầu 1 71,07% 65,30% (INT8 giả) 70,39% (INT8 giả) 65,35%
Lượng tử hóa số nguyên đầy đủ INT8 69,34% 60,60% 70,35% 65,42%
Nén 4,665,568 → 3,886,277 (16,7%) 4,665,568 → 3,035,752 (34,9%) 4.569.416 → 3.804.871 (16,7%) 4,569,472 → 2,912,655 (36,25%)

Kết quả CQAT và PCQAT cho các mô hình được nhóm trên mỗi kênh

Các kết quả dưới đây thu được với kỹ thuật phân cụm trên mỗi kênh . Chúng minh họa rằng nếu các lớp phức hợp của mô hình được nhóm lại trên mỗi kênh, thì độ chính xác của mô hình sẽ cao hơn. Nếu mô hình của bạn có nhiều lớp phức hợp, thì chúng tôi khuyên bạn nên phân cụm trên mỗi kênh. Tỷ lệ nén vẫn giữ nguyên, nhưng độ chính xác của mô hình sẽ cao hơn. Đường ống tối ưu hóa mô hình là 'cụm -> cụm bảo toàn QAT -> lượng tử hóa sau đào tạo, int8' trong các thử nghiệm của chúng tôi.

Người mẫu Clustered -> CQAT, int8 được lượng tử hóa Được phân nhóm trên mỗi kênh -> CQAT, int8 lượng tử hóa
DS-CNN-L 95,949% 96,44%
MobileNet-V2 71,538% 72,638%
MobileNet-V2 (đã lược bớt) 71,45% 71,901%

Các ví dụ

Để có các ví dụ đầu cuối về các kỹ thuật tối ưu hóa cộng tác được mô tả ở đây, vui lòng tham khảo sổ ghi chép ví dụ CQAT , PQAT , phân cụm bảo toàn độ thưa thớtPCQAT .