אופטימיזציה משותפת

מתוחזק על ידי Arm ML Tooling

מסמך זה מספק סקירה כללית של ממשקי API ניסיוניים לשילוב טכניקות שונות כדי לייעל מודלים של למידת מכונה לפריסה.

סקירה כללית

אופטימיזציה שיתופית היא תהליך כולל הכולל טכניקות שונות לייצור מודל שבפריסה מציג את האיזון הטוב ביותר בין מאפייני יעד כגון מהירות הסקה, גודל דגם ודיוק.

הרעיון של אופטימיזציות שיתופיות הוא לבנות על טכניקות בודדות על ידי יישום שלהן בזו אחר זו כדי להשיג את אפקט האופטימיזציה המצטבר. שילובים שונים של האופטימיזציות הבאות אפשריים:

הבעיה המתעוררת כאשר מנסים לשרשר את הטכניקות הללו יחד היא שיישום של אחת מהן בדרך כלל הורס את התוצאות של הטכניקה הקודמת, ומקלקל את התועלת הכוללת של יישום כולן בו זמנית; לדוגמה, חיבור לא שומר על הדלילות שהציג ממשק ה-API לגזם. כדי לפתור בעיה זו, אנו מציגים את טכניקות האופטימיזציה הניסיוניות הבאות:

אלה מספקים מספר נתיבי פריסה שניתן להשתמש בהם כדי לדחוס מודל למידת מכונה ולנצל את האצת החומרה בזמן הסקת מסקנות. התרשים שלהלן מדגים מספר נתיבי פריסה שניתן לחקור בחיפוש אחר המודל עם מאפייני הפריסה הרצויים, כאשר צמתי העלים הם מודלים מוכנים לפריסה, כלומר הם מקומתים באופן חלקי או מלא ובפורמט tflite. המילוי הירוק מציין שלבים שבהם נדרש אימון מחדש/כוונן עדין וגבול אדום מקווקו מדגיש את שלבי האופטימיזציה המשותפת. הטכניקה המשמשת להשגת מודל בצומת נתון מצוינת בתווית המתאימה.

collaborative optimization

נתיב הפריסה הישיר, לכימות בלבד (אחרי אימון או QAT) מושמט באיור שלמעלה.

הרעיון הוא להגיע למודל הממוטב במלואו ברמה השלישית של עץ הפריסה לעיל; עם זאת, כל אחת מרמות האופטימיזציה האחרות עשויה להוכיח את עצמה כמשביעת רצון ולהשיג את הפשרה הנדרשת בין זמן חביון/דיוק להסקת מסקנות, ובמקרה זה אין צורך באופטימיזציה נוספת. תהליך ההכשרה המומלץ יהיה לעבור באופן איטרטיבי על הרמות של עץ הפריסה הרלוונטי לתרחיש פריסת היעד ולראות אם המודל ממלא את דרישות ההשהיה של מסקנות, ואם לא, להשתמש בטכניקת האופטימיזציה השיתופית המתאימה כדי לדחוס את המודל ולחזור על עצמו. עד לאופטימיזציה מלאה של המודל (גזם, מקבץ ומכומת), במידת הצורך.

האיור שלהלן מציג את עלילות הצפיפות של גרעין משקל המדגם שעוברים בצינור האופטימיזציה השיתופי.

collaborative optimization density plot

התוצאה היא מודל פריסה כמותי עם מספר מופחת של ערכים ייחודיים וכן מספר משמעותי של משקלים דלילים, בהתאם לדלילות היעד שצוינה בזמן האימון. מלבד יתרונות הדחיסה המשמעותיים של המודל, תמיכת חומרה ספציפית יכולה לנצל את המודלים הדלילים והמקובצים הללו כדי להפחית משמעותית את זמן ההסקה.

תוצאות

להלן כמה תוצאות דיוק ודחיסה שהשגנו בעת ניסויים עם נתיבי אופטימיזציה משותפים של PQAT ו-CQAT.

אימון מודע לכיוונט לשימור דלילות (PQAT)

דֶגֶם פריטים קו בסיס דגם גזום (50% דלילות) דגם QAT דגם PQAT
DS-CNN-L דיוק FP32 Top1 95.23% 94.80% (INT8 מזויף) 94.721% (INT8 מזויף) 94.128%
קוונטיזציה מלאה של מספרים שלמים INT8 94.48% 93.80% 94.72% 94.13%
דְחִיסָה 528,128 → 434,879 (17.66%) 528,128 → 334,154 (36.73%) 512,224 → 403,261 (21.27%) 512,032 → 303,997 (40.63%)
Mobilenet_v1-224 דיוק FP32 Top 1 70.99% 70.11% (INT8 מזויף) 70.67% (INT8 מזויף) 70.29%
קוונטיזציה מלאה של מספרים שלמים INT8 69.37% 67.82% 70.67% 70.29%
דְחִיסָה 4,665,520 → 3,880,331 (16.83%) 4,665,520 → 2,939,734 (37.00%) 4,569,416 → 3,808,781 (16.65%) 4,569,416 → 2,869,600 (37.20%)

אימון מודע לכיוונטיזציה לשימור אשכולות (CQAT)

דֶגֶם פריטים קו בסיס דגם מקובץ דגם QAT דגם CQAT
Mobilenet_v1 ב-CIFAR-10 דיוק FP32 Top1 94.88% 94.48% (INT8 מזויף) 94.80% (INT8 מזויף) 94.60%
קוונטיזציה מלאה של מספרים שלמים INT8 94.65% 94.41% 94.77% 94.52%
גודל 3.00 מגה-בייט 2.00 מגה-בייט 2.84 מגה-בייט 1.94 מגה-בייט
Mobilenet_v1 ב-ImageNet דיוק FP32 Top 1 71.07% 65.30% (INT8 מזויף) 70.39% (INT8 מזויף) 65.35%
קוונטיזציה מלאה של מספרים שלמים INT8 69.34% 60.60% 70.35% 65.42%
דְחִיסָה 4,665,568 → 3,886,277 (16.7%) 4,665,568 → 3,035,752 (34.9%) 4,569,416 → 3,804,871 (16.7%) 4,569,472 → 2,912,655 (36.25%)

תוצאות CQAT ו-PCQAT עבור דגמים מקובצים לפי ערוץ

התוצאות להלן מתקבלות עם טכניקת אשכול לערוץ . הם ממחישים שאם שכבות קונבולוציוניות של המודל מקובצות לפי ערוץ, אזי דיוק המודל גבוה יותר. אם למודל שלך יש הרבה שכבות קונבולוציוניות, אז אנו ממליצים לאסוף לפי ערוץ. יחס הדחיסה נשאר זהה, אך דיוק הדגם יהיה גבוה יותר. צינור האופטימיזציה של המודל הוא 'מקבץ -> שמירה על אשכולות -> קוונטיזציה לאחר אימון, int8' בניסויים שלנו.

דֶגֶם אשכול -> CQAT, quantized int8 אשכול לכל ערוץ -> CQAT, int8 quantized
DS-CNN-L 95.949% 96.44%
MobileNet-V2 71.538% 72.638%
MobileNet-V2 (גזם) 71.45% 71.901%

דוגמאות

לדוגמאות מקצה לקצה של טכניקות האופטימיזציה השיתופיות המתוארות כאן, עיין במחברות הדוגמאות של CQAT , PQAT , אשכול שמירה על דלילות ומחברות PCQAT .