פרוס פתרון MLOps המארח את נקודות הקצה של המודל שלך ב-AWS Lambda PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

פרוס פתרון MLOps המארח את נקודות הקצה של המודל שלך ב-AWS Lambda

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

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

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

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

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

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

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

נתחיל בפינה השמאלית העליונה של התרשים. ה עיבוד - בניית תמונה הרכיב הוא CI/CD מונע AWS CodeCommit מאגר שעוזר לבנות ולדחוף א סַוָר מיכל ל מרשם מיכל אלסטי של אמזון (Amazon ECR). מיכל עיבוד זה משמש כשלב הראשון בצינור ה-ML שלנו, אך נעשה בו שימוש חוזר גם עבור שלבי עיבוד לאחר. במקרה שלנו, אנו מיישמים סימולציה של מונטה קרלו כפוסט-עיבוד. ה הדרכה - בניית תמונה למאגר המתואר בצד שמאל למטה יש את אותו מנגנון כמו תהליך בלוק מעליו. ההבדל העיקרי הוא שהוא בונה את המיכל לאימון מודלים.

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

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

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

כדי לפרוס את הפתרון שלנו בהצלחה, אתה צריך את הדברים הבאים:

הורד את מאגר GitHub

כצעד ראשון, שיבוט את מאגר GitHub למכונה המקומית שלך. הוא מכיל את מבנה התיקיות הבא:

  • פריסה - מכיל קוד רלוונטי לפריסה
  • mllib - מכיל קוד ML לעיבוד מקדים, הדרכה, הגשה והדמיה
  • בדיקות - מכיל מבחני יחידה ואינטגרציה

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

  1. פתח את deployment/app.py ושנה את ה-bucket_name תחת SageMakerPipelineSourceCodeStack. ה bucket_name צריך להיות ייחודי גלובלי (לדוגמה, הוסף את שמך המלא).
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py, לשנות את ה default_bucket תחת get_pipeline לאותו שם כפי שצוין בשלב 1.

פרוס פתרון עם AWS CDK

ראשית, הגדר את AWS CLI שלך עם החשבון והאזור שבהם ברצונך לפרוס. לאחר מכן הפעל את הפקודות הבאות כדי לעבור לספריית הפריסה, צור סביבה וירטואלית, הפעל אותה, התקן את חבילות ה-pip הנדרשות שצוינו ב- setup.py, והפעל את deploy.sh:

cd deployment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit install
chmod u+x deploy.sh
./deploy.sh

deploy.sh מבצע את הפעולות הבאות:

  1. יוצר סביבה וירטואלית בפייתון.
  2. מקור סקריפט הפעלת הסביבה הווירטואלית.
  3. מתקין את AWS CDK ואת הדרישות המפורטות ב setup.py.
  4. רצועות אתחול הסביבה.
  5. מכווץ ומעתיק את הקבצים הדרושים שפיתחת, כמו שלך mllib קבצים, לתיקיות המתאימות בהן יש צורך בנכסים אלה.
  6. ריצות cdk deploy —require-approval never.
  7. יוצר AWS CloudFormation ערימה דרך AWS CDK.

השלב הראשוני של הפריסה צריך לקחת פחות מ-5 דקות. כעת אמורים להיות לך ארבעה מאגרים ב-CodeCommit באזור שציינת דרך AWS CLI, כפי שמתואר בתרשים הארכיטקטורה. ה קוד צינור AWS צינורות מופעלים בו זמנית. ה modelbuild ו modeldeploy צינורות תלויים בהרצה מוצלחת של בניית תמונת העיבוד וההדרכה. ה modeldeploy הצינור תלוי בבניית מודל מוצלחת. פריסת הדגם אמורה להסתיים תוך פחות מ-1.5 שעות.

שכפל את מאגרי המודלים בסטודיו

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

git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modelbuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modeldeploy
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-processing-imagebuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-training-imagebuild

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

אתה יכול גם להתאים את הפתרון במחשב המקומי שלך ולעבוד על ה-IDE המועדף עליך.

נווט בין SageMaker Pipelines וב- SageMaker Experiments UI

צינור של SageMaker הוא סדרה של שלבים מחוברים המוגדרים באמצעות אמזון SageMaker Python SDK. הגדרת צינור זו מקודדת צינור באמצעות גרף אציקלי מכוון (DAG) שניתן לייצא כהגדרת JSON. למידע נוסף על המבנה של צינורות כאלה, עיין ב סקירת צינורות SageMaker.

נווט אל משאבי SageMaker חלונית ובחר את המשאב Pipelines להצגה. תַחַת שם, אתה צריך לראות PROJECT_NAME-PROJECT_ID. בממשק המשתמש של הריצה, אמורה להיות ריצה מוצלחת שצפויה להימשך קצת יותר משעה. הצינור אמור להיראות כפי שמוצג בצילום המסך הבא.

אמזון SageMaker Pipeline

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

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

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

אשר פריסת Lambda ברישום המודלים

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

לאחר שתאשר את הדגם שלך ברישום הדגמים, א אמזון EventBridge כלל האירוע מופעל. כלל זה מריץ את צינור CodePipeline עם הסוף *-modeldeploy. בסעיף זה, אנו דנים כיצד פתרון זה משתמש בדגם המאושר ומארח אותו בפונקציית Lambda. CodePipeline לוקח את מאגר CodeCommit הקיים גם הוא מסתיים ב *-modeldeploy ומשתמש בקוד הזה כדי להפעיל ב-CodeBuild. הערך העיקרי עבור CodeBuild הוא ה- buildspec.yml קוֹבֶץ. בואו נסתכל על זה קודם:

version: 0.2

env:
  shell: bash

phases:
  install:
    runtime_versions:
      python: 3.8
    commands:
      - python3 -m ensurepip --upgrade
      - python3 -m pip install --upgrade pip
      - python3 -m pip install --upgrade virtualenv
      - python3 -m venv .venv
      - source .venv/bin/activate
      - npm install -g aws-cdk@2.26.0
      - pip install -r requirements.txt
      - cdk bootstrap
  build:
    commands:
      - python build.py --model-package-group-name "$SOURCE_MODEL_PACKAGE_GROUP_NAME"
      - tar -xf model.tar.gz
      - cp model.joblib lambda/digital_twin
      - rm model.tar.gz
      - rm model.joblib
      - cdk deploy --require-approval never

במהלך שלב ההתקנה, אנו מוודאים שספריות Python מעודכנות, יוצרים סביבה וירטואלית, מתקינים את AWS CDK v2.26.0 ומתקינים את aws-cdk ספריית Python יחד עם אחרים המשתמשים בקובץ הדרישות. אנחנו גם אתחול חשבון AWS. בשלב הבנייה, אנחנו רצים build.py, שעליו נדון בהמשך. הקובץ הזה מוריד את חפץ דגם SageMaker האחרון שאושר ממנו שירות אחסון פשוט של אמזון (Amazon S3) למופע CodeBuild המקומי שלך. זֶה .tar.gz הקובץ נפתח והתוכן שלו מועתק לתיקיה המכילה גם את קוד ה-Lambda הראשי שלנו. פונקציית Lambda נפרסת באמצעות AWS CDK, והקוד פועל מתוך קונטיינר Docker מ- Amazon ECR. זה נעשה באופן אוטומטי על ידי AWS CDK.

השמיים build.py file הוא קובץ Python שמשתמש בעיקר ב- AWS SDK עבור Python (Boto3) לרשימת חבילות הדגמים הזמינות.

הפונקציה get_approved_package מחזירה את Amazon S3 URI של החפץ שיורד לאחר מכן, כפי שתואר קודם לכן.

לאחר פריסה מוצלחת של המודל שלך, אתה יכול מבחן זה ישירות על קונסולת Lambda באזור שבו בחרת לפרוס. שם הפונקציה צריך להכיל DigitalTwinStack-DigitalTwin*. פתח את הפונקציה ונווט אל מִבְחָן לשונית. אתה יכול להשתמש באירוע הבא כדי להפעיל שיחת בדיקה:

{
  "flow": "[280, 300]",
  "pressure": "[69, 70]",
  "simulations": "10",
  "no_of_trials": "10",
  "train_error_weight": "1.0"
}

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

בדוק את פונקציית AWS Lambda

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

אמזון קוויקסייט

לנקות את

כדי למנוע חיובים נוספים, בצע את השלבים הבאים:

  • במסוף AWS CloudFormation, מחק את ה EnergyOptimization ערימה.
    זה מוחק את כל הפתרון.
  • מחק את הערימה DigitalTwinStack, אשר פרסה את פונקציית ה-Lambda שלך.

סיכום

בפוסט זה, הראינו לכם צינור MLOps מונע על ידי CI/CD של פתרון ניהול אנרגיה שבו אנו שומרים על כל שלב מנותק. אתה יכול לעקוב אחר צינורות ה-ML והניסויים שלך בממשק המשתמש של Studio. הדגמנו גם גישת פריסה שונה: עם אישור מודל ברישום המודלים, פונקציית Lambda המארח את הדגם המאושר נבנית באופן אוטומטי דרך CodePipeline.

אם אתה מעוניין לחקור את צינור MLOps ב-AWS או את הפתרון לניהול אנרגיה בר-קיימא, בדוק את מאגר GitHub ופרוס את המחסנית בסביבת AWS משלך!


על הכותבים

פרוס פתרון MLOps המארח את נקודות הקצה של המודל שלך ב-AWS Lambda PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.לורנס ואן דר מאס הוא מדען נתונים בשירותים מקצועיים של AWS. הוא עובד בשיתוף פעולה הדוק עם לקוחות בונים את פתרונות למידת המכונה שלהם ב-AWS, והוא נלהב מהאופן שבו למידת מכונה משנה את העולם כפי שאנו מכירים אותו.

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

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

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

בול זמן:

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