הפעל פילוח תמונה עם Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

הפעל פילוח תמונה עם Amazon SageMaker JumpStart

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

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

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

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

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

  • פרוס מודלים מאומנים מראש למשימות ML נפוצות – JumpStart מאפשר לך לטפל במשימות ML נפוצות ללא מאמץ פיתוח על ידי מתן פריסה קלה של מודלים שהוכשרו מראש על מערכי נתונים גדולים וזמינים לציבור. קהילת המחקר של ML השקיעה מאמץ רב כדי להפוך את רוב המודלים שפותחו לאחרונה לזמינים לשימוש הציבור. JumpStart מארח אוסף של למעלה מ-300 דגמים, המשתרעים על 15 משימות ה-ML הפופולריות ביותר כגון זיהוי אובייקטים, סיווג טקסט ויצירת טקסט, מה שמקל על מתחילים להשתמש בהם. דגמים אלה נשאבים ממרכזי דגמים פופולריים כגון TensorFlow, PyTorch, Hugging Face ו-MXNet.
  • כוונן דגמים מאומנים מראש - 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.

פילוח סמנטי

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

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

ספריית הקלט צריכה להיראות כמו הקוד הבא אם נתוני האימון מכילים שתי תמונות. השמות של קבצי ה-.png יכולים להיות כל דבר.

input_directory
    |--images
        |--abc.png
        |--def.png
    |--masks
        |--abc.png
        |--def.png
    class_label_to_prediction_index.json

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

פילוח מקרים

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

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

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

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

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

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

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

אנו גם דנים בתכונות מתקדמות נוספות של JumpStart.

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

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

הפעל מסקנות על המודל שהוכשר מראש

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

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

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

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

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

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

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

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

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

הפעל מסקנות על המודל שהוכשר מראש

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

SageMaker היא פלטפורמה המבוססת על מכולות Docker. JumpStart משתמש ב-framework הספציפי הזמין מכולות ללמידה עמוקה של SageMaker (DLCs). אנו מביאים חבילות נוספות, כמו גם סקריפטים לטיפול באימון והסקת מסקנות עבור המשימה שנבחרה. לבסוף, חפצי המודל שהוכשרו מראש מובאים בנפרד model_uris, המספק גמישות לפלטפורמה. אתה יכול להשתמש בכל מספר של דגמים שהוכשרו מראש לאותה משימה עם תסריט הדרכה או מסקנות בודד. ראה את הקוד הבא:

model_id, model_version = "mxnet-semseg-fcn-resnet50-ade", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    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")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

למשל פילוח, אנחנו יכולים להגדיר model_id ל mxnet-semseg-fcn-resnet50-ade. ה-is במזהה מתאים לפילוח מופע.

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

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

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

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

query_response = query(base_model_predictor, pedestrian_img)
predictions, labels, image_labels = parse_response(query_response)
print("Objects present in the picture:", image_labels)

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

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

from sagemaker import image_uris, model_uris, script_uris

model_id, model_version = "mxnet-semseg-fcn-resnet50-ade", "*"
training_instance_type = "ml.p3.2xlarge"
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. אנו משתמשים במערך נתונים שמתארח בפומבי ב-Amazon S3, המתמקד בצורה נוחה בפילוח סמנטי. יש לבנות את מערך הנתונים לכוונון עדין כפי שהוסבר בסעיף הקודם. ראה את הקוד לדוגמה הבא:

# URI of your training dataset
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_SemSeg/"
training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning")# Create SageMaker Estimator instance
semseg_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
semseg_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.

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

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

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

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

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

סיכום

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

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


על הכותבים

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

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

הפעל פילוח תמונה עם Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.לאונרדו בצ'גה הוא מדען ומנהל בכיר בצוות Amazon SageMaker JumpStart. הוא נלהב מבניית שירותי AI לראייה ממוחשבת.

בול זמן:

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