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

צומת המקור: 1204406

כותבים את הבלוג הזה על ידי שרה ג'יין הונג CSO, דריל בארנהרט CTO, ואיאן תומפסון מנכ"ל Space Latent ו- Prem Ranga של AWS.

מרחב סמוי הוא ייצוג נסתר של רעיונות מופשטים שלומדים מודלים של למידת מכונה (ML). לדוגמה, "כלב", "פרח" או "דלת" הם מושגים או מיקומים במרחב סמוי. בְּ מרחב סמויאנו עובדים על מנוע המאפשר לך לתפעל ולחקור את המרחב הזה באמצעות הנחיות שפה ויזואליות. צוות החלל הסמוי מגיע משני תחומים שכבר מזמן לא חופפים מעט: גרפיקה ועיבוד שפה טבעית (NLP). באופן מסורתי טופלו בנפרד אמצעי התמונות והטקסט, כל אחד עם ההיסטוריה שלהם של הנדסת תכונות מורכבות, יקרות ושבריריות. למשימות NLP כמו הבנת מסמכים או מענה לשאלות בדרך כלל לא היה מעט במשותף עם משימות ראייה כמו הבנת סצנה או עיבוד, ובדרך כלל אנו משתמשים בגישות ובמודלים שונים מאוד עבור כל משימה. אבל זה משתנה במהירות.

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

אמזון SageMakerחלוקת המודלים האוטומטית הייחודית וגישת הצנרת היעילה אפשרו את אימוץ ההקבלה של המודל במאמץ הנדסי מועט, ושכללנו את הכשרת המודלים מעבר למיליארד פרמטרים (אנו משתמשים מופעי A4 של p24d.100xlarge), שזו דרישה חשובה עבורנו. יתר על כן, ראינו שכאשר אימנו עם 16 צומת, שמונה הגדרות אימון של GPU עם ספריית ההקבלה של מודל SageMaker, רשמנו שיפור ביעילות של 38% בהשוואה לריצות האימון הקודמות שלנו.

אתגרים באימון שנאים בקנה מידה גדול

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

טכניקות אחזור מידע היו זה מכבר מרכיב מרכזי במנועי חיפוש ובמשימות QA. לאחרונה חלה התקדמות מרגשת בשילוב טכניקות IR קלאסיות עם שנאים מודרניים, במיוחד עבור משימות למענה על שאלות בהן מודל מאומן במשותף עם רטריבר עצבי שלומד לאחזר מסמכים רלוונטיים שיעזור לענות על שאלות. לסקירה כללית, עיין בעבודה האחרונה של FAIR ב- אחזור דור מוגבר: ייעול יצירת מודלים חכמים לעיבוד שפות טבעיות ו פיוז'ן-ב-מפענח, המוח של גוגל אמיתי, ושל נווידיה רטריבר עצבי לתשובה לשאלה.

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

ספריית ההקבלה למודל SageMaker

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

מחיצת מודלים אוטומטית

למקרה השימוש שלנו ב- PyTorch, הספרייה המקבילה למודל מפעילה באופן פנימי שלב מעקב (בשלב האימון הראשון) הבונה את גרף המודל וקובע את צורות הטנסור והפרמטר. לאחר מכן הוא בונה עץ המורכב מהמקונן nn.Module אובייקטים במודל, כמו גם נתונים נוספים שנאספו ממעקב, כגון כמות המאוחסנים nn.Parameters, וזמן ריצה לכל אחד nn.Module.

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

תזמון ריצת צינור

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

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

הכשרת אדריכלות

התרשים הבא מייצג את אופן הגדרת ארכיטקטורת ההדרכה שלנו. היעדים העיקריים שלנו היו לשפר את מהירות האימונים ולהפחית עלויות. שנאי הדימוי והשפה שאנו מאמנים הם מורכבים ביותר, עם מספר רב משמעותי של שכבות ומשקולות בפנים, המגיעים למיליארדי פרמטרים, כל אלה גורמים להם להיות לא מסוגלים להשתלב בזיכרון של צומת יחיד. כל צומת נושא תת-קבוצה של המודל, שדרכו הנתונים זורמים והטרנספורמציות משותפות ונאספות. הגדרנו 16 p4d.24xlarge מקרים שכל אחד מהם עם שמונה GPUs באמצעות ייצוג הארכיטקטורה הבא:

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

  • אנו זקוקים להפחתה של כל חישוב במקרה של הקבלה ברמת הטנסור. זה לוקח O (log_2 n) צעדים מקבילים. כלומר n מכונות שעושות צעדים O (n), עבור פעולות כולל של O (n log_2 n).
  • לצורך הקבלה בצינור, אנו דורשים צעדים מקבילים O (1) להעברת נתונים בצינור
  • בהינתן 16 מכונות עם שמונה GPUs, יש לנו עלות O (1) במקביל לצינור, ו- O (log_2 (8)) = O (3) עלות עבור מקביל מודל עומק.
  • במקרה זה אנו רואים כי עלות הרשת מופחתת ל -1 / 3 על ידי מעבר לצינור מקביל למה שנעשה בו שימוש במקביל מודל SageMaker, ועלות ההדרכה הכוללת מצטמצמת ל- 1/2 + 1/2 * 1 / log_2 (16 ) = 0.625 מהעלות המקורית המובילה לשיפור יעילות מקביל.

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

שיטות עבודה מומלצות להכשרה מבוזרת

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

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

  • בחומרה המצוידת ב- NVIDIA Tensor Core, השתמש אימון דיוק מעורב כדי ליצור מהירות ולהפחית את צריכת הזיכרון.
  • צמצם את גודל האצווה (או צמצם את רזולוציית התמונה או את אורך רצף ה- NLP, אם אפשר).

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

התחל באימון מקבילי למודל כשיש לך את האילוצים הבאים:

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

בעת ביצוע אופטימיזציה לביצועים, בצע את הפעולות הבאות:

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

בעת ביצוע אופטימיזציה למחיר, השתמש ב- SageMaker בניהול מופעי Spot לצורך אימונים. זה יכול לייעל את עלות האימונים עד 90% לעומת מקרים לפי דרישה. SageMaker מנהל את ההפרעות בספוט בשמך.

גורמים נוספים שיש לקחת בחשבון:

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

הטבלה הבאה מספקת כמה תרחישים של סקאלת אימונים נפוצה וכיצד ניתן להגדיר אותם ב- AWS.

תַרחִישׁ מתי זה חל? פתרון
שינוי גודל מ- GPU אחד ל- GPUs רבים כאשר כמות נתוני האימון או גודל המודל גדולים מדי עבור למופע רב-GPU כמו p3.16xlarge, שמונה GPUs, כאשר הנתונים והעיבוד מפוצלים על פני שמונת ה- GPUs, ומייצרים מהירות כמעט ליניארית בזמן שלוקח לאמן את המודל שלך.
שינוי גודל ממופע יחיד למספר מופעים כאשר צרכי קנה המידה חורגים מעבר לשינוי גודל המופע קנה מידה של מספר המקרים באמצעות פונקציית האומדן של SageMaker Python SDK על ידי הגדרת סוג המופע שלך ל- p3.16xlarge ו- count_exemplar ל- 2. במקום שמונת ה- GPU ב- p3.16xlarge יחיד, יש לך 16 GPUs בשני מופעים זהים. שקול להשתמש ב- SageMaker הפיצה ספריית נתונים מקבילה.
בחירת גישה מקבילה מודל לאימון כאשר נתקלים בשגיאות זיכרון במהלך האימון עבור לגישה מקבילה מודל באמצעות ה- SageMaker מופץ ספרייה מקבילה למודל.
ביצועי רשת לתקשורת בין-צומת לאימונים מבוזרים עם מספר מופעים (למשל, תקשורת בין הצמתים באשכול בעת ביצוע פעולת AllReduce) המקרים שלך צריכים להיות באותו אזור ובאותו אזור זמינות. כשאתה משתמש ב- SageMaker Python SDK, זה מטופל עבורך. נתוני האימון שלך צריכים להיות גם באותו אזור זמינות. שקול להשתמש ב- SageMaker הפיצה ספריית נתונים מקבילה.
GPU, רשת ואחסון אופטימלי לצרכי הכשרה מבוזרים בקנה מידה גדול סוג המופע p4d.24xlarge תוכנן לאחסון מקומי מהיר ולמטוס אחורי ברשת מהיר עם עד 400 ג'יגה-ביט, ואנחנו ממליצים עליו בחום כאפשרות הביצועית ביותר להכשרה מבוזרת.

סיכום

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

הפניות

לקבלת מידע נוסף, אנא ראה את הדברים הבאים:


על הכותבים

פרם ראנגה הוא אדריכל פתרונות ארגוניים שמקורו באטלנטה, ג'ורג'יה. הוא חלק מהקהילה הטכנית בתחום למידת מכונה ואוהב לעבוד עם לקוחות במסע ה- ML וה- AI שלהם. פרם נלהב מרובוטיקה, הוא חוקר כלי רכב אוטונומי, ובנה גם את הבירה הנשלטת על ידי אלקסה ביוסטון ובמקומות אחרים.

שרה ג'יין הונג הוא מייסד שותף ומנהל המדע הראשי בחלל הסמוי. הרקע שלה טמון בצומת האינטראקציה בין אדם למחשב ולמידת מכונה. בעבר הובילה מחקר NLP בסונאר (שנרכשה על ידי Marchex), המשרתת עסקים בתחום ה- AI המשוחח. היא גם מפתחת AR / VR מוערכת, לאחר שקיבלה פרסים ומלגות מ- Oculus, מציאות מעורבת של מוזילה ומ- Microsoft Hololens.

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

איאן תומפסון הוא המייסד והמנכ"ל ב- Latent Space. איאן הוא מהנדס וחוקר בהשראת "הצמוד האפשרי" - טכנולוגיות העומדות להשפיע רבות על חיינו. כיום מתמקד בפשטות וקנה מידה של למידה של ייצוג רב-מודלי כדי לבנות AI בטוח ויצירתי. בעבר סייע בבניית חברות בגרפיקה / מציאות מדומה (AltspaceVR, שנרכשה על ידי מיקרוסופט) וחינוך / NLP (HSE).

מקור: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- רובוטריקים-שנאים /

בול זמן:

עוד מ בלוג למידת מכונות AWS