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

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

ดูแลโดย Arm ML Tooling

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

ภาพรวม

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

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

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

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

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

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

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

ผลลัพธ์

การจำแนกรูปภาพ

แบบอย่าง ต้นฉบับ คลัสเตอร์
ความแม่นยำ 1 อันดับแรก (%) ขนาดของไฟล์ .tflite ที่บีบอัด (MB) การกำหนดค่า # ของคลัสเตอร์ ความแม่นยำ 1 อันดับแรก (%) ขนาดของไฟล์ .tflite ที่บีบอัด (MB)
MobileNetV1 70.976 14.97
Selective (เลเยอร์ Conv2D 3 อันสุดท้าย) 16, 16, 16 ปี 70.294 7.69
Selective (เลเยอร์ Conv2D 3 อันสุดท้าย) 32, 32, 32 70.69 8.22
เต็ม (เลเยอร์ Conv2D ทั้งหมด) 32 69.4 4.43
MobileNetV2 71.778 12.38
Selective (เลเยอร์ Conv2D 3 อันสุดท้าย) 16, 16, 16 ปี 70.742 6.68
Selective (เลเยอร์ Conv2D 3 อันสุดท้าย) 32, 32, 32 70.926 7.03
เต็ม (เลเยอร์ Conv2D ทั้งหมด) 32 69.744 4.05

โมเดลเหล่านี้ได้รับการฝึกอบรมและทดสอบบน ImageNet

การจำคีย์เวิร์ด

แบบอย่าง ต้นฉบับ คลัสเตอร์
ความแม่นยำ 1 อันดับแรก (%) ขนาดของไฟล์ .tflite ที่บีบอัด (MB) การกำหนดค่า # ของคลัสเตอร์ ความแม่นยำ 1 อันดับแรก (%) ขนาดของไฟล์ .tflite ที่บีบอัด (MB)
DS-CNN-L 95.233 1.46
เต็ม (เลเยอร์ Conv2D ทั้งหมด) 32 95.09 0.39
เต็ม (เลเยอร์ Conv2D ทั้งหมด) 8 94.272 0.27

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

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

ตัวอย่าง

นอกเหนือจากตัวอย่างการ จัดกลุ่มน้ำหนักใน Keras โปรดดูตัวอย่างต่อไปนี้:

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

การนำการจัดกลุ่มน้ำหนักไปใช้นั้นใช้ Deep Compression: Compressing Deep Neural Networks With Pruning, Trained Quantization และ Huffman Coding paper ดูบทที่ 3 ชื่อ Trained Quantization and Weight Sharing