פרוס ונהל צינורות למידת מכונה עם Terraform באמצעות Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

פרוס ונהל צינורות למידת מכונה עם Terraform באמצעות Amazon SageMaker

לקוחות AWS מסתמכים על Infrastructure as Code (IaC) כדי לתכנן, לפתח ולנהל את תשתית הענן שלהם. IaC מבטיח שתשתיות ושירותי לקוחות יהיו עקביים, ניתנים להרחבה וניתנים לשחזור, תוך יכולת לעקוב אחר שיטות עבודה מומלצות בתחום פעולות הפיתוח (DevOps).

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

בפוסט זה, אנו מראים לך כיצד לפרוס ולנהל צינורות ML באמצעות Terraform ו-Amazon SageMaker.

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

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

שלב פונקציה שלבים

שלב פונקציות מתחיל an AWS למבדה פונקציה, יצירת מזהה משרה ייחודי, שבו נעשה שימוש לאחר תחילת עבודת הכשרה של SageMaker. Step Functions גם יוצרת מודל, תצורת נקודת קצה ונקודת קצה המשמשת להסקת מסקנות. משאבים נוספים כוללים את הדברים הבאים:

הקוד הקשור ל-ML לאימון והסקת מסקנות עם תמונת Docker מסתמך בעיקר על עבודה קיימת בהמשך מאגר GitHub.

התרשים הבא ממחיש את ארכיטקטורת הפתרון:

תרשים אדריכלות

אנו מדריכים אותך בשלבים הבאים ברמה הגבוהה:

  1. פרוס את תשתית ה-AWS שלך עם Terraform.
  2. דחוף את תמונת ה-Docker שלך לאמזון ECR.
  3. הפעל את צינור ML.
  4. הפעל את נקודת הקצה שלך.

מבנה המאגר

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

המאגר כולל את הספריות הבאות:

  • /terraform – מורכב מתיקיות המשנה הבאות:
    • ./infrastructure – מכיל את קובץ main.tf הקורא למודול צינור ML, בנוסף להצהרות משתנות בהן אנו משתמשים לפריסת התשתית
    • ./ml-pipeline-module - מכיל את מודול הצינור Terraform ML, שבו אנו יכולים לעשות שימוש חוזר
  • /src – מורכב מתיקיות המשנה הבאות:
    • ./container – מכיל קוד לדוגמה לאימון והסקת הסקה עם ההגדרות של תמונת Docker
    • ./lambda_function - מכיל את קוד Python עבור תצורות יצירת פונקציית Lambda, כגון מזהה עבודה ייחודי עבור עבודת ההדרכה של SageMaker
  • /data - מכיל את הקובץ הבא:
    • ./iris.csv – מכיל נתונים לאימון מודל ML

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

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

פרוס את תשתית ה-AWS שלך עם Terraform

כדי לפרוס את צינור ה-ML, עליך להתאים מספר משתנים ושמות בהתאם לצרכים שלך. הקוד לשלב זה נמצא ב- /terraform במדריך.

בעת אתחול בפעם הראשונה, פתח את הקובץ terraform/infrastructure/terraform.tfvars ולהתאים את המשתנה שם הפרוייקט לשם הפרויקט שלך, בנוסף למשתנה באזור אם אתה רוצה לפרוס באזור אחר. אתה יכול גם לשנות משתנים נוספים כגון סוגי מופעים לאימון והסקת מסקנות.

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

export AWS_PROFILE=<your_aws_cli_profile_name>
cd terraform/infrastructure
terraform init
terraform plan
terraform apply

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

הפלט צריך להיראות דומה לפלט המוצג הבא, כולל כתובת האתר של מאגר ECR:

Apply complete! Resources: 19 added, 0 changed, 0 destroyed. Outputs: ecr_repository_url = <account_number>.dkr.ecr.eu-west-1.amazonaws.com/ml-pipeline-terraform-demo

דחוף את תמונת ה-Docker שלך לאמזון ECR

כדי שצינור ML ו-SageMaker יאמנו ויספקו נקודת קצה של SageMaker להסקת מסקנות, עליך לספק תמונת Docker ולאחסן אותה באמזון ECR. אתה יכול למצוא דוגמה בספרייה src/container. אם כבר החלת את תשתית ה-AWS מהשלב הקודם, תוכל לדחוף את תמונת Docker כמתואר. לאחר פיתוח תמונת Docker שלך, תוכל לבצע את הפעולות הבאות ולדחוף אותה לאמזון ECR (התאם את כתובת האתר של Amazon ECR בהתאם לצרכים שלך):

cd src/container
export AWS_PROFILE=<your_aws_cli_profile_name>
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin <account_number>.dkr.ecr.eu-west-1.amazonaws.com
docker build -t ml-training .
docker tag ml-training:latest <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>:latest
docker push <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>

אם כבר החלת את תשתית ה-AWS עם Terraform, אתה יכול לדחוף את השינויים בקוד ובתמונת Docker שלך ישירות לאמזון ECR מבלי לפרוס שוב דרך Terraform.

הפעל את צינור ML

כדי לאמן ולהפעיל את צינור ה-ML, עבור אל מסוף Step Functions והתחל ביישום. אתה יכול לבדוק את ההתקדמות של כל שלב בהדמיה של מכונת המצב. אתה יכול גם לבדוק את התקדמות עבודת ההדרכה של SageMaker ואת המצב של נקודת הקצה של SageMaker.

התחל שלב פונקציה

לאחר שתפעיל בהצלחה את מכונת המצב ב-Step Functions, תוכל לראות שנקודת הקצה של SageMaker נוצרה. במסוף SageMaker, בחר הסקה בחלונית הניווט, אם כן נקודות קצה. הקפד להמתין עד שהסטטוס ישתנה ל-InService.

סטטוס נקודת הקצה של SageMaker

הפעל את נקודת הקצה שלך

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

import boto3
from io import StringIO
import pandas as pd client = boto3.client('sagemaker-runtime') endpoint_name = 'Your endpoint name' # Your endpoint name.
content_type = "text/csv"   # The MIME type of the input data in the request body. payload = pd.DataFrame([[1.5,0.2,4.4,2.6]])
csv_file = StringIO()
payload.to_csv(csv_file, sep=",", header=False, index=False)
payload_as_csv = csv_file.getvalue() response = client.invoke_endpoint(
EndpointName=endpoint_name,
ContentType=content_type,
Body=payload_as_csv
) label = response['Body'].read().decode('utf-8')
print(label)

לנקות את

אתה יכול להרוס את התשתית שנוצרה על ידי Terraform עם הפקודה terraform destroy, אבל תחילה עליך למחוק את הנתונים והקבצים בדלי S3. יתר על כן, נקודת הקצה של SageMaker (או מספר נקודות קצה של SageMaker אם מופעלות מספר פעמים) נוצרת באמצעות Step Functions ולא מנוהלת באמצעות Terraform. המשמעות היא שהפריסה מתרחשת בעת הפעלת צינור ML עם פונקציות שלב. לכן, ודא שאתה מוחק גם את נקודת הקצה של SageMaker או את נקודות הקצה שנוצרו באמצעות צינור Step Functions ML כדי למנוע עלויות מיותרות. השלם את השלבים הבאים:

  1. בקונסולת Amazon S3, מחק את מערך הנתונים בדלי ההדרכה של S3.
  2. מחק את כל הדגמים שאימנת באמצעות צינור ML בדלי דגמי S3, או דרך קונסולת Amazon S3 או AWS CLI.
  3. הרס את התשתית שנוצרה באמצעות Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. מחק את נקודות הקצה של SageMaker, תצורת נקודות הקצה והמודלים שנוצרו באמצעות Step Functions, במסוף SageMaker או דרך AWS CLI.

סיכום

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

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


על המחבר

פרוס ונהל צינורות למידת מכונה עם Terraform באמצעות Amazon SageMaker PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.אוליבר זוליקופר הוא מדען נתונים בשירותי האינטרנט של אמזון. הוא מאפשר ללקוחות ארגוניים גלובליים לבנות, לאמן ולפרוס מודלים של למידת מכונה, כמו גם לנהל את מחזור החיים של מודל ML עם MLOps. בנוסף, הוא בונה ואדריכל פתרונות ענן קשורים.

בול זמן:

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