มีคำถาม? เชื่อมต่อกับชุมชนที่ฟอรัม TensorFlow เยี่ยมชมฟอรัม

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

ดูแลโดย 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 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

ตัวอย่าง

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

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

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