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

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

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

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

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

גישה ממוקדת נתונים ללמידת מכונה

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

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

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

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

השתמש במקרה

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

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

ערכת נתונים של CIFAR

ResNet-18 משמש לעתים קרובות למשימות סיווג. זוהי רשת עצבית קונבולוציונית עמוקה בת 18 שכבות. מערך הנתונים של CIFAR-10 משמש לעתים קרובות כדי להעריך את תקפותן של טכניקות וגישות שונות ב-ML. הוא מורכב מ-60,000 תמונות צבעוניות בגודל 32×32 המסומנות על פני 10 כיתות.

בסעיפים הבאים, אנו מראים כיצד GLISTER יכול לעזור לך לענות על השאלה הבאה במידה מסוימת:

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

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

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

למרות שאנו דנים בשימוש ב-GLISTER בתמונות, אתה יכול ליישם אותו גם על אלגוריתמי אימון העובדים עם נתונים מובנים או טבלאיים.

בחירת תת קבוצת נתונים

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

הראשוני נייר GLISTER מתאר חילופי מהירות/דיוק בגדלים שונים של תת-קבוצות נתונים, כדלקמן באמצעות א LeNet מודל:

גודל קבוצת משנה speedup דיוק
10% 6x -3%
30% 2.5x -1.20%
50% 1.5x -0.20%

כדי להכשיר את הדגם, אנו מפעילים א עבודת הדרכה של SageMaker באמצעות סקריפט הדרכה מותאם אישית. כמו כן, כבר העלינו את מערך התמונות שלנו אליו שירות אחסון פשוט של אמזון (אמזון S3). כמו בכל עבודת הכשרה של SageMaker, עלינו להגדיר Estimator לְהִתְנַגֵד. מעריך PyTorch מ- sagemaker.pytorch החבילה מאפשרת לנו להריץ סקריפט הדרכה משלנו במיכל PyTorch מנוהל. ה inputs המשתנה הועבר לאומדן .fit הפונקציה מכילה מילון של מיקום S3 של מערך ההדרכה והאימות.

השמיים train.py סקריפט מופעל כאשר משימת הדרכה מופעלת. בסקריפט זה, אנו מייבאים את מודל ResNet-18 מספריית CORDS ומעבירים לו את מספר המחלקות במערך הנתונים שלנו באופן הבא:

from cords.utils.models import ResNet18 numclasses = 10
model = ResNet18(numclasses)

לאחר מכן, אנו משתמשים ב- gen_dataset פונקציה מ-CORDS ליצירת מערכי נתונים של הדרכה, אימות ובדיקה:

from cords.utils.data.datasets.SL import gen_dataset train_set, validation_set, test_set, numclasses = gen_dataset(
datadir="/opt/ml/input/data/training",
dset_name="cifar10",
feature="dss",
type="image")

מכל מערך נתונים, אנו יוצרים עומס נתונים מקביל של PyTorch:

train_loader = torch.utils.data.DataLoader(train_set,
batch_size=batch_size,
shuffle=True) validation_loader = torch.utils.data.DataLoader(validation_set,
batch_size=batch_size,
shuffle=False)

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

כדי ליצור את האובייקט, אנו מעבירים ארגומנטים ספציפיים לאסטרטגיית הבחירה בתור א DotMap חפץ יחד עם train_loader, validation_loader, ו logger:

import logging
from cords.utils.data.dataloader.SL.adaptive import GLISTERDataLoader
from dotmap import DotMap dss_args = # GLISTERDataLoader specific arguments
dss_args = DotMap(dss_args)
dataloader = GLISTERDataLoader(train_loader,
validation_loader,
dss_args,
logger,
batch_size=batch_size,
shuffle=True,
pin_memory=False)

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

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

מעקב אחר ניסוי

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

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

עבור פוסט זה, כל ריצת אימון מיוצגת בתור א Run ב- SageMaker Experiments. הריצות הקשורות לניסוי שלנו מקובצות כולן תחת אחת Experiment לְהִתְנַגֵד. ניתן לצרף ריצות לניסוי נפוץ בעת יצירת ה Estimator עם ה-SDK. ראה את הקוד הבא:

from sagemaker.utils import unique_name_from_base
from sagemaker.experiments.run import Run, load_run experiment_name = unique_name_from_base("data-centric-experiment")
with Run(
experiment_name=experiment_name,
sagemaker_session=sess
) as run:
estimator = PyTorch('train.py',
source_dir="source",
role=role,
instance_type=instance_type,
instance_count=1,
framework_version=framework_version,
py_version='py3',
env={ 'SAGEMAKER_REQUIREMENTS': 'requirements.txt',
})
estimator.fit(inputs)

כחלק מתסריט ההדרכה המותאם אישית שלך, אתה יכול לאסוף מדדי ריצה על ידי שימוש load_run:

from sagemaker.experiments.run import load_run
from sagemaker.session import Session if __name__ == "__main__":
args = parse_args()
session = Session(boto3.session.Session(region_name=args.region))
with load_run(sagemaker_session=session) as run:
train(args, run)

לאחר מכן, באמצעות אובייקט הריצה שהוחזר על ידי הפעולה הקודמת, אתה יכול לאסוף נקודות נתונים לכל תקופה על ידי קריאה run.log_metric(name, value, step) ואספקת השם, הערך ומספר העידן הנוכחי.

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

כדי להציג את דיוקי האימות בתוך Studio, בחר לנתח על הניסוי ריצות עמוד.

רשימת ניסויים

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

תרשים ניסויים

ה-SDK מאפשר לך גם לאחזר מידע הקשור לניסוי כמסגרת נתונים של Pandas:

from sagemaker.analytics import ExperimentAnalytics trial_component_analytics = ExperimentAnalytics(
sagemaker_session=sess.sagemaker_client,
experiment_name=experiment_name
)
analytic_table = trial_component_analytics.dataframe()

לחלופין, ניתן למיין את משרות ההדרכה. למשל, נוכל להוסיף "metrics.validation:accuracy.max" כערך של sort_by פרמטר הועבר אל ExperimentAnalytics כדי להחזיר את התוצאה לפי דיוק האימות.

כצפוי, הניסויים שלנו מראים שהחלת GLISTER ובחירת תת קבוצת נתונים על אלגוריתם האימון מפחיתה את זמן האימון. בעת הפעלת אלגוריתם האימון הבסיסי שלנו, הזמן החציוני להשלמת עידן בודד נע סביב 27 שניות. לעומת זאת, החלת GLISTER לבחירת תת-קבוצה שווה ערך ל-50%, 30% ו-10% ממערך הנתונים הכולל מביא לזמנים להשלמת עידן של כ-13, 8.5 ו-2.75 שניות, בהתאמה, במופעים ml.p3.2xlarge .

אנו גם רואים השפעה מזערית יחסית על דיוק האימות, במיוחד כאשר משתמשים בקבוצות משנה של 50%. לאחר אימון במשך 100 עידנים, קו הבסיס מייצר דיוק אימות של 92.72%. לעומת זאת, החלת GLISTER לבחירת תת-קבוצה שווה ערך ל-50%, 30% ו-10% ממערך הנתונים הכולל מביא לדיוק אימות של 91.42%, 89.76% ו-82.82%, בהתאמה.

סיכום

SageMaker Ground Truth ו- SageMaker Experiments מאפשרים גישה ממוקדת נתונים ללמידת מכונה על ידי כך שהם מאפשרים למדעני נתונים ומהנדסי ML לייצר מערכי נתונים עקביים יותר ולעקוב אחר ההשפעה של טכניקות מתקדמות יותר כשהם מיישמים אותם בשלב בניית המודל. הטמעת גישה ממוקדת נתונים ל-ML מאפשרת לך להפחית את כמות הנתונים הנדרשת על ידי המודל שלך ולשפר את חוסנו.

נסה את זה, וספר לנו מה אתה חושב בתגובות.


על המחברים

Use a data-centric approach to minimize the amount of data required to train Amazon SageMaker models PlatoBlockchain Data Intelligence. Vertical Search. Ai.ניקולס ברנייה הוא אדריכל פתרונות, חלק מצוות המגזר הציבורי הקנדי ב-AWS. כיום הוא מנהל תואר שני עם תחום מחקר בלמידה עמוקה ומחזיק בחמש הסמכות AWS, כולל הסמכת ML Specialty. ניקולס נלהב לעזור ללקוחות להעמיק את הידע שלהם על AWS על ידי עבודה איתם כדי לתרגם את האתגרים העסקיים שלהם לפתרונות טכניים.

Use a data-centric approach to minimize the amount of data required to train Amazon SageMaker models PlatoBlockchain Data Intelligence. Vertical Search. Ai.ג'יבנילדו אלבס הוא אדריכל אבות טיפוס בצוות הנדסת אבות טיפוס והנדסת ענן בשירותי האינטרנט של אמזון, שעוזר ללקוחות לחדש ולהאיץ על ידי הצגת אמנות האפשריות ב-AWS, לאחר שכבר הטמיעו מספר אבות טיפוס סביב בינה מלאכותית. יש לו קריירה ארוכה בהנדסת תוכנה ובעבר עבד כמהנדס פיתוח תוכנה ב-Amazon.com.br.

בול זמן:

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