การเพิ่มประสิทธิภาพการทำงานร่วมกัน

บำรุงรักษาโดย Arm ML Tooling

เอกสารนี้ให้ภาพรวมของ API ทดลองสำหรับการรวมเทคนิคต่างๆ เพื่อเพิ่มประสิทธิภาพโมเดลการเรียนรู้ของเครื่องสำหรับการปรับใช้

ภาพรวม

การเพิ่มประสิทธิภาพการทำงานร่วมกันเป็นกระบวนการที่ครอบคลุมซึ่งครอบคลุมเทคนิคต่างๆ เพื่อสร้างแบบจำลองที่เมื่อนำไปใช้งาน จะแสดงความสมดุลที่ดีที่สุดของคุณลักษณะเป้าหมาย เช่น ความเร็วในการอนุมาน ขนาดแบบจำลอง และความแม่นยำ

แนวคิดของการเพิ่มประสิทธิภาพร่วมกันคือการสร้างเทคนิคเฉพาะบุคคลโดยประยุกต์ใช้ทีละเทคนิคเพื่อให้บรรลุผลการปรับให้เหมาะสมที่สะสมไว้ สามารถผสมผสานการปรับให้เหมาะสมต่อไปนี้ได้หลากหลาย:

ปัญหาที่เกิดขึ้นเมื่อพยายามเชื่อมโยงเทคนิคเหล่านี้เข้าด้วยกันคือการใช้เทคนิคหนึ่งมักจะทำลายผลลัพธ์ของเทคนิคก่อนหน้า ทำลายผลประโยชน์โดยรวมของการใช้เทคนิคทั้งหมดพร้อมกัน ตัวอย่างเช่น การจัดกลุ่มไม่ได้รักษาความกระจัดกระจายที่แนะนำโดย pruning API เพื่อแก้ไขปัญหานี้ เราขอแนะนำเทคนิคการเพิ่มประสิทธิภาพการทำงานร่วมกันเชิงทดลองต่อไปนี้:

สิ่งเหล่านี้มีเส้นทางการปรับใช้หลายเส้นทางที่สามารถใช้เพื่อบีบอัดโมเดลแมชชีนเลิร์นนิงและใช้ประโยชน์จากการเร่งด้วยฮาร์ดแวร์ ณ เวลาอนุมาน แผนภาพด้านล่างแสดงเส้นทางการปรับใช้ต่างๆ ที่สามารถสำรวจได้ในการค้นหาโมเดลที่มีคุณสมบัติการปรับใช้ที่ต้องการ โดยที่โหนดปลายสุดเป็นโมเดลที่พร้อมปรับใช้ ซึ่งหมายความว่าเป็นแบบปริมาณบางส่วนหรือทั้งหมดและอยู่ในรูปแบบ tflite การเติมสีเขียวบ่งบอกถึงขั้นตอนที่จำเป็นต้องมีการฝึกสอนใหม่/การปรับแต่งอย่างละเอียด และเส้นขอบสีแดงประจะเน้นขั้นตอนการเพิ่มประสิทธิภาพการทำงานร่วมกัน เทคนิคที่ใช้ในการรับแบบจำลองที่โหนดที่กำหนดจะระบุไว้ในป้ายกำกับที่เกี่ยวข้อง

collaborative optimization

เส้นทางการปรับใช้โดยตรงแบบเชิงปริมาณเท่านั้น (หลังการฝึกอบรมหรือ QAT) ไม่ได้ระบุไว้ในภาพด้านบน

แนวคิดก็คือการเข้าถึงโมเดลที่ได้รับการปรับปรุงให้เหมาะสมที่สุดในระดับที่สามของแผนผังการปรับใช้ข้างต้น อย่างไรก็ตาม ระดับอื่นๆ ของการเพิ่มประสิทธิภาพสามารถพิสูจน์ได้ว่าน่าพอใจและบรรลุถึงค่าหน่วงการอนุมาน/ความแม่นยำในการอนุมานที่ต้องการ ซึ่งในกรณีนี้ไม่จำเป็นต้องปรับให้เหมาะสมอีกต่อไป กระบวนการฝึกอบรมที่แนะนำคือ ค่อยๆ ดำเนินการตามระดับของแผนผังการปรับใช้ที่เกี่ยวข้องกับสถานการณ์การปรับใช้เป้าหมาย และดูว่าแบบจำลองเป็นไปตามข้อกำหนดเวลาแฝงในการอนุมานหรือไม่ และหากไม่เป็นเช่นนั้น ให้ใช้เทคนิคการปรับให้เหมาะสมการทำงานร่วมกันที่เกี่ยวข้องเพื่อบีบอัดโมเดลเพิ่มเติมและทำซ้ำ จนกว่าแบบจำลองจะได้รับการปรับให้เหมาะสมที่สุด (ตัด แบ่งกลุ่ม และหาปริมาณ) หากจำเป็น

รูปด้านล่างแสดงแผนภาพความหนาแน่นของเคอร์เนลน้ำหนักตัวอย่างที่ดำเนินการผ่านไปป์ไลน์การปรับให้เหมาะสมร่วมกัน

collaborative optimization density plot

ผลลัพธ์ที่ได้คือแบบจำลองการใช้งานเชิงปริมาณโดยมีจำนวนค่าที่ไม่ซ้ำกันลดลง รวมถึงน้ำหนักเบาบางที่มีนัยสำคัญ ขึ้นอยู่กับความกระจัดกระจายของเป้าหมายที่ระบุในเวลาการฝึกอบรม นอกเหนือจากข้อได้เปรียบด้านการบีบอัดโมเดลที่สำคัญแล้ว การสนับสนุนฮาร์ดแวร์เฉพาะยังสามารถใช้ประโยชน์จากโมเดลแบบคลัสเตอร์แบบกระจัดกระจายเหล่านี้ เพื่อลดเวลาแฝงในการอนุมานได้อย่างมาก

ผลลัพธ์

ด้านล่างนี้คือผลลัพธ์ความแม่นยำและการบีบอัดที่เราได้รับเมื่อทดลองกับเส้นทางการปรับให้เหมาะสมร่วมกันของ PQAT และ CQAT

การฝึกอบรมการรับรู้เชิงปริมาณเพื่อรักษาความกระจัดกระจาย (PQAT)

แบบอย่าง รายการ พื้นฐาน แบบตัดแต่งกิ่ง (กระจัดกระจาย 50%) รุ่น QAT รุ่น PQAT
DS-CNN-L ความแม่นยำ FP32 Top1 95.23% 94.80% (ปลอม INT8) 94.721% (INT8 ปลอม) 94.128%
การหาปริมาณจำนวนเต็ม INT8 94.48% 93.80% 94.72% 94.13%
การบีบอัด 528,128 → 434,879 (17.66%) 528,128 → 334,154 (36.73%) 512,224 → 403,261 (21.27%) 512,032 → 303,997 (40.63%)
โมบายเน็ต_v1-224 FP32 ความแม่นยำอันดับ 1 70.99% 70.11% (ปลอม INT8) 70.67% (ปลอม INT8) 70.29%
การหาปริมาณจำนวนเต็ม INT8 69.37% 67.82% 70.67% 70.29%
การบีบอัด 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%)

การฝึกอบรมการรับรู้เชิงปริมาณการรักษาคลัสเตอร์ (CQAT)

แบบอย่าง รายการ พื้นฐาน โมเดลแบบคลัสเตอร์ รุ่น QAT โมเดล CQAT
Mobilenet_v1 บน CIFAR-10 ความแม่นยำ FP32 Top1 94.88% 94.48% (ปลอม INT8) 94.80% (ปลอม INT8) 94.60%
การหาปริมาณจำนวนเต็ม INT8 94.65% 94.41% 94.77% 94.52%
ขนาด 3.00 ลบ 2.00 ลบ 2.84 ลบ 1.94 ลบ
Mobilenet_v1 บน ImageNet FP32 ความแม่นยำอันดับ 1 71.07% 65.30% (INT8 ปลอม) 70.39% (ปลอม INT8) 65.35%
การหาปริมาณจำนวนเต็ม INT8 69.34% 60.60% 70.35% 65.42%
การบีบอัด 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%)

ผลลัพธ์ CQAT และ PCQAT สำหรับโมเดลที่คลัสเตอร์ต่อแชนเนล

ผลลัพธ์ด้านล่างได้มาจากเทคนิค การจัดกลุ่มต่อช่องสัญญาณ พวกเขาแสดงให้เห็นว่าหากเลเยอร์แบบบิดเบี้ยวของโมเดลถูกคลัสเตอร์ต่อแชนเนล ความแม่นยำของโมเดลก็จะสูงขึ้น หากโมเดลของคุณมีเลเยอร์แบบหมุนวนหลายชั้น เราขอแนะนำให้ทำคลัสเตอร์ต่อแชนเนล อัตราส่วนการบีบอัดยังคงเท่าเดิม แต่ความแม่นยำของโมเดลจะสูงขึ้น ไปป์ไลน์การปรับให้เหมาะสมของโมเดลคือ 'คลัสเตอร์ -> คลัสเตอร์ที่รักษา QAT -> การหาปริมาณหลังการฝึกอบรม, int8' ในการทดลองของเรา

แบบอย่าง คลัสเตอร์ -> CQAT, int8 เชิงปริมาณ ทำคลัสเตอร์ต่อช่อง -> CQAT, int8 quantized
DS-CNN-L 95.949% 96.44%
โมบายเน็ต-V2 71.538% 72.638%
MobileNet-V2 (ตัดแต่ง) 71.45% 71.901%

ตัวอย่าง

สำหรับตัวอย่างแบบ end-to-end ของเทคนิคการเพิ่มประสิทธิภาพการทำงานร่วมกันที่อธิบายไว้ที่นี่ โปรดดูสมุดบันทึกตัวอย่าง CQAT , PQAT , sparsity-preserving Clustering และ PCQAT