หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

การจัดกลุ่มน้ำหนัก

ดูแลโดย Arm ML Tooling

เอกสารนี้ให้ภาพรวมเกี่ยวกับการจัดกลุ่มน้ำหนักเพื่อช่วยคุณพิจารณาว่าเหมาะสมกับกรณีการใช้งานของคุณอย่างไร

ภาพรวม

การทำคลัสเตอร์หรือการแบ่งน้ำหนักช่วยลดจำนวนค่าน้ำหนักที่ไม่ซ้ำกันในโมเดลซึ่งนำไปสู่ประโยชน์สำหรับการปรับใช้ ขั้นแรกจะจัดกลุ่มน้ำหนักของแต่ละเลเยอร์เป็นคลัสเตอร์ N จากนั้นแชร์ค่าเซนทรอยด์ของคลัสเตอร์สำหรับน้ำหนักทั้งหมดที่อยู่ในคลัสเตอร์

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

เราได้ทดลองกับการจัดกลุ่มในงานการมองเห็นและการพูด เราได้เห็นการปรับปรุงการบีบอัดโมเดลมากขึ้นถึง 5 เท่าโดยสูญเสียความแม่นยำน้อยที่สุดดังแสดงใน ผลลัพธ์ ด้านล่าง

โปรดทราบว่าการจัดกลุ่มจะให้ประโยชน์ที่ลดลงสำหรับ Convolution และเลเยอร์ที่หนาแน่นซึ่งนำหน้าเลเยอร์การทำให้เป็นมาตรฐานของแบทช์รวมถึงการใช้ร่วมกับการหาปริมาณต่อแกนหลังการฝึกอบรม

เมทริกซ์ความเข้ากันได้ของ API

ผู้ใช้สามารถใช้การทำคลัสเตอร์ด้วย API ต่อไปนี้:

  • การสร้างโมเดล: tf.keras มีเฉพาะโมเดลตามลำดับและฟังก์ชันเท่านั้น
  • เวอร์ชัน TensorFlow: TF 1.x สำหรับเวอร์ชัน 1.14+ และ 2.x
    • tf.compat.v1 มีแพ็กเกจ TF tf.compat.v2 และ tf.compat.v2 มีแพ็กเกจ TF 1.X ไม่รองรับ
  • โหมดการดำเนินการ TensorFlow: ทั้งกราฟและความกระตือรือร้น

ผล

การจำแนกภาพ

รุ่น ต้นฉบับ คลัสเตอร์
ความแม่นยำอันดับ 1 (%) ขนาดของไฟล์บีบอัด. tflite (MB) การกำหนดค่า # ของคลัสเตอร์ ความแม่นยำอันดับ 1 (%) ขนาดของไฟล์บีบอัด. tflite (MB)
MobileNetV1 71.02 14.96
Selective (Conv2D 3 เลเยอร์สุดท้าย) 256, 256, 32 70.62 8.42
เต็ม (เลเยอร์ Conv2D ทั้งหมด) 64 66.07 2.98
MobileNetV2 72.29 12.90
Selective (Conv2D 3 เลเยอร์สุดท้าย) 256, 256, 32 72.31 7.00 น
เต็ม (เลเยอร์ Conv2D ทั้งหมด) 32 69.33 2.60

แบบจำลองได้รับการฝึกฝนและทดสอบบน ImageNet

การจำคำหลัก

รุ่น ต้นฉบับ คลัสเตอร์
ความแม่นยำอันดับ 1 (%) ขนาดของไฟล์บีบอัด. tflite (MB) การกำหนดค่า # ของคลัสเตอร์ ความแม่นยำอันดับ 1 (%) ขนาดของไฟล์บีบอัด. tflite (MB)
DS-CNN-L 95.03 1.5 เต็ม 32 94.71 0.3

โมเดลได้รับการฝึกฝนและทดสอบเกี่ยวกับ SpeechCommands v0.02

  1. ทำให้โมเดล Keras เป็นไฟล์. h5
  2. แปลงไฟล์. h5 เป็น. tflite โดยใช้ TFLiteConverter.from_keras_model_file()
  3. บีบอัดไฟล์. tflite ลงใน zip

ตัวอย่าง

นอกเหนือจากตัวอย่างการทำ คลัสเตอร์ Weight ใน Keras แล้วโปรดดูตัวอย่างต่อไปนี้:

  • จัดกลุ่มน้ำหนักของแบบจำลอง CNN ที่ได้รับการฝึกฝนบนชุดข้อมูลการจำแนกตัวเลขหลักที่เขียนด้วยลายมือของ MNIST: รหัส

การใช้งานการจัดกลุ่มน้ำหนักขึ้นอยู่กับ Deep Compression: การบีบอัด Deep Neural Networks ด้วยการตัดแต่งกิ่ง, กระดาษ Quantization ที่ผ่านการฝึกอบรมและ Huffman Coding ดูบทที่ 3 ชื่อเรื่อง การหาปริมาณและการแบ่งน้ำหนักที่ผ่านการฝึกอบรม