การหาปริมาณหลังการฝึกอบรมประกอบด้วยเทคนิคทั่วไปในการลดเวลาแฝงของตัวเร่งความเร็วของ 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