אימון והסקת קנה מידה של אלפי דגמי ML עם Amazon SageMaker | שירותי האינטרנט של אמזון

אימון והסקת קנה מידה של אלפי דגמי ML עם Amazon SageMaker | שירותי האינטרנט של אמזון

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

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

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

מקרה שימוש: חיזוי אנרגיה

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

ישנן שלוש תכונות במערך הנתונים שנוצר:

  • מספר לקוח – זהו מזהה מספר שלם עבור כל לקוח, הנע בין 0–999.
  • חותם – זהו ערך תאריך/שעה המציין את השעה שבה נמדדה צריכת האנרגיה. חותמות הזמן נוצרות באופן אקראי בין תאריכי ההתחלה והסיום המצוינים בקוד.
  • צְרִיכָה – זהו ערך צף המציין את צריכת האנרגיה, הנמדדת ביחידה שרירותית כלשהי. ערכי הצריכה נוצרים באקראי בין 0-1,000 עם עונתיות סינוסואידית.

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

כדי לאמן ולשרת ביעילות אלפי דגמי ML, אנו יכולים להשתמש בתכונות הבאות של SageMaker:

  • עיבוד SageMaker – SageMaker Processing הוא שירות הכנת נתונים מנוהל במלואו המאפשר לך לבצע משימות עיבוד נתונים והערכת מודלים על נתוני הקלט שלך. אתה יכול להשתמש ב- SageMaker Processing כדי להפוך נתונים גולמיים לפורמט הדרוש להדרכה והסקת מסקנות, כמו גם להפעיל הערכות אצווה ומקוונות של המודלים שלך.
  • משרות הדרכה של SageMaker - אתה יכול להשתמש בעבודות אימון של SageMaker כדי להכשיר מודלים על מגוון אלגוריתמים וסוגי נתוני קלט, ולציין את משאבי המחשוב הדרושים להדרכה.
  • MME של SageMaker - נקודות קצה מרובות מודלים מאפשרות לך לארח מודלים מרובים בנקודת קצה אחת, מה שמקל על הגשת תחזיות ממספר מודלים באמצעות API אחד. SageMaker MMEs יכולים לחסוך זמן ומשאבים על ידי הפחתת מספר נקודות הקצה הדרושים לשרת תחזיות ממספר מודלים. MMEs תומכים באירוח של דגמים מגובי CPU ו-GPU כאחד. שימו לב שבתרחיש שלנו, אנו משתמשים ב-1,000 דגמים, אך זו אינה מגבלה של השירות עצמו.

התרשים הבא ממחיש את ארכיטקטורת הפתרונות.

ארכיטקטורה המציגה את התהליך המתואר

זרימת העבודה כוללת את השלבים הבאים:

  1. אנו משתמשים ב-SageMaker Processing כדי לעבד נתונים מראש וליצור קובץ CSV בודד לכל לקוח ולאחסן אותו שירות אחסון פשוט של אמזון (אמזון S3).
  2. עבודת ההדרכה של SageMaker מוגדרת לקרוא את הפלט של עבודת SageMaker Processing ולהפיץ אותה באופן סיבובי למופעי ההדרכה. שימו לב שניתן להשיג זאת גם עם צינורות SageMaker של אמזון.
  3. חפצי הדגם מאוחסנים באמזון S3 על ידי עבודת ההדרכה, ומוגשים ישירות מה- SageMaker MME.

קנה מידה של הכשרה לאלפי דגמים

קנה המידה של ההכשרה של אלפי דגמים אפשרי באמצעות distribution פרמטר של קלט הדרכה מחלקה ב-SageMaker Python SDK, המאפשרת לך לציין כיצד הנתונים מחולקים על פני מספר מופעי אימון עבור עבודת הדרכה. יש שלוש אפשרויות עבור distribution פָּרָמֶטֶר: FullyReplicated, ShardedByS3Key, ו ShardedByRecord. ה ShardedByS3Key אפשרות פירושה שנתוני האימון מחולקים על ידי מפתח אובייקט S3, כאשר כל מופע אימון מקבל תת-קבוצה ייחודית של הנתונים, תוך הימנעות שכפול. לאחר העתקת הנתונים על ידי SageMaker למכולות ההדרכה, נוכל לקרוא את מבנה התיקיות והקבצים כדי להכשיר דגם ייחודי לכל קובץ לקוח. להלן קטע קוד לדוגמה:

# Assume that the training data is in an S3 bucket already, pass the parent folder
s3_input_train = sagemaker.inputs.TrainingInput( s3_data='s3://my-bucket/customer_data', distribution='ShardedByS3Key'
) # Create a SageMaker estimator and set the training input
estimator = sagemaker.estimator.Estimator(...)
estimator.fit(inputs=s3_input_train)

כל עבודת הכשרה של SageMaker מאחסנת את הדגם שנשמר ב- /opt/ml/model תיקייה של מיכל ההדרכה לפני ארכיון ב-a model.tar.gz קובץ, ולאחר מכן מעלה אותו לאמזון S3 עם סיום עבודת ההדרכה. משתמשי כוח יכולים גם להפוך תהליך זה לאוטומטי עם SageMaker Pipelines. כאשר מאחסנים מספר דגמים באמצעות אותה עבודת הדרכה, SageMaker יוצר יחיד model.tar.gz קובץ המכיל את כל הדגמים המיומנים. זה אומר שכדי לשרת את המודל, נצטרך לפרק את הארכיון תחילה. כדי להימנע מכך, אנו משתמשים מחסומים כדי לשמור את המצב של דגמים בודדים. SageMaker מספק את הפונקציונליות להעתיק נקודות ביקורת שנוצרו במהלך עבודת ההדרכה לאמזון S3. כאן, יש לשמור את המחסומים במיקום מוגדר מראש, כאשר ברירת המחדל היא /opt/ml/checkpoints. ניתן להשתמש בנקודות ביקורת אלו לחידוש האימונים ברגע מאוחר יותר או כמודל לפריסה בנקודת קצה. לסיכום ברמה גבוהה של האופן שבו פלטפורמת ההדרכה של SageMaker מנהלת נתיבי אחסון עבור מערכי נתונים, חפצי מודל, נקודות ביקורת ופלטים בין אחסון בענן AWS ועבודות הדרכה ב- SageMaker, עיין ב- אמזון SageMaker תיקיות אחסון הדרכה עבור מערכי נתונים, מחסומים, חפצי מודל ופלטים.

הקוד הבא משתמש בקוד פיקטיבי model.save() פונקציה בתוך train.py סקריפט המכיל את היגיון האימון:

import tarfile
import boto3
import os [ ... argument parsing ... ] for customer in os.list_dir(args.input_path): # Read data locally within the Training job df = pd.read_csv(os.path.join(args.input_path, customer, 'data.csv')) # Define and train the model model = MyModel() model.fit(df) # Save model to output directory with open(os.path.join(output_dir, 'model.json'), 'w') as fout: fout.write(model_to_json(model)) # Create the model.tar.gz archive containing the model and the training script with tarfile.open(os.path.join(output_dir, '{customer}.tar.gz'), "w:gz") as tar: tar.add(os.path.join(output_dir, 'model.json'), "model.json") tar.add(os.path.join(args.code_dir, "training.py"), "training.py")

קנה מידה של מסקנות לאלפי דגמים עם MME של SageMaker

SageMaker MMEs מאפשרים לך לשרת מספר דגמים בו-זמנית על ידי יצירת תצורת נקודת קצה הכוללת רשימה של כל המודלים לשרת, ולאחר מכן יצירת נקודת קצה באמצעות תצורת נקודת קצה זו. אין צורך לפרוס מחדש את נקודת הקצה בכל פעם שאתה מוסיף מודל חדש מכיוון שנקודת הקצה תשרת אוטומטית את כל הדגמים המאוחסנים בנתיבי S3 שצוינו. זה מושג עם שרת רב מודל (MMS), מסגרת קוד פתוח לשרת דגמי ML שניתן להתקין בקונטיינרים כדי לספק את הקצה הקדמי שממלא את הדרישות עבור ממשקי ה-API החדשים של מיכלי MME. בנוסף, אתה יכול להשתמש בשרתים אחרים, כולל לפידרבס ו טריטון. ניתן להתקין MMS במיכל המותאם אישית שלך באמצעות ערכת הכלים של SageMaker Inference. למידע נוסף על איך להגדיר את Dockerfile שלך ​​לכלול MMS ולהשתמש בו כדי לשרת את הדגמים שלך, עיין ב בנה מיכל משלך עבור נקודות קצה מרובות של SageMaker.

קטע הקוד הבא מראה כיצד ליצור MME באמצעות SageMaker Python SDK:

from sagemaker.multidatamodel import MultiDataModel # Create the MultiDataModel definition
multimodel = MultiDataModel( name='customer-models', model_data_prefix=f's3://{bucket}/scaling-thousand-models/models', model=your_model,
) # Deploy on a real-time endpoint
predictor = multimodel.deploy( initial_instance_count=1, instance_type='ml.c5.xlarge',
)

כאשר ה-MME פעיל, אנו יכולים להפעיל אותו כדי ליצור תחזיות. ניתן לבצע הפעלות בכל SDK של AWS וכן עם SageMaker Python SDK, כפי שמוצג בקטע הקוד הבא:

predictor.predict( data='{"period": 7}', # the payload, in this case JSON target_model='{customer}.tar.gz' # the name of the target model
)

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

סיכום

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


על הכותבים

תמונה של דוידדויד גליטלי הוא אדריכל פתרונות מומחה עבור AI/ML באזור EMEA. הוא מבוסס בבריסל ועובד בשיתוף פעולה הדוק עם לקוחות ברחבי בנלוקס. הוא מפתח מאז שהיה צעיר מאוד, התחיל לקוד בגיל 7. הוא התחיל ללמוד AI/ML באוניברסיטה, ומאז התאהב בזה.

תמונה של מאוריץמאוריט דה גרוט הוא ארכיטקט פתרונות ב- Amazon Web Services, שבסיסה באמסטרדם. הוא אוהב לעבוד על נושאים הקשורים ללמידה במכונה ויש לו נטייה לסטארטאפים. בזמנו הפנוי הוא אוהב לעשות סקי ולשחק סקווש.

בול זמן:

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