הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת בפריסת AWS

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

עם המהדורה האחרונה של קוד פתוח Kubeflow v1.6.1, קהילת Kubeflow ממשיכה לתמוך באימוץ רחב היקף זה של Kubeflow עבור מקרי שימוש ארגוניים. המהדורה האחרונה כוללת הרבה תכונות חדשות ומרגשות כמו תמיכה ב-Kubernetes v1.22, בשילוב Python SDK עבור PyTorch, MXNet, MPI, XGBoost במפעיל ההדרכה המבוזר של Kubeflow, CRDs חדשים של ClusterServingRuntime ו- ServingRuntime עבור שירות מודלים ועוד רבים נוספים.

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

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

  • פתרון תשתית כקוד (IaaC) בלחיצה אחת הממכן את ההתקנה מקצה לקצה של Kubeflow, כולל יצירת אשכול EKS
  • תמיכה בהדרכה מבוזרת על אמזון SageMaker באמצעות מפעילי אמזון SageMaker עבור Kubernetes (ACK) ו רכיבי SageMaker עבור צינורות Kubeflow ומקומי ב-Kubernetes באמצעות מפעילי הדרכה של Kubeflow. לקוחות רבים משתמשים ביכולת זו כדי לבנות ארכיטקטורות למידת מכונה היברידיות שבהן הם ממנפים הן את מחשוב Kubernetes לשלב הניסויים והן את SageMaker כדי להפעיל עומסי עבודה בקנה מידה ייצור.
  • ניטור וצפייה משופרים עבור עומסי עבודה של ML, כולל אמזון EKS, מדדי Kubeflow ויומני יישומים באמצעות Prometheus, Grafana ו אמזון CloudWatch ואינטגרציות

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

Kubeflow ב-AWS

Kubeflow ב-AWS 1.6.1 מספק נתיב ברור לשימוש ב-Kubeflow, עם תוספת של שירותי AWS הבאים על היכולות הקיימות:

  • אינטגרציה של SageMaker עם Kubeflow להפעלת זרימות עבודה היברידיות של ML באמצעות SageMaker Operators for Kubernetes (ACK) ו- SageMaker Components for Kubeflow Pipelines.
  • אפשרויות פריסה אוטומטיות שופרו ופושטו באמצעות סקריפטים של Kustomize ותרשימי Helm.
  • נוספה תמיכה לפריסת Infrastructure as Code (IaC) בלחיצה אחת עבור Kubeflow ב-AWS באמצעות Terraform עבור כל האפשרויות הזמינות אפשרויות פריסה. סקריפט זה הופך את היצירה לאוטומטית של משאבי ה-AWS הבאים:
  • תמיכה AWS PrivateLink עבור Amazon S3 המאפשר למשתמשי אזור לא מסחריים להתחבר לנקודות הקצה שלהם S3.
  • נוספה אינטגרציה עם שירות מנוהל אמזון עבור פרומתאוס (AMP) ו אמזון ניהלה את גרפאנה לנטר מדדים עם Kubeflow ב-AWS.
  • קונטיינרים מעודכנים של שרת מחברת Kubeflow עם תמונות מיכל הלמידה העמוק העדכניות ביותר המבוססות על TensorFlow 2.10.0 ו- PyTorch 1.12.1.
  • אינטגרציה עם DLCs של AWS להפעלה מבוזרת הַדְרָכָה ו הסקה עומסי עבודה.

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

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

פרטי תכונות של Kubeflow ב-AWS

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

אפשרויות פריסה

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

אם אתה רוצה לפרוס את Kubeflow עם שינויים מינימליים, שקול את ה וניל אפשרות פריסה. ניתן להתקין את כל אפשרויות הפריסה הזמינות באמצעות Kustomize, Helm או Terraform.

יש לנו גם פריסות תוספים שונות שניתן להתקין על גבי כל אחת מאפשרויות הפריסה הבאות:

אפשרויות התקנה

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

אפשרות 1: Terraform (IaC)

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

לאפשרות זו יש את היתרונות הבאים:

  • זה מספק גמישות לארגונים לפרוס את Amazon EKS ו-Kubeflow בפקודה אחת מבלי לדאוג לתצורות ספציפיות של רכיבי Kubeflow. זה יעזור מאוד להאיץ את הערכת הטכנולוגיה, יצירת אבות טיפוס ומחזור החיים של פיתוח המוצר המספק גמישות לשימוש במודולי terraform ולשנות אותו כדי לענות על כל צרכים ספציפיים לפרויקט.
  • ארגונים רבים שהיום יש להם Terraform כמרכז אסטרטגיית הענן שלהם יכולים כעת להשתמש בפתרון Kubeflow על AWS Terraform כדי לעמוד ביעדי הענן שלהם.

אפשרות 2: התאמה אישית או הגה תרשימים:

אפשרות זו מאפשרת לך לפרוס את Kubeflow בתהליך דו-שלבי:

  1. צור משאבי AWS כמו Amazon EKS, Amazon RDS, Amazon S3 ו- Amazon Cognito, באמצעות הסקריפטים האוטומטיים הכלולים בהפצת AWS או ידנית בעקבות צעד אחר צעד מדריך.
  2. התקן פריסות של Kubeflow באמצעות תרשימי Helm או Kustomize.

לאפשרות זו יש את היתרונות הבאים:

  • המטרה העיקרית של אפשרות התקנה זו היא לספק תצורות Kubernetes הקשורות ל-Kubernetes. לכן, אתה יכול לבחור ליצור או להכניס אשכולות EKS קיימים או כל אחד ממשאבי AWS הקשורים כמו Amazon RDS, Amazon S3 ו- Amazon Cognito, ולהגדיר ולנהל אותו כך שיעבוד עם Kubeflow ב-AWS.
  • קל יותר לעבור ממניפסט Kustomize Kubeflow בקוד פתוח להפצה של AWS Kubeflow.

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

הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

אינטגרציה עם SageMaker

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

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

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

  • Amazon SageMaker ACK Operators for Kubernetes, המבוססים על בקרי AWS עבור Kubernetes (ACK) מסגרת. ACK היא אסטרטגיית AWS שמביאה סטנדרטיזציה לבניית בקרים מותאמים אישית של Kubernetes המאפשרים למשתמשי Kubernetes לספק משאבי AWS כמו מסדי נתונים או תורי הודעות פשוט על ידי שימוש ב-Kubernetes API. מפעילי SageMaker ACK מקלים על מפתחי ML ומדעני נתונים המשתמשים ב-Kubernetes כמטוס הבקרה שלהם לאמן, לכוונן ולפרוס דגמי ML ב-SageMaker מבלי להיכנס למסוף SageMaker.
  • אל האני רכיבי SageMaker לצינורות Kubeflow, המאפשרים לך לשלב את SageMaker עם הניידות והתזמור של Kubeflow Pipelines. עם רכיבי SageMaker, כל עבודה בזרימת העבודה של הצינור פועלת על SageMaker במקום באשכול Kubernetes המקומי. זה מאפשר לך ליצור ולפקח על הדרכה, כוונון, פריסת נקודות קצה ועבודות טרנספורמציה מקוריות של SageMaker מה-Kubeflow Pipelines שלך ומאפשרת לך להעביר מחשוב מלא כולל עבודות עיבוד נתונים והדרכה מאשכול Kubernetes לשירות המנוהל המותאם ללמידה מכונה של SageMaker.

החל מ-Kubeflow ב-AWS v1.6.1, כל אפשרויות הפריסה הזמינות של Kubeflow מפגישות את שתי אפשרויות האינטגרציה של Amazon SageMaker כברירת מחדל בפלטפורמה אחת. כלומר, כעת תוכל להגיש משרות SageMaker באמצעות מפעילי SageMaker ACK משרת Kubeflow Notebook עצמו על ידי שליחת המשאב המותאם אישית של SageMaker או משלב הצינור של Kubeflow באמצעות רכיבי SageMaker.

ישנן שתי גרסאות של רכיבי SageMaker - Boto3 (AWS SDK עבור AWS SDK עבור Python) רכיבים מבוססי גרסה 1 ורכיבי SageMaker Operator עבור K8s (ACK) מבוססי גרסה 2. הרכיבים החדשים של SageMaker גרסה 2 תומכים בממשקי האימון העדכניים ביותר של SageMaker ואנו נמשיך להוסיף עוד תכונות של SageMaker לגרסה זו של הרכיב. עם זאת, יש לך את הגמישות לשלב את רכיבי Sagemaker גרסה 2 לאימון וגרסה 1 עבור תכונות אחרות של SageMaker כמו כוונון היפרפרמטרים, עבודות עיבוד, אירוח ועוד רבים.

אינטגרציה עם פרומתאוס וגרפאנה

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

רכיבי Kubeflow, כגון Kubeflow Pipelines (KFP) ו-Notebook, פולטים מדדי Prometheus כדי לאפשר ניטור משאבי רכיבים כגון מספר הניסויים הרצים או ספירת מחברות.

ניתן לצבור מדדים אלו על ידי שרת Prometheus הפועל באשכול Kubernetes ולבצע שאילתות באמצעות Prometheus Query Language (PromQL). לפרטים נוספים על התכונות בהן פרומתאוס תומך, עיין ב- תיעוד פרומתאוס.

הפצת Kubeflow on AWS מספקת תמיכה באינטגרציה עם השירותים המנוהלים הבאים של AWS:

  1. Amazon Managed Prometheus (AMP) כלומר א פרומתאוס-שירות ניטור תואם לתשתית קונטיינרים ומדדי יישומים עבור קונטיינרים המקל על לקוחות לנטר בצורה מאובטחת סביבות קונטיינר בקנה מידה. באמצעות AMP, אתה יכול להמחיש, לנתח ולהתריע על המדדים, היומנים והעקבות שלך שנאספו ממקורות נתונים מרובים במערכת הנראות שלך, כולל AWS, ISV של צד שלישי ומשאבים אחרים בכל תיק ה-IT שלך.
  2. Amazon Managed Grafana, שירות הדמיית נתונים מנוהל ומאובטח במלואו המבוסס על הקוד הפתוח גרפנה פרויקט, המאפשר ללקוחות לבצע שאילתות מיידיות, לתאם ולהמחיש מדדים תפעוליים, יומנים ועקבות עבור האפליקציות שלהם ממקורות נתונים מרובים. Amazon Managed Grafana מורידה את הניהול התפעולי של Grafana על ידי שינוי קנה מידה אוטומטי של תשתיות המחשוב ומסד הנתונים ככל שדרישות השימוש עולות, עם עדכוני גרסאות אוטומטיים ותיקוני אבטחה.

הפצת Kubeflow on AWS מספקת תמיכה באינטגרציה של Amazon Managed Service עבור Prometheus ו-Amazon Managed Grafana כדי להקל על הטמעה והדמיה של מדדי Prometheus בצורה מאובטחת בקנה מידה.

המדדים הבאים נקלטים וניתן להמחיש אותם:

כדי להגדיר את Amazon Managed Service עבור Prometheus ו-Amazon Managed Grafana עבור אשכול Kubeflow שלך, עיין ב- השתמש ב-Prometheus, Amazon Managed Service for Prometheus ו-Amazon Managed Grafana כדי לנטר מדדים עם Kubeflow ב-AWS.

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

במקרה שימוש זה, אנו משתמשים בפריסת Kubeflow vanilla באמצעות אפשרות ההתקנה של Terraform. בסיום ההתקנה, אנו נכנסים ללוח המחוונים של Kubeflow. מלוח המחוונים, אנו יוצרים שרת מחברת Kubeflow Jupyter כדי לבנות צינור Kubeflow המשתמש ב-SageMaker כדי להפעיל הדרכה מבוזרת עבור מודל סיווג תמונות ונקודת קצה של SageMaker לפריסת מודל.

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

ודא שאתה עומד בדרישות הקדם הבאות:

  • יש לך חשבון AWS.
  • ודא שאתה נמצא ב us-west-2 אזור להפעיל את הדוגמה הזו.
  • השתמש ב-Google Chrome לאינטראקציה עם קונסולת הניהול של AWS ו-Kubeflow.
  • ודא שבחשבון שלך יש מגבלת סוג המשאבים של SageMaker Training עבור ml.p3.2xlarge שהוגדלה ל-2 באמצעות מסוף שירות מכסות.
  • לחלופין, אתה יכול להשתמש AWS Cloud9, סביבת פיתוח משולבת מבוססת ענן (IDE) המאפשרת השלמת כל העבודה מדפדפן האינטרנט שלך. להוראות התקנה, עיין ב הגדר את Cloud9 IDE. בחר את Ubuntu Server 18.04 כפלטפורמה בהגדרות AWS Cloud9.הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ואז מסביבת AWS Cloud9 שלך, בחר את סימן הפלוס ופתח מסוף חדש.

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

aws configure --profile=kubeflow

AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: us-west-2
Default output format [None]: json

# (In Cloud9, select “Cancel” and “Permanently disable” when the AWS managed temporary credentials dialog pops up)

export AWS_PROFILE=kubeflow

אמת את ההרשאות שבהן Cloud9 ישתמש כדי להתקשר למשאבי AWS.

aws sts get-caller-identity

ודא מהפלט שלהלן שאתה רואה את משתמש המנהל שהגדרת בפרופיל AWS CLI. בדוגמה זו זה "kubeflow-user"

{
    "UserId": "*******",
    "Account": "********",
    "Arn": "arn:aws:iam::*******:user/kubeflow-user"
}

התקן את Amazon EKS ו-Kubeflow ב-AWS

כדי להתקין את Amazon EKS ו-Kubeflow ב-AWS, בצע את השלבים הבאים:

  1. הגדר את הסביבה שלך לפריסת Kubeflow ב-AWS:
    #Clone the awslabs/kubeflow-manifests and the kubeflow/manifests repositories and check out the release branches of your choosing
    export KUBEFLOW_RELEASE_VERSION=v1.6.1
    export AWS_RELEASE_VERSION=v1.6.1-aws-b1.0.0
    git clone https://github.com/awslabs/kubeflow-manifests.git && cd kubeflow-manifests
    git checkout ${AWS_RELEASE_VERSION}
    git clone --branch ${KUBEFLOW_RELEASE_VERSION} https://github.com/kubeflow/manifests.git upstream
    
    export MANIFEST_DIR=$PWD

    #Install the necessary tools with the following command:
    make install-tools
    source ~/.bash_profile

  2. פרוס את גרסת הוניל של Kubeflow ב-AWS ומשאבי AWS קשורים כמו EKS באמצעות Terraform. שים לב שנפחי EBS המשמשים בקבוצת צומת EKS אינם מוצפנים כברירת מחדל:
    #Define the following environment variables
    
    #Region to create the cluster in
    export CLUSTER_REGION=us-west-2
    #Name of the cluster to create
    export CLUSTER_NAME=

    cd deployments/vanilla/terraform
    
    #Save the variables to a .tfvars file
    cat < sample.auto.tfvars
    cluster_name="${CLUSTER_NAME}"
    cluster_region="${CLUSTER_REGION}"
    EOF
    
    #Run the following one-click command to deploy terraform to install EKS infrastructure and Kubeflow
    make deploy

הגדר את הרשאות Kubeflow

  1. הוסף הרשאות לפוד Notebook ו-Pipeline רכיב פוד כדי לבצע קריאות API של SageMaker, S3 ו-IAM באמצעות kubeflow_iam_permissions.sh תַסרִיט.
    export NAMESPACE=kubeflow-user-example-com
    
    wget https://raw.githubusercontent.com/aws-samples/eks-kubeflow-cloudformation-quick-start/9e46662d97e1be7edb0be7fc31166e545655636a/utils/kubeflow_iam_permissions.sh
    chmod +x kubeflow_iam_permissions.sh
    ./kubeflow_iam_permissions.sh $NAMESPACE $CLUSTER_NAME $CLUSTER_REGION

  2. צור תפקיד ביצוע של SageMaker כדי לאפשר למשרת האימון של SageMaker לגשת למערך הנתונים של הדרכה משירות S3 באמצעות sagemaker_role.sh תַסרִיט.
    wget https://raw.githubusercontent.com/aws-samples/eks-kubeflow-cloudformation-quick-start/9e46662d97e1be7edb0be7fc31166e545655636a/utils/sagemaker_role.sh
    chmod +x sagemaker_role.sh
    ./sagemaker_role.sh

גש ללוח המחוונים של Kubeflow

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

  1. אתה יכול להפעיל את לוח המחוונים של Kubeflow באופן מקומי בסביבת Cloud9 מבלי לחשוף את כתובות האתרים שלך לאינטרנט ציבורי על ידי הפעלת הפקודות מתחת.
    # Configure Kubecontext
    $(terraform output -raw configure_kubectl)
    
    cd ${MANIFEST_DIR}
    make port-forward

  2. לבחור תצוגה מקדימה של יישום.הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
  3. בחר את הסמל בפינת לוח המחוונים של Kubeflow כדי לפתוח אותו כלשונית נפרדת ב-Chrome.
  4. הזן את אישורי ברירת המחדל (user@example.com/12341234) כדי להיכנס ללוח המחוונים של Kubeflow.הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

הגדר את סביבת Kubeflow ב-AWS

לאחר שנכנסת ללוח המחוונים של Kubeflow, ודא שיש לך את מרחב השמות הנכון (kubeflow-user-example-com) נבחר. השלם את השלבים הבאים כדי להגדיר את סביבת Kubeflow ב-AWS:

  1. בלוח המחוונים של Kubeflow, בחר מחברה בחלונית הניווט.
  2. לבחור מחברת חדשה.
  3. בעד שם, להיכנס aws-nb.
  4. בעד Jupyter Docket Image, בחר את התמונה jupyter-pytorch:1.12.0-cpu-py38-ubuntu20.04-ec2-2022-09-20 (האחרון הזמין jupyter-pytorch תמונת DLC).
  5. בעד CPU, להיכנס 1.
  6. בעד זכרון, להיכנס 5.
  7. בעד GPUs, השאר כמו ללא חתימה.
  8. אל תבצע שינויים ב- מרחב עבודה ו נפחי נתונים סעיפים.הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
  9. בחר אפשר גישה ל-Kubeflow Pipelines ב תצורות סעיף ובחר הפעלה.הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
  10. ודא שהמחברת שלך נוצרה בהצלחה (זה עשוי לקחת כמה דקות).הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
  11. לבחור לְחַבֵּר כדי להיכנס ל-JupyterLab.
  12. שכפל את המאגר על ידי כניסה https://github.com/aws-samples/eks-kubeflow-cloudformation-quick-start.git ב שיבוט ריפו שדה.
  13. לבחור שיבוט.הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

הפעל דוגמה לאימון מבוזר

לאחר הגדרת מחברת Jupyter, תוכל להריץ את כל ההדגמה באמצעות השלבים הבאים ברמה הגבוהה מהתיקיה eks-kubeflow-cloudformation-quick-start/workshop/pytorch-distributed-training במאגר המשובט:

  1. הפעל את סקריפט האימון של PyTorch Distributed Data Parallel (DDP). – עיין בסקריפט ההדרכה של PyTorch DDP cifar10-distributed-gpu-final.py, הכוללת דוגמה של רשת עצבית קונבולוציונית והיגיון להפצת אימונים על מעבד רב-צומתים ו-GPU.
  2. צור צינור של Kubeflow – הפעל את המחברת STEP1.0_create_pipeline_k8s_sagemaker.ipynb כדי ליצור צינור שרץ ופריסה מודלים ב- SageMaker. ודא שאתה מתקין את ספריית SageMaker כחלק מתא המחברת הראשון והפעל מחדש את הליבה לפני שתפעיל את שאר תאי המחברת.
  3. הפעל נקודת קצה של SageMaker – הפעל את המחברת STEP1.1_invoke_sagemaker_endpoint.ipynb להפעיל ולבדוק את נקודת הסיום של מודל SageMaker שנוצרה במחברת הקודמת.

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

הפעל את סקריפט האימון של PyTorch DDP

כחלק מההדרכה המבוזרת, אנו מאמנים מודל סיווג שנוצר על ידי רשת עצבית קונבולוציונית פשוטה הפועלת על מערך הנתונים CIFAR10. תסריט האימון cifar10-distributed-gpu-final.py מכיל רק את ספריות הקוד הפתוח ותואם להפעלה הן באשכולות הדרכה של Kubernetes והן של SageMaker על התקני GPU או מופעי CPU. בואו נסתכל על כמה היבטים חשובים של תסריט ההדרכה לפני שנפעיל את דוגמאות המחברת שלנו.

אנו משתמשים torch.distributed מודול, המכיל תמיכה ב- PyTorch ופרימיטיבים לתקשורת עבור מקביליות מרובת תהליכים על פני צמתים באשכול:

...
import torch
import torch.distributed as dist
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.utils.data
import torch.utils.data.distributed
import torchvision
from torchvision import datasets, transforms
...

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

# Define models
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)

def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x

אם לאשכול האימון יש GPUs, הסקריפט מריץ את האימון במכשירי CUDA ומשתנה ההתקן מכיל את מכשיר ברירת המחדל של CUDA:

device = "cuda" if torch.cuda.is_available() else "cpu"
...

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

dist.init_process_group(backend=args.backend, rank=host_rank, world_size=world_size)
...

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

model = Net().to(device)

if is_distributed:
model = torch.nn.parallel.DistributedDataParallel(model)

...

צור צינור של Kubeflow

המחברת משתמשת ב- קו צינורות צינורות קובלה והקבוצה המסופקת של חבילות Python כדי לציין ולהפעיל את צינורות זרימת העבודה של ML. כחלק מ-SDK זה, אנו משתמשים בעיצוב החבילות לשפה ספציפית לתחום (DSL). dsl.pipeline, אשר מקשט את פונקציות Python כדי להחזיר צינור.

צינור Kubeflow משתמש ברכיב SageMaker V2 להגשת הדרכה ל- SageMaker באמצעות מפעילי SageMaker ACK. יצירת מודל SageMaker ופריסה של מודל משתמש ברכיב SageMaker V1, שהם רכיבי SageMaker מבוססי Boto3. אנו משתמשים בשילוב של שני הרכיבים בדוגמה זו כדי להדגים את הגמישות שיש לך בבחירה.

  1. טען את רכיבי SageMaker באמצעות הקוד הבא:
    # Loads SageMaker training components v2 for Kubeflow pipeline from the URL
    sagemaker_train_ack_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/d4aaa03035f221351ebe72fbd74fcfccaf25bb66/components/aws/sagemaker/TrainingJob/component.yaml')
    
    # Loads SageMaker components v1 for Kubeflow pipeline from the URL
    sagemaker_model_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/cb36f87b727df0578f4c1e3fe9c24a30bb59e5a2/components/aws/sagemaker/model/component.yaml')
    sagemaker_deploy_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/cb36f87b727df0578f4c1e3fe9c24a30bb59e5a2/components/aws/sagemaker/deploy/component.yaml')

    בקוד הבא, אנו יוצרים את צינור Kubeflow שבו אנו מפעילים אימונים מבוזרים של SageMaker באמצעות שניים ml.p3.2xlarge מקרים:

    # Create Kubeflow Pipeline using Amazon SageMaker Service
    @dsl.pipeline(name="PyTorch Training pipeline", description="Sample training job test")
    def pytorch_cnn_pipeline(region=target_region,
    train_image=aws_dlc_sagemaker_train_image,
    serving_image=aws_dlc_sagemaker_serving_image,
    learning_rate='0.01',
    pytorch_backend='gloo',
    training_job_name=pytorch_distributed_jobname,
    instance_type='ml.p3.2xlarge',
    instance_count='2',
    network_isolation='False',
    traffic_encryption='False',
    ):
    
    # Step to run training on SageMaker using SageMaker Components V2 for Pipeline.
    training = sagemaker_train_ack_op(
    region=region,
    algorithm_specification=(f'{{ '
    f'"trainingImage": "{train_image}",'
    '"trainingInputMode": "File"'
    f'}}'),
    training_job_name=training_job_name,
    hyper_parameters=(f'{{ '
    f'"backend": "{pytorch_backend}",'
    '"batch-size": "64",'
    '"epochs": "10",'
    f'"lr": "{learning_rate}",'
    '"model-type": "custom",'
    '"sagemaker_container_log_level": "20",'
    '"sagemaker_program": "cifar10-distributed-gpu-final.py",'
    f'"sagemaker_region": "{region}",'
    f'"sagemaker_submit_directory": "{source_s3}"'
    f'}}'),
    resource_config=(f'{{ '
    f'"instanceType": "{instance_type}",'
    f'"instanceCount": {instance_count},'
    '"volumeSizeInGB": 50'
    f'}}'),
    input_data_config=training_input(datasets),
    output_data_config=training_output(bucket_name),
    enable_network_isolation=network_isolation,
    enable_inter_container_traffic_encryption=traffic_encryption,
    role_arn=role,
    stopping_condition={"maxRuntimeInSeconds": 3600}
    )
    
    model_artifact_url = get_s3_model_artifact_op(
    training.outputs["model_artifacts"]
    ).output
    
    # This step creates SageMaker Model which refers to model artifacts and inference script to deserialize the input image
    create_model = sagemaker_model_op(
    region=region,
    model_name=training_job_name,
    image=serving_image,
    model_artifact_url=model_artifact_url,
    network_isolation=network_isolation,
    environment=(f'{{ '
    '"SAGEMAKER_CONTAINER_LOG_LEVEL": "20",'
    '"SAGEMAKER_PROGRAM": "inference.py",'
    f'"SAGEMAKER_REGION": "{region}",'
    f'"SAGEMAKER_SUBMIT_DIRECTORY": "{model_artifact_url}"'
    f'}}'),
    role=role
    )
    
    # This step creates SageMaker Endpoint which will be called to run inference
    prediction = sagemaker_deploy_op(
    region=region,
    model_name_1=create_model.output,
    instance_type_1='ml.c5.xlarge'
    )
    
    #Disable pipeline cache
    training.execution_options.caching_strategy.max_cache_staleness = "P0D"

    לאחר הגדרת הצינור, תוכל להרכיב את הצינור למפרט Argo YAML באמצעות ה-SDK של Kubeflow Pipelines kfp.compiler חֲבִילָה. אתה יכול להפעיל את הצינור הזה באמצעות לקוח Kubeflow Pipelines SDK, הקורא לנקודת הקצה של שירות Pipelines ומעביר בכותרות אימות מתאימות ישירות מהמחברת. ראה את הקוד הבא:

    # DSL Compiler that compiles pipeline functions into workflow yaml.
    kfp.compiler.Compiler().compile(pytorch_cnn_pipeline, "pytorch_cnn_pipeline.yaml")
    
    # Connect to Kubeflow Pipelines using the Kubeflow Pipelines SDK client
    client = kfp.Client()
    
    experiment = client.create_experiment(name="ml_workflow")
    
    # Run a specified pipeline
    my_run = client.run_pipeline(experiment.id, "pytorch_cnn_pipeline", "pytorch_cnn_pipeline.yaml")
    
    # Please click “Run details” link generated below this cell to view your pipeline. You can click every pipeline step to see logs.

  2. בחר את הרץ פרטים קישור מתחת לתא האחרון כדי להציג את הצינור של Kubeflow. צילום המסך הבא מציג את פרטי הצינור שלנו עבור רכיב ההדרכה והפריסה של SageMaker.הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
  3. בחר את שלב עבודת ההדרכה ועל יומנים בכרטיסייה, בחר בקישור יומני CloudWatch כדי לגשת ליומני SageMaker.
    צילום המסך הבא מציג את יומני CloudWatch עבור כל אחד משני המופעים ml.p3.2xlarge.הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
  4. בחר כל אחת מהקבוצות כדי לראות את היומנים.הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
  5. ללכוד את נקודת הקצה של SageMaker על ידי בחירה ב- Sagemaker - דגם פריסה שלב והעתקת ה endpoint_name פלט ערך חפץ.הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

הפעל נקודת קצה של SageMaker

המחברת STEP1.1_invoke_sagemaker_endpoint.ipynb מפעיל את נקודת הסיום של SageMaker שנוצרה בשלב הקודם. ודא שאתה מעדכן את שם נקודת הקצה:

# Invoke SageMaker Endpoint. * Ensure you update the endpoint
# You can grab the SageMaker Endpoint name by either 1) going to the pipeline visualization of Kubeflow console and click the component for deployment, or 2) Go to SageMaker console and go to the list of endpoints, and then substitute the name to the EndpointName='...' in this cell.

endpointName=''

response = client.invoke_endpoint(EndpointName=endpointName,
ContentType='application/x-image',
Body=payload)

pred = json.loads(response['Body'].read().decode())

output_vector_list=pred['score']

# Get outout vector of 10 classes
output_vector = output_vector_list[0]

# Find the class with highest probability
max=output_vector[0]
index = 0
for i in range(1,len(output_vector)):
if output_vector[i] > max:
max = output_vector[i]
index = i

print(f'Index of the maximum value is : {index}')

labels = ['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']

print(labels[index])

לנקות את

כדי לנקות את המשאבים שלך, בצע את השלבים הבאים:

  1. הפעל את הפקודות הבאות ב-AWS Cloud9 כדי למחוק את משאבי AWS:
    cd ${MANIFEST_DIR}/deployments/vanilla/terraform
    make delete

  2. מחק תפקיד IAM "sagemakerrole" באמצעות הפקודה הבאה של AWS CLI:
    aws iam detach-role-policy --role-name sagemakerrole --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
    aws iam detach-role-policy --role-name sagemakerrole --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
    aws iam delete-role --role-name sagemakerrole

  3. מחק את נקודת הקצה של SageMaker באמצעות הפקודה הבאה של AWS CLI:
    aws sagemaker delete-endpoint --endpoint-name  --region us-west-2

<br> סיכום

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

העמדנו לרשותנו גם א דוגמה לצינור דוגמה שמשתמש ברכיבי SageMaker העדכניים ביותר; אתה יכול להפעיל את זה ישירות מלוח המחוונים של Kubeflow. צינור זה דורש את נתוני אמזון S3 ו SageMaker ביצוע תפקיד IAM בתור התשומות הנדרשות.

כדי להתחיל עם Kubeflow ב-AWS, עיין באפשרויות הפריסה הזמינות המשולבות ב-AWS ב Kubeflow ב-AWS. אתה יכול לעקוב אחר ה מאגר AWS Labs כדי לעקוב אחר כל התרומות של AWS ל-Kubeflow. אתה יכול למצוא אותנו גם ב ערוץ Slack של Kubeflow #AWS; המשוב שלך שם יעזור לנו לתעדף את התכונות הבאות לתרום לפרויקט Kubeflow.


על המחברים

הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.Kanwaljit Khurmi הוא ארכיטקט פתרונות בכיר בחברת Amazon Web Services. הוא עובד עם לקוחות AWS כדי לספק הדרכה וסיוע טכני המסייעים להם לשפר את הערך של הפתרונות שלהם בעת השימוש ב-AWS. Kanwaljit מתמחה בסיוע ללקוחות עם יישומי מכולות ולמידת מכונה.

הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.קרטיק קלאמדי הוא מהנדס פיתוח תוכנה באמזון AI. כרגע מתמקד ב-Machine Learning בפרויקטים של Kubernetes בקוד פתוח כגון Kubeflow ו-AWS SageMaker Controller for k8s. בזמני הפנוי אני אוהב לשחק במשחקי PC ולהתעסק עם VR באמצעות מנוע Unity.

הפעלת זרימות עבודה היברידיות של ML באמזון EKS ו-Amazon SageMaker עם Kubeflow בלחיצה אחת על פריסת AWS PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.רהול חרס הוא מהנדס פיתוח תוכנה ב- Amazon Web Services. עבודתו מתמקדת בשילוב שירותי AWS עם פלטפורמות ML Ops מכולות בקוד פתוח כדי לשפר את המדרגיות, המהימנות והאבטחה שלהן. בנוסף להתמקדות בבקשות לקוחות לפיצ'רים, Rahul גם נהנית להתנסות בפיתוחים הטכנולוגיים העדכניים ביותר בתחום.

בול זמן:

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