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

צמצם את הזמן שלוקח לפרוס את הדגמים שלך ל-Amazon SageMaker לבדיקה

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

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

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

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

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

אם יש לך מודלים שעברו הכשרה מקומית תוך שימוש ב-IDE המועדף עליך וברצונך ליהנות מקנה המידה של הענן, תוכל להשתמש בספרייה זו כדי לפרוס את המודל שלך ל- SageMaker. עם SageMaker, בנוסף לכל יתרונות קנה המידה של פלטפורמת ML מבוססת ענן, יש לך גישה לכלי הדרכה ייעודיים (אימון מבוזר, כוונון היפרפרמטרים), ניהול ניסויים, ניהול מודלים, זיהוי הטיה, יכולת הסבר מודל ועוד רבים אחרים יכולות שיכולות לעזור לך בכל היבט של מחזור החיים של ML. אתה יכול לבחור מבין שלוש המסגרות הפופולריות ביותר עבור ML: Scikit-learn, PyTorch ו-TensorFlow, ותוכל לבחור את סוג המחשוב שאתה רוצה. ברירות מחדל מסופקות לאורך כל הדרך כך שמשתמשי ספרייה זו יכולים לפרוס את המודלים שלהם ללא צורך בקבלת החלטות מורכבות או ללמוד מושגים חדשים. בפוסט זה, אנו מראים לך כיצד להתחיל עם ספרייה זו ולבצע אופטימיזציה של פריסת דגמי ה-ML שלך באירוח של SageMaker.

ניתן למצוא את הספרייה ב- מאגר GitHub.

ערכת הכלים להגירה של SageMaker

השמיים SageMakerMigration הכיתה זמינה דרך ספריית Python שפורסמה ב-GitHub. הוראות להתקנת ספרייה זו מסופקות במאגר; ודא שאתה פועל לפי ה-README כדי להגדיר כראוי את הסביבה שלך. לאחר התקנת ספרייה זו, שאר הפוסט הזה מדבר על איך אתה יכול להשתמש בה.

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

עבור דגמי Scikit-learn, PyTorch ו-TensorFlow, ספרייה זו תומכת בפריסת מודלים מאומנים לנקודת קצה של SageMaker בזמן אמת או לנקודת קצה ללא שרת. למידע נוסף על אפשרויות ההסקה ב- SageMaker, עיין ב פרוס מודלים להסקת מסקנות.

נקודות קצה בזמן אמת לעומת ללא שרת

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

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

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

הכן את המודל המיומן שלך ואת תסריט ההסקה שלך

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

חפץ המודל המאומן הוא פשוט מודל שמור של Scikit-learn, PyTorch או TensorFlow. עבור Scikit-learn, זה בדרך כלל קובץ חמוצים, עבור PyTorch זהו קובץ .pt או .pth, ועבור TensorFlow זוהי תיקייה עם נכסים, קבצי .pb ומשתנים אחרים.

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

שימו לב שארבע הפונקציות הללו חלות על PyTorch ו Scikit-ללמוד מיכלים במיוחד. ל-TensorFlow יש מטפלים מעט שונים מכיוון שהוא משולב עם הגשת TensorFlow. עבור תסריט מסקנות עם TensorFlow, יש לך שניים מטפלי מודל: Input_handler ו-output_handler. שוב, לאלה יש את אותה מטרת עיבוד מקדים ואחרי עיבוד שאיתה אתה יכול לעבוד, אבל הם מוגדרים בצורה שונה במקצת לשילוב עם הגשת TensorFlow. עבור מודלים של PyTorch, model_fn היא פונקציה חובה שתהיה בתסריט ההסקה.

model_fn

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

def model_fn(model_dir):
    model = Your_Model()
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model.load_state_dict(torch.load(f))
    return model

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

input_fn

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

def input_fn(request_body, request_content_type):
    """An input_fn that loads a pickled tensor"""
    if request_content_type == 'application/python-pickle':
        return torch.load(BytesIO(request_body))
    else:
        # Handle other content-types here or raise an Exception
        # if the content type is not supported.
        pass

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

predict_fn

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

def predict_fn(input_data, model):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    model.eval()
    with torch.no_grad():
        return model(input_data.to(device))

באפשרותך להוסיף output_fn לנתח את הפלט של predict_fn לפני החזרתו ללקוח. חתימת הפונקציה היא def output_fn(prediction, content_type).

העבר את הדגם המאומן שלך ל- SageMaker

לאחר שיש לך את קובץ המודל המיומן שלך ואת סקריפט ההסקות, עליך לשים את הקבצים האלה בתיקייה באופן הבא:

#SKLearn Model

model_folder/
    model.pkl
    inference.py
    
# Tensorflow Model
model_folder/
    0000001/
        assets/
        variables/
        keras_metadata.pb
        saved_model.pb
    inference.py
    
# PyTorch Model
model_folder/
    model.pth
    inference.py

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

from sagemaker_migration import frameworks as fwk

if __name__ == "__main__":
    ''' '''
    sk_model = fwk.SKLearnModel(
        version = "0.23-1", 
        model_data = 'model.joblib',
        inference_option = 'real-time',
        inference = 'inference.py',
        instance_type = 'ml.m5.xlarge'
    )
    sk_model.deploy_to_sagemaker()

לאחר פריסת נקודת הקצה שלך, הקפד לנקות את כל המשאבים שלא תשתמש בהם דרך מסוף SageMaker או דרך delete_endpoint קריאת API של Boto3.

סיכום

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

בדוק מאגר GitHub כדי לחקור יותר על שימוש בכלי הגירה של SageMaker, ואל תהסס לתרום גם דוגמאות או בקשות תכונה להוספה לפרויקט!


על המחברים

צמצם את הזמן שלוקח לפרוס את הדגמים שלך באמזון SageMaker לבדיקת PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.קירית תדאקה הוא אדריכל ML Solutions העובד בצוות Amazon SageMaker Service SA. לפני שהצטרפה ל-AWS, קירית בילתה זמן בעבודה בסטארט-אפים של בינה מלאכותית בשלבים מוקדמים ולאחריה זמן מה בייעוץ בתפקידים שונים במחקר AI, MLOps ומנהיגות טכנית.

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

בול זמן:

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