עם אמזון SageMaker, אתה יכול לנהל את כל מחזור החיים של למידת מכונה (ML) מקצה לקצה. הוא מציע יכולות מקוריות רבות לסייע בניהול היבטי זרימת עבודה של ML, כגון מעקב אחר ניסויים וניהול מודלים באמצעות רישום המודלים. פוסט זה מספק פתרון המותאם ללקוחות שכבר משתמשים ב-MLflow, פלטפורמת קוד פתוח לניהול זרימות עבודה של ML.
ב הפוסט הקודם, דנו ב-MLflow וכיצד הוא יכול לפעול ב-AWS ולהיות משולב עם SageMaker - בפרט, בעת מעקב אחר עבודות הדרכה כניסויים ופריסה של מודל הרשום ב-MLflow לתשתית המנוהלת של SageMaker. אולם, ה גרסת קוד פתוח של MLflow אינו מספק מנגנוני בקרת גישה מקוריים של משתמשים למספר דיירים בשרת המעקב. המשמעות היא שלכל משתמש עם גישה לשרת יש זכויות אדמין והוא יכול לשנות ניסויים, גרסאות מודל ושלבים. זה יכול להוות אתגר עבור ארגונים בתעשיות מוסדרות שצריכים לשמור על ממשל מודל חזק למטרות ביקורת.
בפוסט זה, אנו מתייחסים למגבלות אלו על ידי הטמעת בקרת הגישה מחוץ לשרת MLflow והורדת משימות אימות והרשאה ל שער API של אמזון, שבו אנו מיישמים מנגנוני בקרת גישה עדינים ברמת המשאב באמצעות ניהול זהויות וגישה (אני). על ידי כך, אנו יכולים להשיג גישה חזקה ומאובטחת לשרת MLflow הן מהתשתית המנוהלת של SageMaker והן סטודיו SageMaker של אמזון, מבלי לדאוג לגבי אישורים וכל המורכבות מאחורי ניהול אישורים. העיצוב המודולרי המוצע בארכיטקטורה זו הופך את שינוי הלוגיקה של בקרת הגישה לפשוטה מבלי להשפיע על שרת MLflow עצמו. לבסוף, הודות להרחבה של SageMaker Studio, אנו משפרים עוד יותר את חוויית מדעני הנתונים על ידי הפיכת MLflow לנגיש בתוך Studio, כפי שמוצג בצילום המסך הבא.
MLflow שילבה את התכונה המאפשרת בקש חתימה באמצעות אישורי AWS לתוך המאגר במעלה הזרם עבור Python SDK שלה, שיפור האינטגרציה עם SageMaker. השינויים ב-MLflow Python SDK זמינים לכולם מאז MLflow גרסה 1.30.0.
ברמה גבוהה, פוסט זה מדגים את הדברים הבאים:
- כיצד לפרוס שרת MLflow על ארכיטקטורה ללא שרת הפועלת על תת רשת פרטית שאינה נגישה ישירות מבחוץ. עבור משימה זו, אנו בונים על גבי ה-GitHub ריפו הבא: נהל את מחזור החיים של למידת המכונה שלך עם MLflow ו-Amazon SageMaker.
- כיצד לחשוף את שרת MLflow באמצעות אינטגרציות פרטיות לשער API, ולהטמיע בקרת גישה מאובטחת לגישה פרוגרמטית דרך ה-SDK וגישה לדפדפן דרך ממשק המשתמש של MLflow.
- כיצד לרשום ניסויים והרצה, ולרשום מודלים לשרת MLflow מ- SageMaker באמצעות תפקידי הביצוע המשויכים של SageMaker לאימות ואישור בקשות, וכיצד לבצע אימות באמצעות אמזון קוגניטו לממשק המשתמש של MLflow. אנו מספקים דוגמאות המדגימות מעקב אחר ניסויים ושימוש ברישום המודלים עם MLflow מעבודות הכשרה של SageMaker וסטודיו, בהתאמה, ב- מחברה.
- כיצד להשתמש ב-MLflow כמאגר מרכזי בהגדרה מרובת חשבונות.
- כיצד להרחיב את Studio כדי לשפר את חווית המשתמש על ידי עיבוד MLflow בתוך Studio. עבור משימה זו, אנו מראים כיצד לנצל את ההרחבה של Studio על ידי התקנת תוסף JupyterLab.
עכשיו בואו נצלול עמוק יותר לפרטים.
סקירת פתרונות
אתה יכול לחשוב על MLflow כעל שלושה רכיבי ליבה שונים הפועלים זה לצד זה:
- REST API עבור שרת המעקב של MLflow האחורי
- SDK ליצירת אינטראקציה פרוגרמטית עם ממשקי API של שרת המעקב של MLflow מקוד ההדרכה של המודל שלך
- ממשק קצה של React עבור ממשק המשתמש של MLflow כדי להמחיש את הניסויים, הריצות והחפצים שלך
ברמה גבוהה, הארכיטקטורה שדמיינו ויישמנו מוצגת באיור הבא.
תנאים מוקדמים
לפני פריסת הפתרון, ודא שיש לך גישה לחשבון AWS עם הרשאות מנהל.
פרוס את תשתית הפתרון
כדי לפרוס את הפתרון המתואר בפוסט זה, עקוב אחר ההוראות המפורטות ב- מאגר GitHub תקרא אותי. כדי להפוך את פריסת התשתית לאוטומטית, אנו משתמשים ב- ערכת פיתוח ענן AWS (AWS CDK). AWS CDK הוא מסגרת פיתוח תוכנה בקוד פתוח ליצירה AWS CloudFormation ערימות דרך אוטומטית תבנית CloudFormation דוֹר. מחסנית היא אוסף של משאבי AWS שניתן לעדכן, להעביר או למחוק באופן תכנותי. AWS CDK בונה הם אבני הבניין של יישומי AWS CDK, המייצגים את התוכנית להגדרת ארכיטקטורות ענן.
אנו משלבים ארבע ערימות:
- השמיים MLFlowVPCStack מחסנית מבצעת את הפעולות הבאות:
- השמיים RestApiGatewayStack מחסנית מבצעת את הפעולות הבאות:
- חושף את שרת MLflow דרך AWS PrivateLink לשער REST API.
- פורס מאגר משתמשים של Amazon Cognito כדי לנהל את המשתמשים שניגשים לממשק המשתמש (עדיין ריק לאחר הפריסה).
- פורס א AWS למבדה מסמיך לאמת את אסימון JWT עם מפתחות מזהה מאגר המשתמשים של Amazon Cognito ומחזיר מדיניות IAM כדי לאפשר או לדחות בקשה. אסטרטגיית הרשאה זו מיושמת על
<MLFlow-Tracking-Server-URI>/*
. - מוסיף אישור IAM. זה יחול על ה-to
<MLFlow-Tracking-Server-URI>/api/*
, שיקבל עדיפות על הקודמת.
- השמיים AmplifyMLFlowStack מחסנית מבצעת את הפעולה הבאה:
- יוצר אפליקציה המקושרת למאגר MLflow המתוקן ב AWS CodeCommit לבנות ולפרוס את ממשק המשתמש של MLflow.
- השמיים SageMakerStudioUserStack מחסנית מבצעת את הפעולות הבאות:
- פורס תחום Studio (אם עדיין לא קיים כזה).
- מוסיף שלושה משתמשים, כל אחד עם תפקיד ביצוע שונה של SageMaker תוך יישום רמת גישה שונה:
- mlflow-admin - בעל הרשאה דמוית מנהל לכל משאבי MLflow.
- mlflow-reader - בעל הרשאות ניהול לקריאה בלבד לכל משאבי MLflow.
- mlflow-model-approver - בעל אותן הרשאות כמו mlflow-reader, בנוסף יכול לרשום דגמים חדשים מהרצות קיימות ב-MLflow ולקדם מודלים רשומים קיימים לשלבים חדשים.
פרוס את שרת המעקב של MLflow על ארכיטקטורה ללא שרת
המטרה שלנו היא לקבל פריסה אמינה, זמינה ביותר, חסכונית ומאובטחת של שרת המעקב של MLflow. טכנולוגיות ללא שרתים הן המועמד המושלם לספק את כל הדרישות הללו עם תקורה תפעולית מינימלית. כדי להשיג זאת, אנו בונים תמונת קונטיינר של Docker עבור שרת המעקב אחר ניסוי MLflow, ואנחנו מריצים אותה ב-AWS Fargate ב- Amazon ECS ב-VPC הייעודי שלה הפועל על רשת משנה פרטית. MLflow מסתמכת על שני רכיבי אחסון: חנות הקצה האחורית ועבור חנות החפצים. עבור חנות הקצה האחורי, אנו משתמשים ב-Aurora Serverless, ולחנות החפצים, אנו משתמשים ב-Amazon S3. לארכיטקטורה ברמה גבוהה, עיין ב תרחיש 4: MLflow עם שרת מעקב מרחוק, אחורי וחנויות חפצים. פרטים נרחבים כיצד לבצע משימה זו ניתן למצוא ב- GitHub הבא: נהל את מחזור החיים של למידת המכונה שלך עם MLflow ו-Amazon SageMaker.
MLflow מאובטח באמצעות שער API
בשלב זה, עדיין אין לנו מנגנון בקרת גישה במקום. כצעד ראשון, אנו חושפים את MLflow לעולם החיצון באמצעות AWS PrivateLink, אשר יוצר חיבור פרטי בין ה-VPC לשירותי AWS אחרים, במקרה שלנו API Gateway. בקשות נכנסות ל-MLflow מועברות לאחר מכן באמצעות proxy באמצעות a שער API של REST, נותן לנו את האפשרות ליישם מספר מנגנונים לאשר בקשות נכנסות. למטרותינו, אנו מתמקדים בשניים בלבד:
- שימוש בסמכי IAM - עם רשותי IAM, על המבקש להקצות את מדיניות IAM הנכונה כדי לגשת למשאבי ה-API Gateway. כל בקשה חייבת להוסיף פרטי אימות לבקשות הנשלחות באמצעות HTTP על ידי AWS חתימה גרסה 4.
- שימוש במסמכי למבדה - זה מציע את הגמישות הגדולה ביותר מכיוון שהוא משאיר שליטה מלאה על האופן שבו ניתן לאשר בקשה. בסופו של דבר, ה מסמיך למבדה חייב להחזיר מדיניות IAM, אשר בתורה תוערך על ידי API Gateway אם יש לאשר או לדחות את הבקשה.
לרשימה המלאה של מנגנוני אימות והרשאה נתמכים ב-API Gateway, עיין ב שליטה וניהול גישה ל- API של REST ב- Gateway API.
אימות MLflow Python SDK (מאשרת IAM)
שרת המעקב אחר ניסוי MLflow מיישם א REST API לקיים אינטראקציה בצורה פרוגרמטית עם המשאבים והחפצים. MLflow Python SDK מספק דרך נוחה לרישום מדדים, ריצות וחפצים, והוא מתממשק עם משאבי ה-API המתארחים תחת מרחב השמות <MLflow-Tracking-Server-URI>/api/
. אנו מגדירים API Gateway להשתמש במאשר IAM עבור בקרת גישה למשאבים במרחב השמות הזה, ובכך דורשים שכל בקשה תהיה חתומה עם AWS Signature גרסה 4.
כדי להקל על תהליך חתימת הבקשות, החל מ-MLflow 1.30.0, ניתן להפעיל את היכולת הזו בצורה חלקה. ודא כי requests_auth_aws_sigv4
הספרייה מותקנת במערכת והגדר את MLFLOW_TRACKING_AWS_SIGV4
משתנה הסביבה ל- True
. מידע נוסף ניתן למצוא ב תיעוד רשמי של MLflow.
בשלב זה, ה-MLflow SDK זקוק רק לאישורי AWS. כי request_auth_aws_sigv4
שימושים Boto3 כדי לאחזר אישורים, אנחנו יודעים שזה יכול טען אישורים מהמטא נתונים של המופע כאשר תפקיד IAM משויך ל-an ענן מחשוב אלסטי של אמזון (Amazon EC2) מופע (לדרכים אחרות לספק אישורים ל-Boto3, ראה אישורים). המשמעות היא שהוא יכול לטעון גם אישורי AWS כאשר הוא פועל ממופע מנוהל SageMaker מתפקיד הביצוע המשויך, כפי שנדון בהמשך הפוסט הזה.
הגדר מדיניות IAM כדי לגשת לממשקי API של MLflow דרך API Gateway
אתה יכול להשתמש בתפקידים ובמדיניות IAM כדי לקבוע מי יכול להפעיל משאבים ב-API Gateway. לפרטים נוספים והצהרות התייחסות למדיניות IAM, עיין ב שליטה בגישה להפעלת API.
הקוד הבא מציג מדיניות IAM לדוגמה המעניקה למתקשר הרשאות לכל השיטות בכל המשאבים ב-API Gateway המגן על MLflow, ומעניקה למעשה גישת מנהל לשרת MLflow:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/*/*",
"Effect": "Allow"
}
]
}
אם אנו רוצים מדיניות המאפשרת למשתמש גישה לקריאה בלבד לכל המשאבים, מדיניות IAM תיראה כמו הקוד הבא:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/GET/*",
"arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/runs/search/",
"arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/experiments/search",
],
"Effect": "Allow"
}
]
}
דוגמה נוספת עשויה להיות מדיניות למתן הרשאות למשתמשים ספציפיים לרשום מודלים לרישום המודלים ולקדם אותם מאוחר יותר לשלבים ספציפיים (היערכות, ייצור וכן הלאה):
{ "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/GET/*", "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/runs/search/", "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/experiments/search", "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/model-versions/*", "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/registered-models/*" ], "Effect": "Allow" } ]
}
אימות ממשק המשתמש של MLflow (הסמכה של Lambda)
גישת הדפדפן לשרת MLflow מטופלת על ידי ממשק המשתמש של MLflow המיושם עם React. ממשק המשתמש של MLflow לא תוכנן לתמוך במשתמשים מאומתים. הטמעת זרימת כניסה חזקה עשויה להיראות כמשימה מרתיעה, אך למרבה המזל אנו יכולים לסמוך על הגברה של רכיבי UI React לאימות, מה שמפחית מאוד את המאמץ ליצור זרימת כניסה באפליקציית React, באמצעות Amazon Cognito עבור חנות הזהויות.
Amazon Cognito מאפשר לנו לנהל את בסיס המשתמשים שלנו וגם תמיכה בפדרציית זהות של צד שלישי, מה שמאפשר לבנות, למשל, פדרציית ADFS (ראה בניית פדרציית ADFS עבור אפליקציית האינטרנט שלך באמצעות מאגרי משתמשי Amazon Cognito לפרטים נוספים). אסימונים שהונפקו על ידי Amazon Cognito חייבים להיות מאומתים ב-API Gateway. אימות פשוט של האסימון אינו מספיק עבור בקרת גישה עדינה, לכן הסמכה של Lambda מאפשרת לנו את הגמישות ליישם את ההיגיון שאנו צריכים. לאחר מכן נוכל לבנות אישור Lambda משלנו כדי לאמת את אסימון JWT ולייצר את מדיניות IAM כדי לאפשר לשער ה-API לדחות או לאפשר את הבקשה. התרשים הבא ממחיש את זרימת ההתחברות של MLflow.
למידע נוסף על שינויי הקוד בפועל, עיין בקובץ התיקון cognito.patch, ישים לגרסה 2.3.1 של MLflow.
תיקון זה מציג שתי יכולות:
- הוסף את רכיבי ממשק המשתמש של Amplify והגדר את פרטי Amazon Cognito באמצעות משתני סביבה שמיישמים את זרימת הכניסה
- חלץ את ה-JWT מההפעלה וצור כותרת הרשאה עם אסימון נושא לאן לשלוח את ה-JWT
למרות ששמירה על קוד מתפצל מהמעלה הזרם תמיד מוסיפה מורכבות יותר מאשר הסתמכות על הזרם, ראוי לציין שהשינויים מינימליים מכיוון שאנו מסתמכים על רכיבי ממשק המשתמש של Amplify React.
עם זרימת ההתחברות החדשה במקום, בואו ניצור את בניית הייצור עבור ממשק המשתמש המעודכן של MLflow. AWS Amplify Hosting הוא שירות AWS המספק זרימת עבודה מבוססת git עבור CI/CD ואירוח של אפליקציות אינטרנט. שלב הבנייה בצנרת מוגדר על ידי buildspec.yaml
, שבו נוכל להחדיר כמשתני סביבה פרטים על מזהה מאגר המשתמש של Amazon Cognito, מזהה מאגר הזהויות של Amazon Cognito ומזהה הלקוח של מאגר המשתמשים הדרושים לרכיב Amplify UI React כדי להגדיר את זרימת האימות. הקוד הבא הוא דוגמה ל- buildspec.yaml
קובץ:
version: "1.0"
applications: - frontend: phases: preBuild: commands: - fallocate -l 4G /swapfile - chmod 600 /swapfile - mkswap /swapfile - swapon /swapfile - swapon -s - yarn install build: commands: - echo "REACT_APP_REGION=$REACT_APP_REGION" >> .env - echo "REACT_APP_COGNITO_USER_POOL_ID=$REACT_APP_COGNITO_USER_POOL_ID" >> .env - echo "REACT_APP_COGNITO_IDENTITY_POOL_ID=$REACT_APP_COGNITO_IDENTITY_POOL_ID" >> .env - echo "REACT_APP_COGNITO_USER_POOL_CLIENT_ID=$REACT_APP_COGNITO_USER_POOL_CLIENT_ID" >> .env - yarn run build artifacts: baseDirectory: build files: - "**/*"
רישום מאובטח ניסויים והרצה באמצעות תפקיד הביצוע של SageMaker
אחד ההיבטים המרכזיים של הפתרון שנדון כאן הוא האינטגרציה המאובטחת עם SageMaker. SageMaker הוא שירות מנוהל, וככזה, הוא מבצע פעולות בשמך. מה שמותר ל-SageMaker לעשות מוגדר על ידי מדיניות IAM המצורפת לתפקיד הביצוע שאתה משייך לעבודת הדרכה של SageMaker, או שאתה משייך לפרופיל משתמש שעובד מ-Studio. למידע נוסף על תפקיד הביצוע של SageMaker, עיין ב תפקידי SageMaker.
על ידי הגדרת שער ה-API לשימוש באימות IAM ב- <MLFlow-Tracking-Server-URI>/api/*
משאבים, נוכל להגדיר קבוצה של מדיניות IAM על תפקיד הביצוע של SageMaker שיאפשר ל-SageMaker לקיים אינטראקציה עם MLflow בהתאם לרמת הגישה שצוינה.
בעת הגדרת ה- MLFLOW_TRACKING_AWS_SIGV4
משתנה הסביבה ל- True
בזמן עבודה בסטודיו או בעבודת הכשרה של SageMaker, ה-MLflow Python SDK יחתום אוטומטית על כל הבקשות, שיאומתו על ידי שער ה-API:
os.environ['MLFLOW_TRACKING_AWS_SIGV4'] = "True"
mlflow.set_tracking_uri(tracking_uri)
mlflow.set_experiment(experiment_name)
בדוק את תפקיד הביצוע של SageMaker עם ה-MLflow SDK
אם אתה ניגש לדומיין של Studio שנוצר, תמצא שלושה משתמשים:
- mlflow-admin - משויך לתפקיד ביצוע עם הרשאות דומות כמו המשתמש במנהלי קבוצת אמזון קוגניטו
- mlflow-reader – משויך לתפקיד ביצוע עם הרשאות דומות למשתמש בקוראי קבוצת אמזון קוגניטו
- mlflow-model-approver - משויך לתפקיד ביצוע עם הרשאות דומות לאלו של המשתמש במאשרי המודלים של קבוצת אמזון קוגניטו
כדי לבדוק את שלושת התפקידים השונים, עיין ב המעבדות מסופק כחלק ממדגם זה בכל פרופיל משתמש.
התרשים הבא ממחיש את זרימת העבודה עבור פרופילי משתמש Studio ואימות משרות SageMaker עם MLflow.
באופן דומה, בעת הפעלת משרות SageMaker על התשתית המנוהלת של SageMaker, אם תגדיר את משתנה הסביבה MLFLOW_TRACKING_AWS_SIGV4
ל True
, ולתפקיד הביצוע של SageMaker שהועבר למשימות יש את מדיניות IAM הנכונה לגשת לשער ה-API, אתה יכול ליצור אינטראקציה מאובטחת עם שרת המעקב של MLflow מבלי שתצטרך לנהל את האישורים בעצמך. בעת הפעלת משרות אימון של SageMaker ואתחול מחלקה לאומדן, אתה יכול להעביר משתני סביבה ש-SageMaker יזריק ולהפוך אותם לזמין לסקריפט ההדרכה, כפי שמוצג בקוד הבא:
environment={ "AWS_DEFAULT_REGION": region, "MLFLOW_EXPERIMENT_NAME": experiment_name, "MLFLOW_TRACKING_URI": tracking_uri, "MLFLOW_AMPLIFY_UI_URI": mlflow_amplify_ui, "MLFLOW_TRACKING_AWS_SIGV4": "true", "MLFLOW_USER": user
} estimator = SKLearn( entry_point='train.py', source_dir='source_dir', role=role, metric_definitions=metric_definitions, hyperparameters=hyperparameters, instance_count=1, instance_type='ml.m5.large', framework_version='1.0-1', base_job_name='mlflow', environment=environment
)
דמיין ריצות וניסויים ממשק המשתמש של MLflow
לאחר השלמת הפריסה הראשונה, בואו נאכלס את מאגר המשתמשים של Amazon Cognito בשלושה משתמשים, שכל אחד שייך לקבוצה אחרת, כדי לבדוק את ההרשאות שיישמנו. אתה יכול להשתמש בסקריפט הזה add_users_and_groups.py כדי לראות את מאגר המשתמשים. לאחר הפעלת הסקריפט, אם תבדוק את מאגר המשתמשים של Amazon Cognito בקונסולת Amazon Cognito, אתה אמור לראות את שלושת המשתמשים שנוצרו.
בצד REST API Gateway, גורם ה-Lambda יאמת תחילה את חתימת האסימון באמצעות מפתח מאגר המשתמשים של Amazon Cognito ויאמת את הטענות. רק לאחר מכן הוא יחלץ את קבוצת אמזון קוגניטו אליה שייך המשתמש מהטענה באסימון JWT (cognito:groups
) והחל הרשאות שונות על סמך הקבוצה שתכנתנו.
במקרה הספציפי שלנו, יש לנו שלוש קבוצות:
- מנהלים - יכול לראות ויכול לערוך הכל
- הקוראים - יכול לראות רק הכל
- מאשרי דגמים - זהה לקוראים, בנוסף יכולים לרשום דגמים, ליצור גרסאות ולקדם גרסאות מודל לשלב הבא
בהתאם לקבוצה, הסמכה של Lambda יפיק מדיניות IAM שונה. זוהי רק דוגמה כיצד ניתן להשיג אישור; עם אישור Lambda, אתה יכול ליישם כל היגיון שאתה צריך. בחרנו לבנות את מדיניות IAM בזמן הריצה בפונקציית Lambda עצמה; עם זאת, אתה יכול ליצור מראש מדיניות IAM מתאימה, לאחסן אותם אמזון דינמו, ואחזר אותם בזמן ריצה לפי ההיגיון העסקי שלך. עם זאת, אם אתה רוצה להגביל רק תת-קבוצה של פעולות, אתה צריך להיות מודע ל הגדרה של MLflow REST API.
אתה יכול לחקור את הקוד של אישור ה-Lambda ב- GitHub ריפו.
שיקולי ריבוי חשבונות
תהליכי עבודה של מדעי הנתונים צריכים לעבור שלבים מרובים כשהם מתקדמים מניסוי לייצור. גישה נפוצה כוללת חשבונות נפרדים המוקדשים לשלבים שונים של זרימת העבודה של AI/ML (ניסוי, פיתוח וייצור). עם זאת, לפעמים רצוי שיהיה חשבון ייעודי המשמש כמאגר מרכזי למודלים. למרות שהארכיטקטורה והמדגם שלנו מתייחסים לחשבון בודד, ניתן להרחיב אותם בקלות ליישום התרחיש האחרון הזה, הודות ל- יכולת IAM להחליף תפקידים אפילו בין חשבונות.
התרשים הבא ממחיש ארכיטקטורה המשתמשת ב-MLflow כמאגר מרכזי בחשבון AWS מבודד.
למקרה שימוש זה, יש לנו שני חשבונות: אחד עבור שרת MLflow, ואחד עבור הניסוי הנגיש על ידי צוות מדעי הנתונים. כדי לאפשר גישה חוצת חשבונות מעבודת הכשרה של SageMaker הפועלת בחשבון מדעי הנתונים, אנו זקוקים לרכיבים הבאים:
- תפקיד ביצוע של SageMaker בחשבון Data Science AWS עם מדיניות IAM מצורפת המאפשרת ליטול תפקיד אחר בחשבון MLflow:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "<ARN-ROLE-IN-MLFLOW-ACCOUNT>" }
}
- תפקיד IAM בחשבון MLflow עם מדיניות IAM נכונה מצורפת המעניק גישה לשרת המעקב של MLflow, ומאפשר לתפקיד הביצוע של SageMaker בחשבון מדעי הנתונים לקבל זאת:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "<ARN-SAGEMAKER-EXECUTION-ROLE-IN-DATASCIENCE-ACCOUNT>" }, "Action": "sts:AssumeRole" } ]
}
בתוך סקריפט ההדרכה הפועל בחשבון מדעי הנתונים, תוכל להשתמש בדוגמה זו לפני אתחול לקוח MLflow. אתה צריך לקחת את התפקיד בחשבון MLflow ולאחסן את האישורים הזמניים כמשתני סביבה, מכיוון שסט חדש זה של אישורים ייקלט על ידי הפעלה חדשה של Boto3 שתאוחל בתוך לקוח MLflow.
import boto3 # Session using the SageMaker Execution Role in the Data Science Account
session = boto3.Session()
sts = session.client("sts") response = sts.assume_role( RoleArn="<ARN-ROLE-IN-MLFLOW-ACCOUNT>", RoleSessionName="AssumedMLflowAdmin"
) credentials = response['Credentials']
os.environ['AWS_ACCESS_KEY_ID'] = credentials['AccessKeyId']
os.environ['AWS_SECRET_ACCESS_KEY'] = credentials['SecretAccessKey']
os.environ['AWS_SESSION_TOKEN'] = credentials['SessionToken'] # set remote mlflow server and initialize a new boto3 session in the context
# of the assumed role
mlflow.set_tracking_uri(tracking_uri)
experiment = mlflow.set_experiment(experiment_name)
בדוגמה זו, RoleArn
הוא ה-ARN של התפקיד שאתה רוצה לקחת, ו RoleSessionName
זה השם שתבחר עבור הפגישה המשוערת. ה sts.assume_role
השיטה מחזירה אישורי אבטחה זמניים שבהם לקוח MLflow ישתמש כדי ליצור לקוח חדש עבור התפקיד הנלקח. לאחר מכן, לקוח MLflow ישלח בקשות חתומות ל-API Gateway בהקשר של התפקיד המשוער.
עיבוד MLflow בתוך SageMaker Studio
SageMaker Studio מבוסס על JupyterLab, ובדיוק כמו JupyterLab, אתה יכול להתקין הרחבות כדי להגביר את הפרודוקטיביות שלך. הודות לגמישות זו, מדעני נתונים שעובדים עם MLflow ו- SageMaker יכולים לשפר עוד יותר את האינטגרציה שלהם על ידי גישה לממשק המשתמש של MLflow מסביבת הסטודיו והצגה מיידית של הניסויים והריצות שנרשמו. צילום המסך הבא מציג דוגמה של MLflow שניתנו בסטודיו.
למידע על התקנת הרחבות JupyterLab בסטודיו, עיין ב Amazon SageMaker Studio ו- SageMaker Notebook Instance מגיעים כעת עם מחברות JupyterLab 3 כדי להגביר את פרודוקטיביות המפתחים. לפרטים על הוספת אוטומציה באמצעות תצורות מחזור חיים, עיין ב התאם אישית את Amazon SageMaker Studio באמצעות תצורות מחזור חיים.
במאגר לדוגמה התומך בפוסט זה, אנו מספקים הוראות כיצד להתקין את jupyterlab-iframe
סיומת. לאחר התקנת התוסף, אתה יכול לגשת לממשק המשתמש של MLflow מבלי לעזוב את Studio באמצעות אותה קבוצת אישורים ששמרת במאגר המשתמשים של Amazon Cognito.
השלבים הבא
ישנן מספר אפשרויות להרחיב על עבודה זו. רעיון אחד הוא לאחד את מאגר הזהות הן עבור SageMaker Studio והן עבור ממשק המשתמש של MLflow. אפשרות נוספת תהיה להשתמש בשירות פדרציית זהות של צד שלישי עם אמזון קוגניטו, ולאחר מכן להשתמש AWS IAM Identity Center (יורש של AWS Single Sign-On) כדי להעניק גישה ל-Studio באמצעות אותה זהות של צד שלישי. אחד נוסף הוא להציג אוטומציה מלאה באמצעות צינורות SageMaker של אמזון עבור חלק ה-CI/CD של בניית המודל, ושימוש ב-MLflow כשרת מעקב ניסויים מרכזי ורישום מודלים עם יכולות ניהול חזקות, כמו גם אוטומציה לפריסה אוטומטית של מודלים מאושרים לנקודת קצה אירוח של SageMaker.
סיכום
מטרת הפוסט הזה הייתה לספק בקרת גישה ברמת הארגון עבור MLflow. כדי להשיג זאת, הפרדנו את תהליכי האימות וההרשאה משרת MLflow והעברנו אותם ל-API Gateway. השתמשנו בשתי שיטות הרשאה המוצעות על ידי API Gateway, אישורי IAM ומסמכי Lambda, כדי לספק את הדרישות של ה-MLflow Python SDK וגם של MLflow UI. חשוב להבין שמשתמשים הם חיצוניים ל-MLflow, לכן ניהול עקבי מחייב שמירה על מדיניות IAM, במיוחד במקרה של הרשאות מפורטות מאוד. לבסוף, הדגמנו כיצד לשפר את החוויה של מדעני נתונים על ידי שילוב MLflow בסטודיו באמצעות הרחבות פשוטות.
נסה את הפתרון בעצמך על ידי גישה ל- GitHub ריפו וספרו לנו אם יש לכם שאלות כלשהן בתגובות!
משאבים נוספים
למידע נוסף על SageMaker ו-MLflow, ראה את הפרטים הבאים:
על הכותבים
פאולו די פרנצ'סקו הוא ארכיטקט פתרונות בכיר בשירותי האינטרנט של אמזון (AWS). בעל תואר דוקטור בהנדסת תקשורת ובעל ניסיון בהנדסת תוכנה. הוא נלהב מלמידת מכונה וכרגע מתמקד בשימוש בניסיון שלו כדי לעזור ללקוחות להגיע ליעדים שלהם ב-AWS, במיוחד בדיונים סביב MLOps. מחוץ לעבודה, הוא נהנה לשחק כדורגל ולקרוא.
כריס פרגלי הוא ארכיטקט פתרונות מומחה ראשי ל-AI ולמידת מכונה בשירותי האינטרנט של אמזון (AWS) שבסיסה בסן פרנסיסקו, קליפורניה. הוא מחבר שותף של ספר אוריילי, "מדע נתונים על AWS". כריס הוא גם המייסד של מפגשים גלובליים רבים המתמקדים ב- Apache Spark, TensorFlow, Ray ו- KubeFlow. הוא נואם בקביעות בכנסים של AI ולמידת מכונה ברחבי העולם כולל O'Reilly AI, Open Data Science Conference ו-Big Data Spain.
אירשד בוך הוא אדריכל פתרונות ראשי בשירותי האינטרנט של אמזון (AWS). Irshad עובדת עם שותפים גדולים של AWS Global ISV ו-SI ומסייעת להם לבנות את אסטרטגיית הענן שלהם ואימוץ רחב של פלטפורמת מחשוב הענן של אמזון. Irshad מקיים אינטראקציה עם CIOs, CTOs והאדריכלים שלהם ועוזרת להם וללקוחות הקצה שלהם ליישם את חזון הענן שלהם. Irshad היא הבעלים של ההתקשרויות האסטרטגיות והטכניות וההצלחה הסופית סביב פרויקטי הטמעה ספציפיים, ופיתוח מומחיות עמוקה בטכנולוגיות שירותי האינטרנט של אמזון, כמו גם ידע רחב סביב אופן בניית האפליקציות והשירותים באמצעות פלטפורמת Amazon Web Services.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoAiStream. Web3 Data Intelligence. הידע מוגבר. גישה כאן.
- הטבעת העתיד עם אדריאן אשלי. גישה כאן.
- קנה ומכירה של מניות בחברות PRE-IPO עם PREIPO®. גישה כאן.
- מקור: https://aws.amazon.com/blogs/machine-learning/securing-mlflow-in-aws-fine-grained-access-control-with-aws-native-services/
- :יש ל
- :הוא
- :לֹא
- :איפה
- $ למעלה
- 1
- 100
- 30
- 7
- a
- אודות
- גישה
- נגיש
- גישה
- פי
- חֶשְׁבּוֹן
- חשבונות
- להשיג
- הושג
- לרוחב
- פעולה
- פעולות
- מעשים
- להוסיף
- מוסיף
- כתובת
- מוסיף
- מנהל
- אימוץ
- יתרון
- לאחר
- AI
- AI / ML
- המטרה
- תעשיות
- להתיר
- מאפשר
- כְּבָר
- גם
- למרות
- תמיד
- אמזון בעברית
- אמזון קוגניטו
- אמזון
- אמזון SageMaker
- סטודיו SageMaker של אמזון
- אמזון שירותי אינטרנט
- אמזון שירותי אינטרנט (AWS)
- an
- ו
- אחר
- כל
- אַפָּשׁ
- API
- ממשקי API
- האפליקציה
- לְהוֹפִיעַ
- ישים
- בקשה
- יישומים
- יישומית
- החל
- גישה
- מתאים
- מאושר
- אפליקציות
- ארכיטקטורה
- ARE
- סביב
- AS
- היבטים
- שהוקצה
- עמית
- המשויך
- להניח
- At
- בדיקה
- כּוֹכָב הַשַׁחַר
- תודה
- לאמת
- מאומת
- אימות
- אישור
- לאשר
- מורשה
- אוטומטי
- באופן אוטומטי
- אוטומציה
- זמין
- AWS
- קצה אחורי
- בסיס
- מבוסס
- BE
- נושא
- כי
- היה
- לפני
- מאחור
- שייך
- בֵּין
- גָדוֹל
- נתונים גדולים
- אבני
- ספר
- לְהַגבִּיר
- שניהם
- רחב
- דפדפן
- לִבנוֹת
- בִּניָן
- עסקים
- אבל
- by
- קליפורניה
- שיחה
- CAN
- מועמד
- יכולות
- מקרה
- לספק
- מֶרכָּזִי
- מְרוּכָּז
- לאתגר
- שינויים
- לבדוק
- בחרו
- כריס
- לטעון
- טענות
- בכיתה
- לקוחות
- ענן
- ענן מחשוב
- מחבר שותף
- קוד
- אוסף
- לשלב
- איך
- Common
- להשלים
- מורכבות
- רְכִיב
- רכיבים
- לחשב
- מחשוב
- כנס
- כנסים
- הקשר
- עִקבִי
- קונסול
- לְגַבֵּשׁ
- מכולה
- הקשר
- לִשְׁלוֹט
- נוֹחַ
- ליבה
- לתקן
- עלות תועלת
- לִיצוֹר
- נוצר
- תְעוּדָה
- אישורים
- כיום
- לקוחות
- נתונים
- מדע נתונים
- מדען נתונים
- מוקדש
- עמוק
- מומחיות עמוקה
- עמוק יותר
- מוגדר
- מופגן
- מדגים
- הפגנה
- לפרוס
- פריסה
- פריסה
- מְתוּאָר
- עיצוב
- מעוצב
- מְפוֹרָט
- פרטים
- מפתח
- מתפתח
- צעצועי התפתחות
- אחר
- ישירות
- נָדוֹן
- דיונים
- do
- סַוָר
- לא
- עושה
- תחום
- לא
- כל אחד
- בקלות
- הד
- השפעה
- מאמץ
- אלמנטים
- לאפשר
- מופעל
- מאפשר
- סוף
- מקצה לקצה
- נקודת קצה
- הנדסה
- להגביר את
- מספיק
- ברמה הארגונית
- חברות
- סביבה
- במיוחד
- מקימה
- העריך
- אֲפִילוּ
- בסופו של דבר
- כל
- כולם
- דוגמה
- דוגמאות
- הוצאת להורג
- להתקיים
- קיימים
- הרחבת
- ניסיון
- לְנַסוֹת
- ניסויים
- מומחיות
- לחקור
- להאריך
- הארכה
- סיומות
- נרחב
- חיצוני
- תמצית
- לְהַקֵל
- אפשרי
- מאפיין
- פֵדֵרַצִיָה
- תרשים
- שלח
- קבצים
- בסופו של דבר
- ראשון
- גמישות
- תזרים
- להתמקד
- מרוכז
- התמקדות
- לעקוב
- הבא
- כדורגל
- בעד
- מצא
- מייסד
- ארבע
- מסגרת
- פרנסיסקו
- החל מ-
- חזית
- חזיתי
- ממשק
- מלא
- פונקציה
- נוסף
- שער כניסה
- ליצור
- נוצר
- דור
- GitHub
- לתת
- נתינה
- גלוֹבָּלִי
- שערים
- ממשל
- להעניק
- מענקים
- הגדול ביותר
- מאוד
- קְבוּצָה
- קבוצה
- יש
- יש
- he
- לעזור
- עוזר
- כאן
- גָבוֹהַ
- ברמה גבוהה
- מאוד
- שֶׁלוֹ
- מחזיק
- אירח
- אירוח
- איך
- איך
- אולם
- HTML
- http
- HTTPS
- ID
- רעיון
- זהויות
- זהות
- if
- מדגים
- תמונה
- מיד
- השפעה
- ליישם
- הפעלה
- יושם
- יישום
- מיישמים
- חשוב
- לשפר
- שיפור
- in
- כולל
- נכנס
- תעשיות
- מידע
- תשתית
- להתקין
- מותקן
- התקנה
- למשל
- הוראות
- משולב
- שילוב
- השתלבות
- ואינטגרציות
- אינטראקציה
- אינטראקטיבי
- ממשקים
- אל תוך
- מבוא
- מציג
- מְבוּדָד
- הפיקו
- IT
- שֶׁלָה
- עצמו
- עבודה
- מקומות תעסוקה
- רק
- Jwt
- שמור
- מפתח
- מפתחות
- לדעת
- קובפלו
- גָדוֹל
- אחרון
- מאוחר יותר
- למידה
- עזיבה
- לתת
- רמה
- סִפְרִיָה
- מעגל החיים
- כמו
- מגבלות
- צמוד
- רשימה
- לִטעוֹן
- היכנס
- מחובר
- רישום
- הגיון
- התחבר
- נראה
- נראה כמו
- מכונה
- למידת מכונה
- שמירה
- לעשות
- עושה
- עשייה
- לנהל
- הצליח
- ניהול
- ניהול
- רב
- אומר
- מנגנון
- מנגנוני
- Meetups
- שיטה
- שיטות
- מדדים
- יכול
- מינימלי
- ML
- MLOps
- מודל
- מודלים
- לשנות
- מודולרי
- יותר
- רב
- מספר
- צריך
- שם
- יליד
- צורך
- נחוץ
- צורך
- צרכי
- חדש
- הבא
- מחברה
- עַכשָׁיו
- of
- מוצע
- המיוחדות שלנו
- on
- ONE
- רק
- לפתוח
- נתונים פתוחים
- קוד פתוח
- תוכנת קוד פתוח
- מבצעי
- תפעול
- אפשרות
- אפשרויות
- or
- OS
- אחר
- שלנו
- הַחוּצָה
- בחוץ
- יותר
- שֶׁלוֹ
- בעלים של
- חלק
- מסוים
- שותפים
- לעבור
- עבר
- לוהט
- תיקון
- מבצע
- רשות
- הרשאות
- הרים
- צינור
- מקום
- פלטפורמה
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- משחק
- ועוד
- נקודה
- מדיניות
- מדיניות
- בריכה
- אפשרות
- הודעה
- לְמַעֲשֶׂה
- קודם
- מנהל
- פְּרָטִי
- תהליך
- תהליכים
- הפקה
- פִּריוֹן
- פּרוֹפִיל
- פרופילים
- פרוגרמטית
- מתוכנה
- התקדמות
- פרויקטים
- לקדם
- מוּצָע
- לספק
- ובלבד
- מספק
- למטרות
- פיתון
- שאלות
- RAY
- לְהַגִיעַ
- להגיב
- הקוראים
- קריאה
- מפחית
- באזור
- הירשם
- רשום
- רישום
- באופן קבוע
- מוסדר
- תעשיות מוסדרות
- אָמִין
- לסמוך
- מרחוק
- טיוח
- מאגר
- המייצג
- לבקש
- בקשות
- דרישות
- דורש
- משאב
- משאבים
- בהתאמה
- תגובה
- REST
- לְהַגבִּיל
- לַחֲזוֹר
- החזרות
- זכויות
- חָסוֹן
- תפקיד
- תפקידים
- הפעלה
- ריצה
- בעל חכמים
- אותו
- סן
- סן פרנסיסקו
- תרחיש
- מדע
- מַדְעָן
- מדענים
- Sdk
- בצורה חלקה
- לבטח
- מאובטח
- אַבטָחָה
- אבטחה
- לִרְאוֹת
- זרע
- לשלוח
- לחצני מצוקה לפנסיונרים
- נפרד
- ללא שרת
- שרות
- שירותים
- מושב
- סט
- הצבה
- התקנה
- כמה
- צריך
- לְהַצִיג
- הראה
- הופעות
- צד
- סִימָן
- חָתוּם
- חתימה
- דומה
- פָּשׁוּט
- בפשטות
- since
- יחיד
- So
- תוכנה
- פיתוח תוכנה
- הנדסת תוכנה
- פִּתָרוֹן
- פתרונות
- ספרד
- לעורר
- מדבר
- מומחה
- ספציפי
- מפורט
- לערום
- ערימות
- שלבים
- בימוי
- החל
- הצהרה
- הצהרות
- שלב
- צעדים
- עוד
- אחסון
- חנות
- מאוחסן
- פשוט
- אסטרטגי
- אִסטרָטֶגִיָה
- חזק
- סטודיו
- המשנה
- הצלחה
- כזה
- לספק
- תמיכה
- נתמך
- מסייע
- מתג
- מערכת
- מותאם
- לקחת
- המשימות
- משימות
- נבחרת
- טכני
- טכנולוגיות
- טֵלֵקוֹמוּנִיקַציָה
- זמני
- tensorflow
- מבחן
- מֵאֲשֶׁר
- תודה
- זֶה
- השמיים
- העולם
- שֶׁלָהֶם
- אותם
- אז
- בכך
- לכן
- אלה
- הֵם
- לחשוב
- צד שלישי
- זֶה
- שְׁלוֹשָׁה
- דרך
- זמן
- ל
- אסימון
- מטבעות
- חלק עליון
- מעקב
- רכבת
- הדרכה
- הועבר
- נָכוֹן
- תור
- שתיים
- ui
- האולטימטיבי
- תחת
- להבין
- מְעוּדכָּן
- על
- us
- להשתמש
- במקרה להשתמש
- משתמש
- חוויית משתמש
- משתמשים
- באמצעות
- לנצל
- מנוצל
- תוקף
- מְאוּמָת
- לאמת
- אימות
- גרסה
- מאוד
- באמצעות
- חזון
- רוצה
- היה
- דֶרֶך..
- דרכים
- we
- אינטרנט
- שירותי אינטרנט
- טוֹב
- מה
- מתי
- אם
- אשר
- בזמן
- מי
- כל
- יצטרך
- עם
- בתוך
- לְלֹא
- תיק עבודות
- זרימות עבודה
- עובד
- עובד
- עוֹלָם
- לדאוג
- ראוי
- היה
- עוד
- אתה
- עצמך
- זפירנט