אימון מצטבר עם Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

אימון מצטבר עם Amazon SageMaker JumpStart

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

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

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

סקירה כללית של JumpStart

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

  • פרוס מודלים מאומנים מראש למשימות ML נפוצות – JumpStart מאפשר לך לטפל במשימות ML נפוצות ללא מאמץ פיתוח על ידי מתן פריסה קלה של מודלים שהוכשרו מראש על מערכי נתונים גדולים וזמינים לציבור. קהילת המחקר של ML השקיעה מאמץ רב כדי להפוך את רוב המודלים שפותחו לאחרונה לזמינים לשימוש הציבור; JumpStart מארח אוסף של למעלה מ-300 דגמים, המשתרעים על 15 משימות ה-ML הפופולריות ביותר כגון זיהוי אובייקטים, סיווג טקסט ויצירת טקסט, מה שמקל על מתחילים להשתמש בהם. דגמים אלה נשאבים ממרכזי דגמים פופולריים, כגון TensorFlow, PyTorch, Hugging Face ו-MXNet Hub.
  • כוונן דגמים מאומנים מראש - JumpStart מאפשר לך לכוונן מודלים מאומנים מראש ללא צורך בכתיבת אלגוריתם אימון משלך. ב-ML נקראת היכולת להעביר את הידע הנלמד בתחום אחד לתחום אחר העברת למידה. אתה יכול להשתמש בלמידה של העברה כדי לייצר מודלים מדויקים על מערכי הנתונים הקטנים יותר שלך, עם עלויות הדרכה נמוכות בהרבה מאלו הכרוכות באימון המודל המקורי. JumpStart כולל גם אלגוריתמי אימון פופולריים המבוססים על LightGBM, CatBoost, XGBoost ו-Skit-learn שתוכלו לאמן מאפס לרגרסיה טבלאית וסיווג.
  • השתמש בפתרונות מובנים מראש – JumpStart מספקת קבוצה של 17 פתרונות למקרי שימוש נפוצים ב-ML כגון חיזוי ביקוש ויישומים תעשייתיים ופיננסיים, אותם תוכל לפרוס בכמה קליקים בלבד. פתרונות הם יישומי ML מקצה לקצה המחברים שירותי AWS שונים כדי לפתור מקרה שימוש עסקי מסוים. הם משתמשים AWS CloudFormation תבניות וארכיטקטורות עזר לפריסה מהירה, מה שאומר שהן ניתנות להתאמה אישית מלאה.
  • השתמש בדוגמאות מחברת עבור אלגוריתמים של SageMaker – SageMaker מספקת חבילה של אלגוריתמים מובנים כדי לעזור למדעני נתונים ולעוסקים ב-ML להתחיל בהדרכה ובפריסה של מודלים של ML במהירות. JumpStart מספקת מחברות לדוגמה שבהן תוכל להשתמש כדי ליישם במהירות אלגוריתמים אלה.
  • סקור סרטוני הדרכה ובלוגים – JumpStart מספקת גם פוסטים וסרטונים רבים בבלוג שמלמדים אותך כיצד להשתמש בפונקציות שונות בתוך SageMaker.

JumpStart מקבל הגדרות VPC מותאמות אישית ו שירות ניהול מפתח AWS (AWS KMS) מפתחות הצפנה, כך שתוכל להשתמש בדגמים ובפתרונות הזמינים בצורה מאובטחת בתוך הסביבה הארגונית שלך. אתה יכול להעביר את הגדרות האבטחה שלך ל-JumpStart בתוך Studio או דרך SageMaker Python SDK.

סיווג תמונות

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

עבור מערך הנתונים שלנו, הקלט הוא ספרייה עם מספר ספריות משנה כמו מספר המחלקות. כל ספריית משנה צריכה לכלול תמונות השייכות למחלקה זו בפורמט jpg. ספריית הקלט צריכה להיראות כמו ההיררכיה הבאה אם ​​נתוני האימון מכילים תמונות משתי מחלקות: roses ו dandelion:

input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg

שמות התיקיות, המחלקות ושמות קבצי ה-jpg יכולים להיות כל דבר.

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

סקירה כללית דרך

הסעיפים הבאים מספקים הדגמה שלב אחר שלב לביצוע סיווג תמונות עם JumpStart, הן באמצעות ממשק המשתמש של Studio והן באמצעות ממשקי ה-API של JumpStart.

אנו עוברים על השלבים הבאים:

  1. גש ל-JumpStart דרך ממשק המשתמש של Studio:
    1. כוונן את הדגם המאומן מראש.
    2. פרוס את הדגם המכוונן.
    3. אמנו בהדרגה את הדגם המכוונן והפריסה מחדש.
  2. השתמש ב-JumpStart באופן פרוגרמטי עם SageMaker Python SDK:
    1. כוונן את הדגם המאומן מראש.
    2. פרוס את הדגם המכוונן.
    3. אמנו בהדרגה את הדגם המכוונן והפריסה מחדש.

גש ל-JumpStart דרך ממשק המשתמש של Studio

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

כוונן את הדגם המאומן מראש

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

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

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

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

פרוס את הדגם המכוונן

לאחר השלמת ההכשרה, תוכל לפרוס את המודל המכוונן מאותו עמוד שמכיל את פרטי עבודת ההדרכה. כדי לפרוס את המודל שלנו, אנו בוחרים סוג מופע אחר, ml.p2.xlarge. הוא עדיין מספק את האצת ה-GPU הדרושה להשהיה נמוכה של מסקנות, אבל בנקודת מחיר נמוכה יותר. לאחר שתגדיר את מופע האירוח של SageMaker, בחר לפרוס. ייתכן שיחלפו 5-10 דקות עד שנקודת הקצה המתמשכת שלך תפעל.

אז נקודת הקצה שלך תפעולית ומוכנה להגיב לבקשות להסיק!

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

אמן בהדרגה את הדגם המכוונן ופריסה

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

השתמש ב-JumpStart באופן פרוגרמטי עם ה-SDK של SageMaker

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

כוונן את הדגם המאומן מראש

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

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=model_id, model_version=model_version, image_scope="training", instance_type=training_instance_type,
) # Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

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

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

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
ic_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

אנו משיגים את אותם היפרפרמטרים המוגדרים כברירת מחדל עבור המודל הנבחר שלנו כמו אלה שראינו בסעיף הקודם, באמצעות sagemaker.hyperparameters.retrieve_default(). לאחר מכן, אנו מייצרים הערכה של SageMaker ומתקשרים לשיטת .fit כדי להתחיל לכוונן את המודל שלנו, ולהעביר לו את Amazon S3 URI עבור נתוני ההדרכה שלנו. כפי שאתה יכול לראות, ה entry_point התסריט שסופק נקרא בשם transfer_learning.py (זהה עבור משימות ומודלים אחרים), וערוץ נתוני הקלט שהועבר אליו .fit חייב להיות שם training.

פריסת המודל המכוונן

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

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve( model_id=model_id, model_version=model_version, script_scope="inference"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

לאחר מספר דקות, המודל שלנו נפרס ונוכל לקבל ממנו תחזיות בזמן אמת!

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

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

אמנו בהדרגה את הדגם המכוונן והפריסה מחדש

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

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

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

סיכום

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

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

הפניות

  1. צוות TensorFlow, 2019

על הכותבים

אימון מצטבר עם Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ד"ר Vivek Madan הוא מדען יישומי בצוות אמזון SageMaker JumpStart. הוא קיבל את הדוקטורט שלו. מאוניברסיטת אילינוי באורבנה-שמפיין והיה חוקר פוסט דוקטורט בג'ורג'יה טק. הוא חוקר פעיל בלמידת מכונה ועיצוב אלגוריתמים ופרסם מאמרים בכנסים של EMNLP, ICLR, COLT, FOCS ו-SODA.

אימון מצטבר עם Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ז'ואאו מורה הוא אדריכל פתרונות AI/ML מומחה בשירותי האינטרנט של אמזון. הוא מתמקד בעיקר במקרים של שימוש ב-NLP ובעזרה ללקוחות לייעל אימון ופריסה של מודל למידה עמוקה. הוא גם חסיד פעיל של פתרונות ML בעלי קוד נמוך וחומרה מתמחה ב-ML.

אימון מצטבר עם Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ד"ר אשיש חתן הוא מדען יישומי בכיר עם אמזון SageMaker JumpStart ו אלגוריתמים מובנים של Amazon SageMaker ומסייע בפיתוח אלגוריתמים של למידת מכונה. הוא חוקר פעיל בלמידת מכונה והסקה סטטיסטית ופרסם מאמרים רבים בכנסים NeurIPS, ICML, ICLR, JMLR, ACL ו-EMNLP.

בול זמן:

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