קוונטיזציה לאחר אימון כוללת טכניקות כלליות להפחתת זמן האחזור של המעבד והמאיץ החומרה, העיבוד, ההספק וגודל הדגם עם ירידה קטנה ברמת דיוק המודל. ניתן לבצע טכניקות אלו על מודל TensorFlow צף שעבר הכשרה וליישם במהלך המרת TensorFlow Lite. טכניקות אלו מופעלות כאפשרויות בממיר TensorFlow Lite .
כדי לקפוץ ישירות לדוגמאות מקצה לקצה, עיין במדריכי הלימוד הבאים:
- קוונטיזציה של טווח דינמי לאחר אימון
- קוונטיזציה מלאה של מספרים שלמים לאחר אימון
- קוונטיזציה לצוף16 לאחר אימון
כימות משקלים
ניתן להמיר משקולות לסוגים עם דיוק מופחת, כגון צפים של 16 סיביות או מספרים שלמים של 8 סיביות. בדרך כלל אנו ממליצים על צפים של 16 סיביות להאצת GPU ומספר שלם של 8 סיביות לביצוע מעבד.
לדוגמה, הנה כיצד לציין כימת משקל של 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.