Được duy trì bởi Arm ML Tooling
Tài liệu này cung cấp thông tin 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 cho quá trình 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 nhiều kỹ thuật khác nhau để tạo ra một mô hình mà khi triển khai thể hiện sự cân bằng tốt nhất về 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 tối ưu hóa hợp tác là xây dựng 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:
- Cắt tỉa trọng lượng
- Phân cụm trọng số
Lượng tử hóa
Vấn đề nảy sinh khi cố gắng kết hợp các kỹ thuật này lại 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 duy trì tính thưa thớt do API cắt tỉa đưa ra. Để 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:
- Phân cụm bảo tồn thưa thớt
- Đào tạo nhận thức lượng tử hóa bảo toàn thưa thớt (PQAT)
- Đào tạo nhận thức lượng tử hóa bảo toàn cụm (CQAT)
- Đào tạo nhận thức lượng tử hóa bảo toàn thưa thớt và cụm
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ơ đồ bên dưới minh họa một số lộ trình triển khai có thể được khám phá khi tìm kiếm mô hình với các đặc điểm triển khai mong muốn, trong đó các nút lá là các 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. Màu xanh lục biểu thị các bước cần đào tạo lại/tinh chỉnh và đường viền nét đứt 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 để lấy mô hình tại một nút nhất định được chỉ định trong nhãn tương ứng.
Đường dẫn triển khai trực tiếp, chỉ lượng tử hóa (sau đào tạo hoặc QAT) bị 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ể đạt yêu cầu và đạt được sự cân bằng giữa độ trễ/độ chính xác 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, 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 thêm và lặp lại cho đến khi mô hình được tối ưu hóa hoàn toàn (cắt tỉa, 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 trọng lượng mẫu đi qua đường ống tối ưu hóa cộng tác.
Kết quả là một mô hình triển khai được lượng tử hóa với số lượng giá trị duy nhất giảm cũng như số lượng trọng số thưa đáng kể, tùy thuộc vào độ thưa mục tiêu được chỉ định tại thời điểm đào tạo. Ngoài những lợi thế đáng kể về nén mô hình, hỗ trợ phần cứng cụ thể có thể tận dụng 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ố kết quả nén và độ chính xác mà chúng tôi thu được khi thử nghiệm các đường dẫn tối ưu hóa cộng tác PQAT và CQAT.
Đào tạo nhận thức lượng tử hóa bảo toàn thưa thớt (PQAT)
Người mẫu | Mặt hàng | Đường cơ sở | Mô hình cắt tỉa (độ thưa thớt 50%) | Mô hình QAT | Mô hình PQAT |
---|---|---|---|---|---|
DS-CNN-L | Độ chính xác Top1 của FP32 | 95,23% | 94,80% | (INT8 giả) 94,721% | (INT8 giả) 94,128% |
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%) | |
Mạng di động_v1-224 | Độ chính xác hàng đầu của FP32 | 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 quản cụm (CQAT)
Người mẫu | Mặt hàng | Đường cơ sở | Mô hình cụm | Mô hình QAT | Mô hình CQAT |
---|---|---|---|---|---|
Mobilenet_v1 trên CIFAR-10 | Độ chính xác Top1 của FP32 | 94,88% | 94,48% | (INT8 giả) 94,80% | (INT8 giả) 94,60% |
Lượng tử hóa số nguyên đầy đủ INT8 | 94,65% | 94,41% | 94,77% | 94,52% | |
Kích cỡ | 3,00MB | 2,00 MB | 2,84MB | 1,94 MB | |
Mobilenet_v1 trên ImageNet | Độ chính xác hàng đầu của FP32 | 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
Kết quả dưới đây thu được bằng kỹ thuật phân cụm trên mỗi kênh . Họ minh họa rằng nếu các lớp chậ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 chậ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. Quy trình tối ưu hóa mô hình là 'phân cụm -> bảo toàn QAT cụm -> 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 Được nhóm -> CQAT, lượng tử hóa int8 Được nhóm trên mỗi kênh -> CQAT, lượng tử hóa int8 DS-CNN-L 95,949% 96,44% MobileNet-V2 71,538% 72,638% MobileNet-V2 (cắt tỉa) 71,45% 71,901%
Ví dụ
Để biết các ví dụ toàn diện 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ụ về CQAT , PQAT , phân cụm bảo toàn thưa thớt và PCQAT .