การหาปริมาณหลังการฝึกประกอบด้วยเทคนิคทั่วไปในการลดเวลาแฝงของตัวเร่งความเร็วของ CPU และฮาร์ดแวร์ การประมวลผล กำลังไฟฟ้า และขนาดโมเดลโดยลดความแม่นยำของโมเดลลงเพียงเล็กน้อย เทคนิคเหล่านี้สามารถทำได้บนโมเดล float TensorFlow ที่ผ่านการฝึกอบรมมาแล้ว และนำไปใช้ระหว่างการแปลง TensorFlow Lite เทคนิคเหล่านี้เปิดใช้งานเป็นตัวเลือกในตัว แปลง TensorFlow Lite
หากต้องการข้ามไปยังตัวอย่างตั้งแต่ต้นจนจบ โปรดดูบทแนะนำต่อไปนี้:
- การหาปริมาณช่วงไดนามิกหลังการฝึก
- หลังการฝึก การหาจำนวนเต็มเต็มจำนวน
- ภายหลังการฝึกอบรม float16 quantization
การวัดน้ำหนัก
สามารถแปลงน้ำหนักเป็นประเภทได้โดยมีความแม่นยำลดลง เช่น ทุ่นลอย 16 บิตหรือจำนวนเต็ม 8 บิต โดยทั่วไปเราแนะนำให้ลอยตัว 16 บิตสำหรับการเร่งความเร็ว GPU และจำนวนเต็ม 8 บิตสำหรับการทำงานของ CPU
ตัวอย่างเช่น นี่คือวิธีการระบุการควอนไทซ์น้ำหนักจำนวนเต็ม 8 บิต:
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()
ในการอนุมาน ส่วนที่เข้มข้นที่สุดจะถูกคำนวณด้วย 8 บิตแทนที่จะเป็นทศนิยม มีค่าใช้จ่ายด้านประสิทธิภาพเวลาอนุมานบางส่วน ซึ่งสัมพันธ์กับการวัดปริมาณทั้งน้ำหนักและการเปิดใช้งานด้านล่าง
สำหรับข้อมูลเพิ่มเติม โปรดดูคู่มือการวัดค่า หลังการฝึกอบรม TensorFlow Lite
การหาจำนวนเต็มของตุ้มน้ำหนักและการเปิดใช้งาน
ปรับปรุงเวลาแฝง การประมวลผล และการใช้พลังงาน และเข้าถึงตัวเร่งฮาร์ดแวร์ที่เป็นจำนวนเต็มเท่านั้นโดยทำให้แน่ใจว่าทั้งน้ำหนักและการเปิดใช้งานได้รับการกำหนดปริมาณ ต้องใช้ชุดข้อมูลตัวแทนขนาดเล็ก
import tensorflow as tf
def representative_dataset_gen():
for _ in range(num_calibration_steps):
# Get sample input data as a numpy array in a method of your choosing.
yield [input]
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_quant_model = converter.convert()
โมเดลผลลัพธ์จะยังคงรับอินพุตและเอาต์พุตแบบลอยตัวเพื่อความสะดวก
สำหรับข้อมูลเพิ่มเติม โปรดดูคู่มือการวัดค่า หลังการฝึกอบรม TensorFlow Lite