ดูแลโดย TensorFlow Model Optimization
quantization มีสองรูปแบบ: หลังการฝึกอบรม quantization และการฝึกอบรม quantization ตระหนักถึง เริ่มต้นด้วย การหาปริมาณหลังการฝึก เนื่องจากใช้งานง่ายกว่า แม้ว่าการฝึกอบรมเชิงปริมาณโดยรู้เท่าทันมักจะดีกว่าสำหรับความแม่นยำของแบบจำลอง
หน้านี้ให้ภาพรวมเกี่ยวกับการฝึกอบรมการรู้เชิงปริมาณเพื่อช่วยคุณพิจารณาว่าเหมาะสมกับกรณีการใช้งานของคุณอย่างไร
- หากต้องการเจาะลึกตัวอย่างแบบ end-to-end ให้ดู ตัวอย่างการฝึกอบรม quantization Aware
- หากต้องการค้นหา API ที่คุณต้องการอย่างรวดเร็วสำหรับกรณีการใช้งานของคุณ ให้ดู คำแนะนำที่ครอบคลุมการฝึกอบรมเกี่ยวกับ quantization Aware
ภาพรวม
การฝึกอบรมการรู้เท่าทันการควอนตัมจะเลียนแบบการหาปริมาณเวลาการอนุมาน โดยสร้างแบบจำลองที่เครื่องมือดาวน์สตรีมจะใช้เพื่อสร้างแบบจำลองเชิงปริมาณจริง โมเดลเชิงปริมาณใช้ความแม่นยำต่ำกว่า (เช่น 8-bit แทนที่จะเป็น 32-bit float) ซึ่งนำไปสู่ประโยชน์ในระหว่างการปรับใช้
ปรับใช้ด้วย quantization
Quantization นำมาซึ่งการปรับปรุงผ่านการบีบอัดแบบจำลองและการลดเวลาในการตอบสนอง ด้วยค่าเริ่มต้นของ API ขนาดโมเดลจะลดลง 4x และโดยทั่วไปแล้วเราเห็นการปรับปรุงระหว่าง 1.5 - 4x ของเวลาในการตอบสนองของ CPU ในแบ็กเอนด์ที่ทดสอบ ในที่สุด จะเห็นการปรับปรุงเวลาแฝงบนตัวเร่งการเรียนรู้ของเครื่องที่เข้ากันได้ เช่น EdgeTPU และ NNAPI
เทคนิคนี้ใช้ในการผลิตในกรณีการใช้งานคำพูด การมองเห็น ข้อความ และการแปล ปัจจุบันโค้ดสนับสนุน ชุดย่อยของโมเดลเหล่านี้
ทดลองกับการหาปริมาณและฮาร์ดแวร์ที่เกี่ยวข้อง
ผู้ใช้สามารถกำหนดค่าพารามิเตอร์ quantization (เช่น จำนวนบิต) และอัลกอริธึมพื้นฐานในระดับหนึ่ง โปรดทราบว่าด้วยการเปลี่ยนแปลงเหล่านี้จากค่าเริ่มต้นของ API ขณะนี้ยังไม่มีเส้นทางที่รองรับสำหรับการปรับใช้กับแบ็กเอนด์ ตัวอย่างเช่น การแปลง TFLite และการใช้งานเคอร์เนลรองรับเฉพาะ quantization 8 บิตเท่านั้น
API เฉพาะสำหรับการกำหนดค่านี้เป็นรุ่นทดลองและไม่อยู่ภายใต้ความเข้ากันได้แบบย้อนหลัง
ความเข้ากันได้ของ API
ผู้ใช้สามารถใช้ quantization กับ API ต่อไปนี้ได้:
- การสร้างแบบจำลอง:
tf.keras
ที่มีเฉพาะรุ่นตามลำดับและแบบใช้งานได้ - เวอร์ชัน TensorFlow: TF 2.x สำหรับ tf-nightly
- ไม่
tf.compat.v1
ที่มีแพ็คเกจ TF 2.X
- ไม่
- โหมดการดำเนินการ TensorFlow: การดำเนินการอย่างกระตือรือร้น
อยู่ในแผนงานของเราที่จะเพิ่มการสนับสนุนในด้านต่อไปนี้:
- การสร้างแบบจำลอง: ชี้แจงว่า Subclassed Models มีการจำกัดการไม่รองรับอย่างไร
- การฝึกอบรมแบบกระจาย:
tf.distribute
เมทริกซ์สนับสนุนทั่วไป
การสนับสนุนมีให้บริการในพื้นที่ต่อไปนี้:
- ความครอบคลุมของโมเดล: โมเดลที่ใช้ เลเยอร์ ในรายการที่อนุญาต , BatchNormalization เมื่อตามหลังเลเยอร์ Conv2D และ DepthwiseConv2D และในบางกรณี
Concat
- การเร่งความเร็วด้วยฮาร์ดแวร์: ค่าเริ่มต้น API ของเราเข้ากันได้กับการเร่งความเร็วบนแบ็กเอนด์ EdgeTPU, NNAPI และ TFLite และอื่นๆ ดูคำเตือนในแผนงาน
- ปรับใช้ด้วยการหาปริมาณ: รองรับเฉพาะการหาปริมาณต่อแกนสำหรับเลเยอร์แบบ Convolutional เท่านั้น ไม่รองรับการหาปริมาณต่อเมตริกซ์
อยู่ในแผนงานของเราที่จะเพิ่มการสนับสนุนในด้านต่อไปนี้:
- ความครอบคลุมของรุ่น: ขยายเพื่อรวม RNN/LSTM และการรองรับ Concat ทั่วไป
- การเร่งด้วยฮาร์ดแวร์: ตรวจสอบให้แน่ใจว่าตัวแปลง TFLite สามารถสร้างโมเดลจำนวนเต็มได้ ดู ปัญหานี้ สำหรับรายละเอียด
- ทดลองกับกรณีการใช้งาน quantization:
- ทดลองกับอัลกอริธึมการหาปริมาณที่ครอบคลุมเลเยอร์ Keras หรือต้องใช้ขั้นตอนการฝึกอบรม
- ทำให้ API มีเสถียรภาพ
ผลลัพธ์
การจำแนกรูปภาพด้วยเครื่องมือ
แบบอย่าง | ความแม่นยำ Top-1 แบบไม่ใช้ปริมาณ | ความแม่นยำเชิงปริมาณ 8 บิต |
---|---|---|
MobilenetV1 224 | 71.03% | 71.06% |
Resnet v1 50 | 76.3% | 76.1% |
MobilenetV2 224 | 70.77% | 70.01% |
แบบจำลองได้รับการทดสอบบน Imagenet และประเมินทั้งใน TensorFlow และ TFLite
การจำแนกรูปภาพสำหรับเทคนิค
แบบอย่าง | ความแม่นยำ Top-1 แบบไม่ใช้ปริมาณ | ความแม่นยำเชิงปริมาณ 8 บิต |
---|---|---|
Nasnet-Mobile | 74% | 73% |
Resnet-v2 50 | 75.6% | 75% |
แบบจำลองได้รับการทดสอบบน Imagenet และประเมินทั้งใน TensorFlow และ TFLite
ตัวอย่าง
นอกจาก ตัวอย่างการฝึกอบรมการรู้เชิงปริมาณ แล้ว ให้ดูตัวอย่างต่อไปนี้:
- โมเดล CNN ในงานจัดประเภทตัวเลขที่เขียนด้วยลายมือของ MNIST พร้อมการหาปริมาณ: code
สำหรับข้อมูลเบื้องต้นเกี่ยวกับสิ่งที่คล้ายกัน โปรดดู เอกสาร การอนุมานเฉพาะจำนวนเต็มและเลขคณิตเท่านั้นที่ Quantization and Training of Neural Networks บทความนี้จะแนะนำแนวคิดบางอย่างที่เครื่องมือนี้ใช้ การใช้งานไม่เหมือนกันทุกประการ และยังมีแนวคิดเพิ่มเติมที่ใช้ในเครื่องมือนี้ (เช่น การหาปริมาณตามแกน)