האץ אימון מודל למידה עמוקה עד 35% עם אמזון SageMaker ניפוי חכם | שירותי האינטרנט של אמזון

האץ אימון מודל למידה עמוקה עד 35% עם אמזון SageMaker ניפוי חכם | שירותי האינטרנט של אמזון

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

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

איך עוד אתה יכול להתגבר על חוסר היעילות הזה הקשור לדגימות נתונים דלי מידע במהלך אימון מודלים?

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

בפוסט זה נדון בנושאים הבאים:

  • יכולת הניפוי החכמה החדשה ב- SageMaker וכיצד היא פועלת
  • כיצד להשתמש בניפוי חכם עם עומסי עבודה של אימון PyTorch

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

איך עובד ניפוי חכם של SageMaker

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

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

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

קלט מרכזי לניפוי חכם הוא שיעור הנתונים שיש לא לכלול: לדוגמה, על ידי הגדרת הפרופורציה ל-33% (beta_value=0.5), דגימות בערך בשליש התחתון של אובדן של כל אצווה לא ייכללו בהדרכה. כאשר זוהו מספיק דגימות בהפסד גבוה כדי להשלים אצווה, הנתונים נשלחים דרך לולאת ההדרכה המלאה והמודל לומד ומתאמן כרגיל. אינך צריך לבצע שינויים בלולאת האימון שלך כאשר ניפוי חכם מופעלת.

התרשים הבא ממחיש זרימת עבודה זו.

האץ אימון מודל למידה עמוקה עד 35% עם אמזון SageMaker ניפוי חכם | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

האץ אימון מודל למידה עמוקה עד 35% עם אמזון SageMaker ניפוי חכם | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

סקירת פתרונות

בסעיפים הבאים, אנו עוברים על דוגמה מעשית לאפשר ניפוי חכם עם עבודת אימון PyTorch ב- SageMaker. אם אתה רוצה להתחיל במהירות, אתה יכול לקפוץ אל דוגמאות PyTorch או PyTorch Lightning.

תנאים מוקדמים

אנו מניחים שאתה כבר יודע איך לאמן מודל באמצעות PyTorch או PyTorch Lightning באמצעות SageMaker Python SDK ושיעור Estimator באמצעות SageMaker Deep Learning Containers לצורך הדרכה. אם לא, עיין ב שימוש ב-SageMaker Python SDK לפני שממשיכים.

התחל עם סינון חכם של SageMaker

בעבודת אימון טיפוסית של PyTorch, אתה מאתחל את אימון PyTorch DataLoader עם מערך הנתונים שלך ופרמטרים נדרשים אחרים, המספקים קבוצות קלט עם התקדמות ההדרכה. כדי לאפשר ניפוי חכם של נתוני האימון שלך, תשתמש בחדש DataLoader מעמד: smart_sifting.dataloader.sift_dataloader.SiftingDataloader. מחלקה זו משמשת כעטיפה על גבי PyTorch הקיים שלך DataLoader ותהליך ההכשרה ישתמש במקום זאת SiftingDataloader כדי לקבל קבוצות קלט. ה SiftingDataLoader מקבל את אצווה הקלט מה-PyTorch המקורי שלך DataLoader, מעריך את חשיבות הדגימות באצווה, ובונה אצווה מנופה עם דגימות בהפסד גבוה, אשר מועברות לאחר מכן לשלב ההדרכה. העטיפה נראית כמו הקוד הבא:

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=BertLoss(), model=self.model
)

השמיים SiftingDataloader דורש כמה פרמטרים נוספים כדי לנתח את נתוני האימון שלך, אותם תוכל לציין באמצעות sift_config פָּרָמֶטֶר. ראשית, צור א smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig לְהִתְנַגֵד. אובייקט זה מכיל את הניתנים להגדרה והנדרש beta_value ו loss_history_length, שמגדירים בהתאמה את שיעור הדגימות שיש לשמור ואת חלון הדגימות שיש לכלול בהערכת אובדן יחסי. שים לב שמכיוון שניפוי חכם משתמש במודל שלך להגדרת חשיבות המדגם, יכולות להיות השלכות שליליות אם נשתמש במודל עם משקלים אקראיים לחלוטין. במקום זאת, אתה יכול להשתמש loss_based_sift_config וכן sift_delay לעכב את תהליך הניפוי עד עדכון משקלי הפרמטרים במודל מעבר לערכים אקראיים. (לפרטים נוספים, עיין ב החל ניפוי חכם על תסריט האימון שלך.) בקוד הבא, אנו מגדירים sift_config ולציין beta_value ו loss_history_length, כמו גם לעכב את תחילת הניפוי באמצעות loss_based_sift_config:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
)

לאחר מכן, עליך לכלול גם א loss_impl פרמטר ב SiftingDataloader לְהִתְנַגֵד. ניפוי חכם עובד ברמת מדגם אינדיבידואלית, וחשוב שתהיה גישה לשיטת חישוב הפסד כדי לקבוע את חשיבות המדגם. עליך ליישם שיטת אובדן ניפוי המחזירה טנזור nx1, המחזיק ערכי אובדן של n דגימות. בדרך כלל, אתה מציין את אותה שיטת אובדן שבה השתמשת model בזמן אימון. לבסוף, כלול מצביע לדגם שלך ב- SiftingDataloader אובייקט, המשמש להערכת דגימות לפני שהן נכללות באימון. ראה את הקוד הבא:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) ....
.... train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
)

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

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader
from smart_sifting.loss.abstract_sift_loss_module import Loss
from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig
...
...
... ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) .... .... .... sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
) train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
) ...... # use train_dataloader in the rest of the training logic.

סיכום

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

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


על המחברים

האץ אימון מודל למידה עמוקה עד 35% עם אמזון SageMaker ניפוי חכם | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.רוברט ואן דוזן הוא מנהל מוצר בכיר ב-Amazon SageMaker. הוא מוביל מסגרות, מהדרים וטכניקות אופטימיזציה לאימון למידה עמוקה.

האץ אימון מודל למידה עמוקה עד 35% עם אמזון SageMaker ניפוי חכם | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ק לוקש קומאר רדי הוא מהנדס בכיר בצוות Amazon Applied AI. הוא מתמקד בטכניקות אימון ML יעילות ובבניית כלים לשיפור מערכות AI לשיחות. בזמנו הפנוי הוא נהנה לחפש תרבויות חדשות, חוויות חדשות ולהישאר מעודכן בטרנדים הטכנולוגיים העדכניים ביותר.

האץ אימון מודל למידה עמוקה עד 35% עם אמזון SageMaker ניפוי חכם | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.אבהישק דן הוא מנהל פיתוח בכיר בצוות Amazon Applied AI ועובד על למידת מכונה ומערכות בינה מלאכותית לשיחה. הוא נלהב מטכנולוגיות AI ועובד בצומת של מדע והנדסה בקידום היכולות של מערכות AI ליצירת אינטראקציות אינטואיטיביות וחלקות יותר בין אדם למחשב. כרגע הוא בונה יישומים על מודלים של שפות גדולות כדי להניע יעילות ושיפורי CX עבור אמזון.

בול זמן:

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