בשנים האחרונות חלה התפתחות מהירה בתחום עיבוד השפה הטבעית (NLP). למרות שהחומרה השתפרה, כמו עם הדור האחרון של מאיצים מ-NVIDIA ואמזון, מתרגלי למידת מכונה מתקדמת (ML) עדיין נתקלים בקביעות בבעיות בקנה מידה של דגמי השפה הגדולים שלהם על פני מספר GPUs.
בפוסט זה בבלוג, אנו מסכמים בקצרה את עלייתם של דגמי NLP בקנה מידה גדול וקטן, בעיקר באמצעות ההפשטה שמספקת Hugging Face ועם ה-backend המודולרי של Amazon SageMaker. במיוחד אנו מדגישים את ההשקה של ארבע תכונות נוספות בספריית המודל המקבילית של SageMaker, אשר פותחות 175 מיליארד פרמטרים של מודל NLP הדרכה וכיוונון עדין עבור הלקוחות.
השתמשנו בספרייה זו בפלטפורמת האימון של SageMaker והשגנו תפוקה של 32 דגימות לשנייה ב-120 ml.p4d.24xlarge מופעים ו-175 מיליארד פרמטרים. אנו צופים שאם נגדיל את זה ל-240 מקרים, המודל המלא ייקח 25 ימים להתאמן.
למידע נוסף על מקביליות מודלים, עיין במאמר מקביליות מודל אמזון SageMaker: מסגרת כללית וגמישה לאימון דגמים גדולים.
אתה יכול גם לראות את המחברת GPT2 שבה השתמשנו כדי להפיק את מספרי הביצועים האלה אצלנו מאגר GitHub.
למידע נוסף על אופן השימוש בתכונות החדשות במודל SageMaker מקביל, עיין ב תכונות מורחבות של ספריית הדגם המקבילה של SageMaker עבור PyTorch, ו השתמש עם SageMaker Python SDK.
NLP ב- Amazon SageMaker - חיבוק פנים ומקביליות מודל
אם אתה חדש ב-Huging Face ו-NLP, גולת הכותרת הגדולה ביותר שאתה צריך לדעת היא שיישומים המשתמשים בעיבוד שפה טבעית (NLP) מתחילים להשיג ביצועים ברמה אנושית. זה מונע בעיקר על ידי מנגנון למידה, הנקרא תשומת לב, שהוליד מודל למידה עמוקה, שנקרא ה שנאי, זה הרבה יותר ניתן להרחבה משיטות קודמות של למידה עמוקה ברצף. המפורסם עכשיו דגם BERT פותח כדי לנצל את השנאי, ופיתח כמה טקטיקות NLP שימושיות לאורך הדרך. רובוטריקים וחבילת הדגמים, בתוך ומחוץ ל-NLP, שכולם בהשראת BERT, הם המנוע העיקרי מאחורי תוצאות החיפוש שלך בגוגל, שלך תוצאות תרגום של גוגל, ו שורה של סטארטאפים חדשים.
SageMaker ו-Huging Face שיתפו פעולה כדי להקל על הלקוחות מאי פעם. השקנו מיכלי למידה עמוקה של Hugging Face (DLC's) כדי שתוכלו לאמן ולארח דוגמניות שהוכשרו מראש ישירות מ-Huging Face's מאגר של למעלה מ-26,000 דגמים. השקנו מהדר ההדרכה של SageMaker כדי שתוכל להאיץ את זמן הריצה של לולאות האימון של Hugging Face שלך בעד 50%. גם השתלבנו ספינת הדגל Transformers SDK של Hugging Face עם ספריות ההדרכה המבוזרות שלנו כדי להפוך את גודל דגמי ה-NLP שלך לקלה יותר מאי פעם.
למידע נוסף על דגמי Hugging Face Transformer ב-Amazon SageMaker, ראה תמיכה בדגמי שנאי פנים חיבוקים.
תכונות חדשות לאימון מודל NLP בקנה מידה גדול עם ספריית המודל המקבילית של SageMaker
ב-AWS re:Invent 2020, SageMaker השיקה ספריות מבוזרות המספקות את הביצועים הטובים ביותר בענן לאימון מודלים של ראייה ממוחשבת כמו מסכה-RCNN ודגמי NLP כמו T5-3B. זה אפשרי באמצעות פרימיטיביות תקשורת משופרת המהירים ב-20-40% מ-NCCL ב-AWS, וטכניקות הפצת מודלים המאפשרות למודלים של שפות גדולים במיוחד להתרחב על פני עשרות עד מאות עד אלפי GPUs.
ספריית המודל המקבילית של SageMaker (SMP) תמיד נתנה לך את היכולת לקחת את מודל ה-NLP המוגדר מראש שלך ב- PyTorch, בין אם זה דרך Hugging Face או במקום אחר, ולחלק את הדגם הזה למספר GPUs באשכול שלך. נאמר בדרך אחרת, SMP מפרק את הדגם שלך לנתחים קטנים יותר כדי שלא תחווה שגיאות מחוץ לזיכרון (OOM). אנו שמחים להוסיף טכניקות נוספות לחיסכון בזיכרון שהן קריטיות עבור דגמים בקנה מידה גדול, כלומר:
- מקביליות טנזור
- פיצול מצב אופטימיזציה
- נקודת ביקורת הפעלה
- הפעלה הורדה
אתה יכול לשלב את ארבעת התכונות הללו, ניתן לשלב כדי לנצל את הזיכרון בצורה יעילה יותר ולהכשיר את הדור הבא של דגמי NLP בקנה מידה קיצוני.
אימון מבוזר ומקביליות טנזור
כדי להבין מקביליות טנזור, כדאי לדעת שישנם סוגים רבים של אימון מבוזר, או מקביליות. אתה בטח כבר מכיר את הסוג הנפוץ ביותר, מקביליות נתונים. הליבה של מקביליות נתונים פועלת כך: אתה מוסיף צומת נוסף לאשכול שלך, כמו מעבר ממופע אחד לשני של ml.EC2 באומדן SageMaker שלך. לאחר מכן, אתה משתמש במסגרת מקבילה לנתונים כמו Horovod, PyTorch Distributed Data Parallel, או SageMaker Distributed. זה יוצר העתקים של המודל שלך, אחד לכל מאיץ, ומטפל בפיצול הנתונים לכל צומת, יחד עם חיבור כל התוצאות במהלך שלב ההפצה האחורית של הרשת העצבית שלך. תחשוב על ירידה בשיפוע מבוזרת. מקביליות נתונים פופולרית גם בתוך שרתים; אתה מחלק נתונים לכל ה-GPUs, ולעתים CPUs, בכל הצמתים שלך. התרשים הבא ממחיש מקביליות נתונים.
הקבלה מודאלית שונה במקצת. במקום ליצור עותקים של אותו דגם, אנו מפצלים את הדגם שלך לחתיכות. לאחר מכן אנו מנהלים את ההפעלה שלו, כך שהנתונים שלך עדיין זורמים דרך הרשת העצבית שלך בדיוק באותו אופן מבחינה מתמטית, אבל חלקים שונים של המודל שלך יושבים על GPUs שונים. אם אתה משתמש ב-ml.p3.8xlarge, יש לך ארבעה NVIDIA V100, אז כנראה שתרצה לגזור את הדגם שלך ל-4 חלקים, חתיכה אחת לכל GPU. אם אתה קופץ עד שני ml.p4d.24xlarge, זה 16 A100 בסך הכל באשכול שלך, כך שאתה עשוי לשבור את הדגם שלך ל-16 חלקים. זה נקרא לפעמים גם מקביליות צנרת. הסיבה לכך היא שקבוצת השכבות ברשת מחולקת על פני מעבדי GPU, ופועלות בצורה צינורית כדי למקסם את ניצול ה-GPU. התרשים הבא ממחיש מקביליות מודל.
כדי לגרום להקביליות של מודלים להתרחש בקנה מידה, אנו זקוקים לסוג שלישי של התפלגות: מקביליות טנזור. מקביליות טנזור מיישמת את אותם מושגים בשלב אחד קדימה - אנו מפרקים את השכבות הגדולות ביותר של הרשת העצבית שלך וממקמים חלקים מהשכבות עצמן על מכשירים שונים. זה רלוונטי כשאתה עובד עם 175 מיליארד פרמטרים או יותר, ומנסה להכניס אפילו כמה רשומות ל-RAM, יחד עם חלקים מהדגם שלך, כדי לאמן את השנאי הזה. התרשים הבא ממחיש מקביליות טנזור.
כדי לאפשר מקביליות טנסור, הגדר אותו בתוך אפשרויות smp אתה עובר לאומדך.
בקוד הקודם, pipeline_parallel_degree
מתאר לכמה מקטעים המודל שלך צריך להיות מפוצץ, בהתבסס על מקביליות הצינור שדיברנו עליו לעיל. מילה נוספת לכך היא ציונים.
כדי לאפשר מקביליות טנזור, הגדר tensor_parallel_degree
לרמה הרצויה לך. ודא שאתה בוחר מספר השווה או קטן ממספר ה-GPUs לכל מופע, כך שלא יעלה על 8 עבור המכונות ml.p4d.24xlarge. לשינויים נוספים בסקריפט, עיין ב הפעל משרת אימון מקבילי מודל מבוזרת של SageMaker עם מקביליות טנזור.
הפרמטר ddp מתייחס לנתונים מבוזרים במקביל. בדרך כלל אתה מפעיל זאת אם אתה משתמש בהקבלת נתונים או מקביליות טנזור, מכיוון שספריית המקביליות של המודל מסתמכת על DDP עבור תכונות אלה.
פיצול מצב אופטימיזציה, הורדת הפעלה ונקודות ביקורת
אם יש לך דגם גדול במיוחד, אתה צריך גם מצב אופטימיזציה גדול במיוחד. הכנת האופטימיזציה שלך ל-SMP היא פשוטה: פשוט אסוף אותו מהדיסק בסקריפט שלך וטען אותו לתוך smp.DistributedOptimizer()
אובייקט.
ודא שאתה מפעיל זאת באומדן על ידי הגדרה shard_optimizer_state
אל נכון ב smp_options
אתה משתמש כדי להגדיר SMP:
בדומה למקביליות טנזור וצנרת, SMP מפרט את המודל שלך ואת גודל העולם שלך (המספר הכולל של GPUs בכל צמתי האימון שלך), כדי למצוא את אסטרטגיות המיקום הטובות ביותר.
בלמידה עמוקה יציאות שכבת הביניים נקראות גם אקטיבציות, ויש לאחסן אותן במהלך העברה קדימה. הסיבה לכך היא שהם צריכים לשמש עבור חישוב שיפוע במעבר לאחור. במודל גדול, אחסון כל ההפעלה הללו בו זמנית בזיכרון יכול ליצור צווארי בקבוק משמעותיים בזיכרון. כדי לטפל בצוואר בקבוק זה, אתה יכול להשתמש נקודת ביקורת הפעלה, התכונה החדשה השלישית בספריית מקביליות מודל SageMaker. מחסום הפעלה, או בדיקת שיפוע, היא טכניקה לצמצום השימוש בזיכרון על ידי ניקוי הפעלות של שכבות מסוימות ומחשוב מחדש במהלך מעבר אחורה. זה למעשה מחליף זמן חישוב נוסף עבור שימוש מופחת בזיכרון.
לבסוף, הורדת הפעלה משתמש ישירות בבדיקת הפעלה. זוהי אסטרטגיה לשמור רק כמה הפעלות טנזור ב-GPU RAM במהלך אימון המודל. באופן ספציפי, אנו מעבירים את ההפעלות המצוינות לזיכרון המעבד במהלך המעבר קדימה ומטעינים אותן בחזרה ל-GPU למעבר אחורה של מיקרו-אצווה ספציפית.
מיקרו אצוות ואסטרטגיות מיקום
נושאים נוספים שגורמים לפעמים לבלבול ללקוחות הם מיקרו-אצטות ואסטרטגיות מיקום. שני אלו היפרפרמטרים שתוכלו לספק לספריית המודל המקבילית של SageMaker. ספציפית מיקרו-אצטות רלוונטיות בעת יישום מודלים המסתמכים על מקביליות צינורות, כגון אלה בגודל של לפחות 30 מיליארד פרמטרים או יותר.
מיקרו-אצטות הן תת-קבוצות של מיני-אצט. כאשר הדגם שלך נמצא בלולאת האימון שלו, אתה מגדיר מספר מסוים של שיאים לאסוף ולהעביר קדימה ואחורה דרך השכבות - זה נקרא מיני אצווה, או לפעמים רק א קְבוּצָה. מעבר מלא במערך הנתונים שלך נקרא an תקופה. כדי להריץ מעברים קדימה ואחורה עם מקביליות צינורות, ספריית המודל המקבילית של SageMaker פורסת את האצוות לקבוצות משנה קטנות יותר הנקראות מיקרו-אצות, המופעלות אחת בכל פעם כדי למקסם את ניצול ה-GPU. קבוצת הדוגמאות המתקבלת, קטנה בהרבה לכל-GPU, נקראת מיקרו-אצווה. בדוגמה שלנו GPT-2, הוספנו ברירת מחדל של 1 microbatch ישירות לסקריפט ההדרכה.
כשאתה מגדיל את תצורת האימון שלך, מומלץ מאוד לשנות את גודל האצווה ואת גודל המיקרו אצווה בהתאם. זוהי הדרך היחידה להבטיח ביצועים טובים: עליך להתייחס לגודל אצווה וגודל מיקרו אצווה כפונקציה של גודל העולם הכולל שלך כאשר אתה מסתמך על מקביליות צינורות.
אסטרטגיות מיקום הן כיצד לומר ל- SageMaker באופן פיזי היכן למקם את מחיצות הדגם שלך. אם אתה משתמש גם מקבילי מודל וגם מקבילי נתונים, הגדרה placement_strategy
ל “cluster”
ממקם העתקים של דגמים במזהי מכשיר (GPU) הקרובים פיזית זה לזה. עם זאת, אם אתה באמת רוצה להיות יותר מחייב לגבי אסטרטגיית ההקבלה שלך, אתה יכול לפרק אותה למחרוזת אחת עם שילובים שונים של שלוש אותיות: D עבור מקביליות נתונים, P
מציין מקביליות צינור, ו T
עבור מקביליות טנזור. בדרך כלל אנו ממליצים לשמור על מיקום ברירת המחדל של "cluster"
, כי זה הכי מתאים לאימון מודלים בקנה מידה גדול. מיקום "אשכול" מתאים ל"DPT
למידע נוסף על אסטרטגיות מיקום, ראה אסטרטגיית השמה עם מקביליות טנזור.
מקרה שימוש לדוגמה
בוא נדמיין שיש לך ml.p3.16xlarge אחד בעבודת האימון שלך. זה נותן לך 8 NVIDIA V100 לכל צומת. זכור, בכל פעם שאתה מוסיף מופע נוסף, אתה חווה רוחב פס נוסף, כך שתמיד עדיף שיהיו יותר GP'Us בצומת בודד. במקרה זה, עדיף לך עם ml.p3.16xlarge אחד מאשר, למשל, שני ml.p3.8xlarge. למרות שמספר ה-GPUs זהה, רוחב הפס הנוסף של הצומת הנוסף מאט את התפוקה שלך.
התרשים הבא ממחיש מקביליות מודל ארבע-כיוונית, בשילוב עם מקביליות נתונים דו-כיוונית. זה אומר שיש לך למעשה שני העתקים של הדגם שלך (תחשוב על נתונים מקבילים), כאשר כל אחד מהם מחולק על פני ארבעה GPUs (מודל מקביל).
אם אחת ממחיצות הדגמים האלה גדולה מכדי להתאים ל-GPU יחיד, אתה יכול להוסיף סוג נוסף של הפצה - מקביליות טנזור - כדי לירוק אותה ולהשתמש בשני המכשירים.
סיכום
בפוסט זה בבלוג דנו בספריות הדרכה מבוזרות של SageMaker, במיוחד תוך התמקדות בהקבלת מודלים. חלקנו מדדי ביצועים מהמבחן האחרון שלנו, והשגנו 32 דגימות בשנייה ב-120 ml.p4d.24xlarge מופעים ו-175B פרמטרים באמזון SageMaker. אנו צופים שאם נגדיל את זה ל-240 מקרים של p4 נוכל לאמן מודל של פרמטרים של 175B תוך 25 ימים.
דנו גם בתכונות החדשות ביותר המאפשרות אימון בקנה מידה גדול, כלומר מקביליות טנזור, פיצול מצבי מיטוב, בדיקת הפעלה והורדת הפעלה. חלקנו כמה טיפים וטריקים לאפשר זאת באמצעות הדרכה באמזון SageMaker.
נסה זאת בעצמך באמצעות אותה מחברת שיצרה את המספרים שלנו, שזמינה כאן ב-GitHub. אתה יכול גם לבקש יותר GPUs עבור חשבון AWS שלך דרך מבקש אישור מגבלת שירות ממש כאן.
על הכותבים
אמילי וובר הצטרף ל-AWS מיד לאחר השקת SageMaker, ומאז הוא מנסה לספר על כך לעולם! מלבד בניית חוויות ML חדשות ללקוחות, אמילי נהנית לעשות מדיטציה וללמוד בודהיזם טיבטי.
אדיטיה בינדל הוא מנהל מוצר בכיר של למידה עמוקה של AWS. הוא עובד על מוצרים שמקלים על לקוחות להכשיר מודלים של למידה עמוקה ב- AWS. בזמנו הפנוי הוא נהנה לבלות עם בתו, לשחק טניס, לקרוא בדיוני היסטוריה ולנסוע.
לואיס קווינטלה הוא מנהל מפתחי התוכנה של ספריית המודל המקבילית של AWS SageMaker. בזמנו הפנוי, ניתן למצוא אותו רוכב על ההארלי שלו באזור מפרץ SF.
- Coinsmart. בורסת הביטקוין והקריפטו הטובה באירופה.
- Platoblockchain. Web3 Metaverse Intelligence. ידע מוגבר. גישה חופשית.
- CryptoHawk. רדאר אלטקוין. ניסיון חינם.
- מקור: https://aws.amazon.com/blogs/machine-learning/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- אודות
- מאיץ
- חֶשְׁבּוֹן
- הושג
- לרוחב
- נוסף
- כתובת
- מתקדם
- תעשיות
- כְּבָר
- אמזון בעברית
- אחר
- יישומים
- AREA
- זמין
- AWS
- מִפרָץ
- הטוב ביותר
- הגדול ביותר
- B
- בלוג
- בִּניָן
- לגרום
- שינוי
- ענן
- קוד
- שילובים
- Common
- תקשורת
- תְצוּרָה
- בלבול
- מכולות
- ליבה
- יכול
- לקוחות
- נתונים
- מפותח
- מפתח
- צעצועי התפתחות
- מכשיר
- התקנים
- אחר
- מופץ
- הפצה
- מטה
- מונע
- מה שמאפשר
- במיוחד
- דוגמה
- ניסיון
- חוויות
- קיצוני
- פָּנִים
- מהר יותר
- מאפיין
- תכונות
- פיקציה
- מתאים
- הבא
- קדימה
- מצא
- מסגרת
- מלא
- פונקציה
- כללי
- ליצור
- GitHub
- הולך
- טוב
- חיפוש Google
- GPU
- חומרה
- מועיל
- להבליט
- היסטורי
- איך
- איך
- HTTPS
- מאות
- גדל
- מידע
- השראה
- משולב
- בעיות
- IT
- עבודה
- הצטרף
- לקפוץ
- שמירה
- שפה
- גָדוֹל
- האחרון
- לשגר
- לִלמוֹד
- למידה
- רמה
- סִפְרִיָה
- לִטעוֹן
- מכונה
- למידת מכונה
- מכונה
- עשייה
- מנהל
- זכרון
- ML
- מודל
- מודלים
- מודולרי
- רוב
- המהלך
- כלומר
- טבעי
- רשת
- תכונות חדשות
- צמתים
- מחברה
- מספרים
- אחר
- מאמר
- שותף
- ביצועים
- לְחַבֵּר
- פלטפורמה
- פופולרי
- אפשרי
- יְסוֹדִי
- המוצר
- מוצרים
- פרופילים
- לספק
- RAM
- RE
- קריאה
- להמליץ
- רשום
- להפחית
- תוצאות
- הפעלה
- ריצה
- אמר
- להרחבה
- סולם
- דרוג
- Sdk
- חיפוש
- שרות
- סט
- הצבה
- sharding
- משותף
- משמעותי
- מידה
- So
- תוכנה
- במיוחד
- מְהִירוּת
- הוצאה
- לפצל
- מדינה
- אסטרטגיות
- אִסטרָטֶגִיָה
- לספק
- טקטיקה
- טכניקות
- מבחן
- העולם
- אלפים
- דרך
- זמן
- טיפים
- טיפים וטריקים
- יַחַד
- נושאים
- עסקות
- הדרכה
- להבין
- להשתמש
- לנצל
- חזון
- בתוך
- עובד
- עובד
- עוֹלָם
- שנים