بدافع الأمازون SageMaker، يمكنك إدارة دورة حياة التعلم الآلي الكامل (ML). يوفر العديد من الإمكانات الأصلية للمساعدة في إدارة جوانب سير عمل ML ، مثل تتبع التجربة ، وحوكمة النموذج عبر سجل النموذج. يوفر هذا المنشور حلاً مخصصًا للعملاء الذين يستخدمون بالفعل MLflow ، وهو نظام أساسي مفتوح المصدر لإدارة تدفقات عمل ML.
في باقة السابقة آخر، ناقشنا MLflow وكيف يمكن تشغيله على AWS والتكامل مع SageMaker - على وجه الخصوص ، عند تتبع وظائف التدريب كتجارب ونشر نموذج مسجل في MLflow إلى البنية التحتية التي تديرها SageMaker. ومع ذلك ، فإن نسخة مفتوحة المصدر لا يوفر MLflow آليات تحكم في وصول المستخدم الأصلي للعديد من المستأجرين على خادم التتبع. هذا يعني أن أي مستخدم لديه حق الوصول إلى الخادم لديه حقوق المسؤول ويمكنه تعديل التجارب وإصدارات النموذج والمراحل. يمكن أن يمثل هذا تحديًا للمؤسسات في الصناعات الخاضعة للتنظيم والتي تحتاج إلى الحفاظ على حوكمة نموذجية قوية لأغراض التدقيق.
في هذا المنشور ، نعالج هذه القيود من خلال تنفيذ التحكم في الوصول خارج خادم MLflow وإلغاء تحميل مهام المصادقة والتفويض إلى بوابة أمازون API، حيث نقوم بتنفيذ آليات التحكم في الوصول الدقيقة على مستوى الموارد باستخدام الهوية والوصول إلى الإدارة (أنا أكون). من خلال القيام بذلك ، يمكننا تحقيق وصول قوي وآمن إلى خادم MLflow من كل من البنية التحتية المدارة من SageMaker و أمازون ساجميكر ستوديو، دون الحاجة إلى القلق بشأن بيانات الاعتماد وكل التعقيدات الكامنة وراء إدارة بيانات الاعتماد. التصميم المعياري المقترح في هذه البنية يجعل تعديل منطق التحكم في الوصول مباشرًا دون التأثير على خادم MLflow نفسه. أخيرًا ، بفضل قابلية توسيع SageMaker Studio ، قمنا بتحسين تجربة عالم البيانات بشكل أكبر من خلال إتاحة الوصول إلى MLflow داخل Studio ، كما هو موضح في لقطة الشاشة التالية.
قامت MLflow بدمج الميزة التي تمكن طلب التوقيع باستخدام بيانات اعتماد AWS في مستودع المنبع لـ Python SDK ، مما يحسن التكامل مع SageMaker. التغييرات التي تم إجراؤها على MLflow Python SDK متاحة للجميع منذ الإصدار 1.30.0 من MLflow.
على مستوى عالٍ ، يوضح هذا المنشور ما يلي:
- كيفية نشر خادم MLflow على بنية بدون خادم تعمل على شبكة فرعية خاصة لا يمكن الوصول إليها مباشرة من الخارج. لهذه المهمة ، نبني على GitHub repo التالي: قم بإدارة دورة حياة التعلم الآلي باستخدام MLflow و Amazon SageMaker.
- كيفية عرض خادم MLflow عبر عمليات الدمج الخاصة لبوابة API ، وتنفيذ التحكم في الوصول الآمن للوصول البرمجي عبر SDK والوصول إلى المستعرض عبر واجهة مستخدم MLflow.
- كيفية تسجيل التجارب وتشغيلها ، وتسجيل النماذج على خادم MLflow من SageMaker باستخدام أدوار تنفيذ SageMaker المرتبطة لمصادقة الطلبات وتفويضها ، وكيفية المصادقة عبر أمازون كوجنيتو إلى واجهة مستخدم MLflow. نقدم أمثلة توضح تتبع التجربة واستخدام السجل النموذجي مع MLflow من وظائف تدريب SageMaker و Studio ، على التوالي ، في المقدمة. مفكرة.
- كيفية استخدام MLflow كمستودع مركزي في إعداد متعدد الحسابات.
- كيفية توسيع الاستوديو لتحسين تجربة المستخدم من خلال تقديم MLflow داخل الاستوديو. لهذه المهمة ، نعرض كيفية الاستفادة من قابلية توسيع Studio عن طريق تثبيت امتداد JupyterLab.
الآن دعنا نتعمق في التفاصيل.
حل نظرة عامة
يمكنك التفكير في MLflow على أنه ثلاثة مكونات أساسية مختلفة تعمل جنبًا إلى جنب:
- واجهة برمجة تطبيقات REST لخادم تتبع MLflow الخلفي
- SDKs لتتفاعل برمجيًا مع واجهات برمجة تطبيقات خادم تتبع MLflow من رمز التدريب النموذجي الخاص بك
- واجهة أمامية لـ React لواجهة مستخدم MLflow لتصور تجاربك وعمليات التشغيل والتحف
على مستوى عالٍ ، تظهر البنية التي تصورناها ونفذناها في الشكل التالي.
المتطلبات الأساسية المسبقة
قبل نشر الحل ، تأكد من أن لديك حق الوصول إلى حساب AWS بأذونات المسؤول.
انشر البنية التحتية للحل
لنشر الحل الموضح في هذا المنشور ، اتبع الإرشادات التفصيلية في ملف مستودع جيثب اقرأني. لأتمتة نشر البنية التحتية ، نستخدم مجموعة تطوير سحابة AWS (AWS CDK). AWS CDK هو إطار تطوير برمجيات مفتوح المصدر يجب إنشاؤه تكوين سحابة AWS المداخن من خلال تلقائي قالب CloudFormation جيل. المكدس عبارة عن مجموعة من موارد AWS التي يمكن تحديثها أو نقلها أو حذفها برمجيًا. AWS CDK يبني هي اللبنات الأساسية لتطبيقات AWS CDK ، والتي تمثل مخططًا لتعريف البنى السحابية.
نحن نجمع بين أربعة مكدسات:
- • MLFlowVPCStack المكدس يقوم بالإجراءات التالية:
- • RestApiGatewayStack المكدس يقوم بالإجراءات التالية:
- يعرض خادم MLflow عبر AWS PrivateLink إلى REST API Gateway.
- ينشر تجمع مستخدم Amazon Cognito لإدارة المستخدمين الذين يصلون إلى واجهة المستخدم (لا يزال فارغًا بعد النشر).
- ينشر ملف AWS لامدا المفوض للتحقق من رمز JWT باستخدام مفاتيح معرف مجموعة مستخدمي Amazon Cognito ويعيد سياسات IAM للسماح بطلب أو رفضه. يتم تطبيق استراتيجية التفويض هذه على
<MLFlow-Tracking-Server-URI>/*
. - يضيف مخول IAM. سيتم تطبيق هذا على
<MLFlow-Tracking-Server-URI>/api/*
، والتي ستكون لها الأسبقية على السابقة.
- • AmplifyMLFlowStack المكدس يقوم بالإجراء التالي:
- ينشئ تطبيقًا مرتبطًا بمستودع MLflow المصحح في كود AWS لبناء ونشر واجهة مستخدم MLflow.
- • SageMakerStudioUserStack المكدس يقوم بالإجراءات التالية:
- ينشر مجال Studio (إذا لم يكن موجودًا بعد).
- يضيف ثلاثة مستخدمين ، كل منهم له دور تنفيذي مختلف لـ SageMaker يقوم بتنفيذ مستوى وصول مختلف:
- mlflow-admin - لديه إذن مثل المسؤول لأي من موارد MLflow.
- قارئ mlflow - لديه أذونات مسؤول للقراءة فقط لأي من موارد MLflow.
- mlflow- نموذج- الموافق - لديه نفس الأذونات مثل 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 عبر وكيل بوابة REST APIمما يتيح لنا إمكانية تنفيذ عدة آليات لتفويض الطلبات الواردة. لأغراضنا ، نركز على اثنين فقط:
- استخدام مفوضين IAM - مع مفوضو IAM، يجب أن يكون لدى مقدم الطلب سياسة IAM الصحيحة المعينة للوصول إلى موارد بوابة API. يجب أن يضيف كل طلب معلومات المصادقة إلى الطلبات المرسلة عبر HTTP بواسطة AWS Signature الإصدار 4.
- استخدام مفوضات Lambda - يوفر هذا أكبر قدر من المرونة لأنه يترك تحكمًا كاملاً في كيفية اعتماد الطلب. في النهاية ، مفوض Lambda يجب أن تعيد سياسة IAM ، والتي بدورها سيتم تقييمها بواسطة API Gateway بشأن ما إذا كان يجب السماح بالطلب أو رفضه.
للحصول على القائمة الكاملة لآليات المصادقة والتفويض المدعومة في بوابة API ، يرجى الرجوع إلى التحكم في الوصول إلى واجهة برمجة تطبيقات REST وإدارتها في بوابة 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
يستخدم بوتو 3 لاسترداد بيانات الاعتماد ، نعلم أنه يمكن ذلك تحميل بيانات الاعتماد من بيانات تعريف المثيل عندما يرتبط دور IAM بـ الأمازون الحوسبة المرنة السحابية مثال (Amazon EC2) (للتعرف على طرق أخرى لتوفير بيانات الاعتماد لـ Boto3 ، راجع أوراق اعتماد). هذا يعني أنه يمكن أيضًا تحميل بيانات اعتماد AWS عند التشغيل من مثيل مُدار من SageMaker من دور التنفيذ المرتبط ، كما تمت مناقشته لاحقًا في هذا المنشور.
قم بتكوين سياسات IAM للوصول إلى واجهات برمجة تطبيقات MLflow عبر بوابة API
يمكنك استخدام أدوار وسياسات IAM للتحكم في من يمكنه استدعاء الموارد على بوابة API. لمزيد من التفاصيل والبيانات المرجعية لسياسة IAM ، يرجى الرجوع إلى التحكم في الوصول لاستدعاء API.
يُظهر الكود التالي مثالاً لسياسة IAM التي تمنح أذونات المتصل لجميع الطرق على جميع الموارد الموجودة على بوابة API التي تحمي 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 UI (مُخوّل Lambda)
يتم التعامل مع وصول المستعرض إلى خادم MLflow بواسطة واجهة مستخدم MLflow المطبقة مع React. لم يتم تصميم واجهة مستخدم MLflow لدعم المستخدمين المصادق عليهم. قد يبدو تنفيذ تدفق تسجيل دخول قوي مهمة شاقة ، ولكن لحسن الحظ يمكننا الاعتماد على تضخيم مكونات واجهة المستخدم للمصادقة ، مما يقلل بشكل كبير من الجهد المبذول لإنشاء تدفق تسجيل الدخول في تطبيق React ، باستخدام Amazon Cognito لمتجر الهويات.
يتيح لنا Amazon Cognito إدارة قاعدة المستخدمين الخاصة بنا وأيضًا دعم اتحاد هوية الطرف الثالث، مما يجعل من الممكن بناء ، على سبيل المثال ، اتحاد ADFS (انظر إنشاء اتحاد ADFS لتطبيق الويب الخاص بك باستخدام تجمعات مستخدمي Amazon Cognito لمزيد من التفاصيل). يجب التحقق من الرموز الصادرة عن Amazon Cognito على بوابة API. لا يكفي مجرد التحقق من الرمز المميز للتحكم الدقيق في الوصول ، وبالتالي يتيح لنا مفوض Lambda المرونة في تنفيذ المنطق الذي نحتاجه. يمكننا بعد ذلك إنشاء مُخوّل Lambda الخاص بنا للتحقق من رمز JWT وإنشاء سياسات IAM للسماح لبوابة API برفض الطلب أو السماح به. يوضح الرسم البياني التالي تدفق تسجيل الدخول إلى MLflow.
لمزيد من المعلومات حول التغييرات الفعلية في التعليمات البرمجية ، راجع ملف التصحيح cognito.patch، ينطبق على الإصدار 2.3.1 من MLflow.
يقدم هذا التصحيح إمكانيات اثنين:
- أضف مكونات Amplify UI وقم بتهيئة تفاصيل Amazon Cognito عبر متغيرات البيئة التي تنفذ تدفق تسجيل الدخول
- استخرج JWT من الجلسة وأنشئ عنوان تخويل مع رمز حامل يشير إلى مكان إرسال JWT
على الرغم من أن الحفاظ على الكود المتباين من المنبع يضيف دائمًا تعقيدًا أكثر من الاعتماد على المنبع ، تجدر الإشارة إلى أن التغييرات ضئيلة لأننا نعتمد على مكونات Amplify React UI.
مع تطبيق تدفق تسجيل الدخول الجديد ، فلنقم بإنشاء بنية الإنتاج لواجهة مستخدم MLflow المحدثة. استضافة AWS Amplify هي خدمة AWS توفر سير عمل قائم على بوابة لـ 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
أثناء العمل في Studio أو في وظيفة تدريب 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 - مرتبط بدور تنفيذي بأذونات مماثلة للمستخدم في مسؤولي مجموعة Amazon Cognito
- قارئ mlflow - مرتبط بدور تنفيذي بأذونات مماثلة مثل المستخدم في قارئات مجموعة Amazon Cognito
- mlflow- نموذج- الموافق - مرتبط بدور تنفيذي بأذونات مماثلة مثل المستخدم في المعتمدين على نماذج مجموعة Amazon Cognito
لاختبار الأدوار الثلاثة المختلفة ، يرجى الرجوع إلى المعامل المقدمة كجزء من هذه العينة في ملف تعريف كل مستخدم.
يوضح الرسم التخطيطي التالي سير العمل لملفات تعريف مستخدمي 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 والتحقق من المطالبات. بعد ذلك فقط سيتم استخراج مجموعة Amazon Cognito التي ينتمي إليها المستخدم من المطالبة في رمز JWT المميز (cognito:groups
) وتطبيق أذونات مختلفة بناءً على المجموعة التي قمنا ببرمجتها.
بالنسبة لحالتنا المحددة ، لدينا ثلاث مجموعات:
- مدراء - يمكنه رؤية كل شيء وتحريره
- القراء - يمكنه فقط رؤية كل شيء
- الموافقون على النموذج - كما يمكن للقراء ، بالإضافة إلى ذلك ، تسجيل النماذج وإنشاء إصدارات والترويج لإصدارات النماذج إلى المرحلة التالية
اعتمادًا على المجموعة ، سينشئ مفوض Lambda سياسات IAM مختلفة. هذا مجرد مثال على كيفية الحصول على التفويض ؛ باستخدام مفوض Lambda ، يمكنك تنفيذ أي منطق تحتاجه. لقد اخترنا بناء سياسة IAM في وقت التشغيل في وظيفة Lambda نفسها ؛ ومع ذلك ، يمكنك إنشاء سياسات IAM المناسبة مسبقًا وتخزينها في الأمازون DynamoDB، واسترجاعها في وقت التشغيل وفقًا لمنطق عملك. ومع ذلك ، إذا كنت تريد تقييد مجموعة فرعية فقط من الإجراءات ، فيجب أن تكون على دراية بامتداد تعريف MLflow REST API.
يمكنك استكشاف رمز مفوض Lambda على ملف جيثب ريبو.
اعتبارات متعددة الحسابات
يجب أن يمر سير عمل علوم البيانات بمراحل متعددة أثناء تقدمهم من التجريب إلى الإنتاج. يتضمن النهج المشترك حسابات منفصلة مخصصة لمراحل مختلفة من سير عمل الذكاء الاصطناعي / التعلم الآلي (التجريب والتطوير والإنتاج). ومع ذلك ، في بعض الأحيان يكون من المستحسن أن يكون لديك حساب مخصص يعمل كمستودع مركزي للنماذج. على الرغم من أن البنية والعينة الخاصة بنا تشير إلى حساب واحد ، إلا أنه يمكن توسيعها بسهولة لتنفيذ هذا السيناريو الأخير ، وذلك بفضل قدرة IAM على تبديل الأدوار حتى عبر الحسابات.
يوضح الرسم البياني التالي بنية تستخدم MLflow كمستودع مركزي في حساب AWS معزول.
بالنسبة لحالة الاستخدام هذه ، لدينا حسابان: أحدهما لخادم MLflow والآخر للتجربة التي يمكن لفريق علوم البيانات الوصول إليها. لتمكين الوصول عبر الحسابات من وظيفة تدريب SageMaker قيد التشغيل في حساب علوم البيانات ، نحتاج إلى العناصر التالية:
- دور تنفيذي لـ SageMaker في حساب 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 في سياق الدور المفترض.
تقديم MLflow داخل SageMaker Studio
يعتمد SageMaker Studio على JupyterLab ، وكما هو الحال في JupyterLab ، يمكنك تثبيت الإضافات لزيادة إنتاجيتك. بفضل هذه المرونة ، يمكن لعلماء البيانات الذين يعملون مع MLflow و SageMaker تحسين تكاملهم من خلال الوصول إلى واجهة مستخدم MLflow من بيئة الاستوديو والتصور الفوري للتجارب وتشغيلها. تُظهر لقطة الشاشة التالية مثالاً على MLflow المقدم في الاستوديو.
للحصول على معلومات حول تثبيت ملحقات JupyterLab في Studio ، راجع يأتي كل من Amazon SageMaker Studio و SageMaker Notebook Instance مع أجهزة الكمبيوتر المحمولة JupyterLab 3 لتعزيز إنتاجية المطورين. للحصول على تفاصيل حول إضافة التشغيل الآلي عبر تكوينات دورة الحياة ، يرجى الرجوع إلى قم بتخصيص Amazon SageMaker Studio باستخدام تكوينات دورة الحياة.
في مستودع العينة الذي يدعم هذا المنشور ، نقدمه تعليمات حول كيفية تثبيت jupyterlab-iframe
امتداد. بعد تثبيت الامتداد ، يمكنك الوصول إلى واجهة مستخدم MLflow دون مغادرة Studio باستخدام نفس مجموعة بيانات الاعتماد التي قمت بتخزينها في مجموعة مستخدمي Amazon Cognito.
الخطوات التالية
هناك عدة خيارات للتوسع في هذا العمل. تتمثل إحدى الأفكار في دمج مخزن الهوية لكل من SageMaker Studio و MLflow UI. قد يكون الخيار الآخر هو استخدام خدمة اتحاد هوية جهة خارجية مع Amazon Cognito ، ثم الاستفادة منها مركز هوية AWS IAM (خلفًا لـ AWS Single Sign-On) لمنح الوصول إلى Studio باستخدام نفس هوية الجهة الخارجية. واحد آخر هو إدخال الأتمتة الكاملة باستخدام خطوط أنابيب Amazon SageMaker لجزء CI / CD من بناء النموذج ، واستخدام MLflow كخادم تتبع تجربة مركزي وسجل نموذج مع قدرات حوكمة قوية ، بالإضافة إلى أتمتة لنشر النماذج المعتمدة تلقائيًا إلى نقطة نهاية استضافة SageMaker.
وفي الختام
كان الهدف من هذا المنشور هو توفير التحكم في الوصول على مستوى المؤسسة لـ MLflow. لتحقيق ذلك ، قمنا بفصل عمليات المصادقة والتفويض عن خادم MLflow ونقلناها إلى بوابة API. استخدمنا طريقتين للترخيص توفرهما API Gateway ، ومفوضين IAM ومخولي Lambda ، لتلبية متطلبات كل من MLflow Python SDK وواجهة مستخدم MLflow. من المهم أن نفهم أن المستخدمين هم خارج MLflow ، وبالتالي فإن الحوكمة المتسقة تتطلب الحفاظ على سياسات IAM ، خاصة في حالة الأذونات الدقيقة للغاية. أخيرًا ، أوضحنا كيفية تحسين تجربة علماء البيانات من خلال دمج MLflow في Studio من خلال ملحقات بسيطة.
جرب الحل بنفسك عن طريق الوصول إلى جيثب ريبو وأخبرنا إذا كان لديك أي أسئلة في التعليقات!
موارد إضافية
لمزيد من المعلومات حول SageMaker و MLflow ، راجع ما يلي:
حول المؤلف
باولو دي فرانشيسكو هو كبير مهندسي الحلول في Amazon Web Services (AWS). حاصل على درجة الدكتوراه في هندسة الاتصالات ولديه خبرة في هندسة البرمجيات. إنه متحمس للتعلم الآلي ويركز حاليًا على استخدام خبرته لمساعدة العملاء على الوصول إلى أهدافهم على AWS ، لا سيما في المناقشات حول MLOps. خارج العمل ، يستمتع بلعب كرة القدم والقراءة.
كريس فريجلي هو مهندس حلول متخصص رئيسي للذكاء الاصطناعي والتعلم الآلي في Amazon Web Services (AWS) ومقرها في سان فرانسيسكو ، كاليفورنيا. وهو مؤلف مشارك لكتاب O'Reilly Book ، "Data Science على AWS". كريس هو أيضًا مؤسس العديد من اللقاءات العالمية التي تركز على Apache Spark و TensorFlow و Ray و KubeFlow. يتحدث بانتظام في مؤتمرات الذكاء الاصطناعي والتعلم الآلي في جميع أنحاء العالم بما في ذلك O'Reilly AI و Open Data Science Conference و Big Data Spain.
ارشاد بوخ هو مهندس حلول رئيسي في Amazon Web Services (AWS). يعمل Irshad مع شركاء AWS Global ISV و SI الكبيرين ويساعدهم في بناء إستراتيجيتهم السحابية والاعتماد الواسع لمنصة Amazon للحوسبة السحابية. تتفاعل إرشاد مع مدراء تقنية المعلومات ومديري تكنولوجيا المعلومات والمهندسين المعماريين وتساعدهم وعملائهم النهائيين على تنفيذ رؤيتهم السحابية. يمتلك إرشاد الارتباطات الإستراتيجية والتقنية والنجاح النهائي حول مشاريع تنفيذ محددة ، ويطور خبرة عميقة في تقنيات Amazon Web Services بالإضافة إلى معرفة واسعة حول كيفية إنشاء التطبيقات والخدمات باستخدام منصة Amazon Web Services.
- محتوى مدعوم من تحسين محركات البحث وتوزيع العلاقات العامة. تضخيم اليوم.
- أفلاطونايستريم. ذكاء بيانات Web3. تضخيم المعرفة. الوصول هنا.
- سك المستقبل مع أدرين أشلي. الوصول هنا.
- شراء وبيع الأسهم في شركات ما قبل الاكتتاب مع PREIPO®. الوصول هنا.
- المصدر https://aws.amazon.com/blogs/machine-learning/securing-mlflow-in-aws-fine-grained-access-control-with-aws-native-services/
- :لديها
- :يكون
- :ليس
- :أين
- $ UP
- 1
- 100
- 30
- 7
- a
- من نحن
- الوصول
- يمكن الوصول
- الوصول
- وفقا
- حسابي
- الحسابات
- التأهيل
- تحقق
- في
- اكشن
- الإجراءات
- الأفعال
- تضيف
- مضيفا
- العنوان
- يضيف
- مشرف
- تبني
- مميزات
- بعد
- AI
- AI / ML
- هدف
- الكل
- السماح
- يسمح
- سابقا
- أيضا
- بالرغم ان
- دائما
- أمازون
- أمازون كوجنيتو
- Amazon EC2
- الأمازون SageMaker
- أمازون ساجميكر ستوديو
- أمازون ويب سيرفيسز
- أمازون ويب سيرفيسز (أوس)
- an
- و
- آخر
- أي وقت
- أباتشي
- API
- واجهات برمجة التطبيقات
- التطبيق
- تظهر
- ذو صلة
- تطبيق
- التطبيقات
- تطبيقي
- التقديم
- نهج
- مناسب
- من وزارة الصحة
- التطبيقات
- هندسة معمارية
- هي
- حول
- AS
- الجوانب
- تعيين
- محام
- أسوشيتد
- يفترض
- At
- التدقيق
- فجر
- المصادقة
- مصادقة
- موثق
- التحقّق من المُستخدم
- ترخيص
- يأذن
- مخول
- أتمتة
- تلقائيا
- أتمتة
- متاح
- AWS
- الخلفية
- قاعدة
- على أساس
- BE
- حامل
- لان
- كان
- قبل
- وراء
- ينتمي
- ما بين
- كبير
- البيانات الكبيرة
- Blocks
- كتاب
- زيادة
- على حد سواء
- واسع
- المتصفح
- نساعدك في بناء
- ابني
- الأعمال
- لكن
- by
- كاليفورنيا
- المتصل
- CAN
- مرشح
- قدرات
- حقيبة
- تلبية
- مركزي
- مركزية
- تحدى
- التغييرات
- التحقق
- اختار
- كريس
- مطالبة
- مطالبات
- فئة
- زبون
- سحابة
- الحوسبة السحابية
- مؤلف مشارك
- الكود
- مجموعة شتاء XNUMX
- دمج
- تأتي
- مشترك
- إكمال
- تعقيد
- عنصر
- مكونات
- إحصاء
- الحوسبة
- مؤتمر
- المؤتمرات
- صلة
- ثابتة
- كنسولات
- دعم
- وعاء
- سياق الكلام
- مراقبة
- مناسب
- جوهر
- تصحيح
- فعاله من حيث التكلفه
- خلق
- خلق
- الاعتماد
- أوراق اعتماد
- حاليا
- العملاء
- البيانات
- علم البيانات
- عالم البيانات
- مخصصة
- عميق
- خبرة عميقة
- أعمق
- تعريف
- تظاهر
- يوضح
- التظاهر
- نشر
- نشر
- نشر
- وصف
- تصميم
- تصميم
- مفصلة
- تفاصيل
- المطور
- تطوير
- التطوير التجاري
- مختلف
- مباشرة
- ناقش
- مناقشات
- do
- عامل في حوض السفن
- لا
- فعل
- نطاق
- لا
- كل
- بسهولة
- صدى
- تأثير
- جهد
- عناصر
- تمكين
- تمكين
- تمكن
- النهاية
- النهائي إلى نهاية
- نقطة النهاية
- الهندسة
- تعزيز
- كاف
- مستوى المؤسسة
- الشركات
- البيئة
- خاصة
- يؤسس
- تقييم
- حتى
- في النهاية
- كل
- كل شخص
- مثال
- أمثلة
- يوجد
- القائمة
- توسيع
- الخبره في مجال الغطس
- تجربة
- تجارب
- خبرة
- اكتشف
- مد
- تمديد
- اضافات المتصفح
- واسع
- خارجي
- استخراج
- تسهيل
- قابليه
- الميزات
- اتحاد
- الشكل
- قم بتقديم
- ملفات
- أخيرا
- الاسم الأول
- مرونة
- تدفق
- تركز
- ركز
- التركيز
- اتباع
- متابعيك
- كرة القدم
- في حالة
- وجدت
- مؤسس
- أربعة
- الإطار
- فرانسيسكو
- تبدأ من
- جبهة
- نهاية المقدمة
- الواجهة
- بالإضافة إلى
- وظيفة
- إضافي
- بوابة
- توليد
- ولدت
- جيل
- GitHub جيثب:
- منح
- إعطاء
- العالمية
- الأهداف
- الحكم
- منح
- منح
- أعظم
- جدا
- تجمع
- مجموعات
- يملك
- وجود
- he
- مساعدة
- يساعد
- هنا
- مرتفع
- رفيع المستوى
- جدا
- له
- يحمل
- استضافت
- استضافة
- كيفية
- كيفية
- لكن
- HTML
- HTTP
- HTTPS
- ID
- فكرة
- المتطابقات
- هوية
- if
- يوضح
- صورة
- فورا
- تؤثر
- تنفيذ
- التنفيذ
- نفذت
- تحقيق
- الأدوات
- أهمية
- تحسن
- تحسين
- in
- بما فيه
- الوارد
- الصناعات
- معلومات
- البنية التحتية
- تثبيت
- تثبيت
- تركيب
- مثل
- تعليمات
- المتكاملة
- دمج
- التكامل
- التكاملات
- تفاعل
- يتفاعل
- واجهات
- إلى
- تقديم
- يدخل
- معزول
- نشر
- IT
- انها
- نفسها
- وظيفة
- المشــاريــع
- م
- جي دبليو تي
- احتفظ
- القفل
- مفاتيح
- علم
- Kubeflow
- كبير
- اسم العائلة
- الى وقت لاحق
- تعلم
- مغادرة
- اسمحوا
- مستوى
- المكتبة
- دورة حياة
- مثل
- القيود
- مرتبط
- قائمة
- تحميل
- سجل
- تسجيل الدخول
- تسجيل
- منطق
- تسجيل الدخول
- بحث
- يبدو مثل
- آلة
- آلة التعلم
- الحفاظ على
- جعل
- يصنع
- القيام ب
- إدارة
- تمكن
- إدارة
- إدارة
- كثير
- يعني
- آلية
- آليات
- Meetups
- طريقة
- طرق
- المقاييس
- ربما
- أدنى
- ML
- MLOps
- نموذج
- عارضات ازياء
- تعديل
- وحدات
- الأكثر من ذلك
- موضوع
- متعدد
- يجب
- الاسم
- محلي
- حاجة
- بحاجة
- الحاجة
- إحتياجات
- جديد
- التالي
- مفكرة
- الآن
- of
- عرضت
- عروض
- on
- ONE
- فقط
- جاكيت
- بيانات مفتوحة
- المصدر المفتوح
- برمجيات مفتوحة المصدر
- تشغيل
- عمليات
- خيار
- مزيد من الخيارات
- or
- OS
- أخرى
- لنا
- خارج
- في الخارج
- على مدى
- الخاصة
- تملك
- جزء
- خاص
- شركاء
- pass
- مرت
- عاطفي
- بقعة
- ينفذ
- إذن
- أذونات
- التقطت
- خط أنابيب
- المكان
- المنصة
- أفلاطون
- الذكاء افلاطون البيانات
- أفلاطون داتا
- لعب
- المزيد
- البوينت
- سياسات الخصوصية والبيع
- سياسة
- تجمع
- إمكانية
- منشور
- عمليا
- سابق
- رئيسي
- خاص
- عملية المعالجة
- العمليات
- الإنتــاج
- إنتاجية
- ملفي الشخصي
- ملامح
- برنامجي
- المبرمجة
- التقدّم
- مشروع ناجح
- تعزيز
- المقترح
- تزود
- المقدمة
- ويوفر
- أغراض
- بايثون
- الأسئلة المتكررة
- RAY
- الوصول
- رد فعل
- القراء
- نادي القراءة
- يقلل
- منطقة
- تسجيل جديد
- مسجل
- سجل
- بانتظام
- ما هو مقنن
- الصناعات المنظمة
- الخدمة الموثوقة
- اعتمد
- عن بعد
- أداء
- مستودع
- تمثل
- طلب
- طلبات
- المتطلبات الأساسية
- يتطلب
- مورد
- الموارد
- على التوالي
- استجابة
- REST
- بتقييد
- عائد أعلى
- عائدات
- حقوق
- قوي
- النوع
- الأدوار
- يجري
- تشغيل
- sagemaker
- نفسه
- سان
- سان فرانسيسكو
- سيناريو
- علوم
- عالم
- العلماء
- الإستراحة
- بسلاسة
- تأمين
- آمن
- تأمين
- أمن
- انظر تعريف
- بذرة
- إرسال
- كبير
- مستقل
- Serverless
- الخدمة
- خدماتنا
- الجلسة
- طقم
- ضبط
- الإعداد
- عدة
- ينبغي
- إظهار
- أظهرت
- يظهر
- جانب
- إشارة
- وقعت
- التوقيع
- مماثل
- الاشارات
- ببساطة
- منذ
- عزباء
- So
- تطبيقات الكمبيوتر
- تطوير البرمجيات
- هندسة البرمجيات
- حل
- الحلول
- إسبانيا
- شرارة
- يتحدث
- متخصص
- محدد
- محدد
- كومة
- كومات
- مراحل
- انطلاق
- ابتداء
- ملخص الحساب
- البيانات
- خطوة
- خطوات
- لا يزال
- تخزين
- متجر
- تخزين
- صريح
- إستراتيجي
- الإستراتيجيات
- قوي
- ستوديو
- الشبكة الفرعية
- تحقيق النجاح
- هذه
- تزويد
- الدعم
- مدعومة
- دعم
- مفاتيح
- نظام
- تناسب
- أخذ
- مهمة
- المهام
- فريق
- تقني
- التكنولوجيا
- اتصالات
- مؤقت
- tensorflow
- تجربه بالعربي
- من
- شكر
- أن
- •
- العالم
- من مشاركة
- منهم
- then
- وبالتالي
- وبالتالي
- تشبه
- هم
- اعتقد
- طرف ثالث
- ثلاثة
- عبر
- الوقت
- إلى
- رمز
- الرموز
- تيشرت
- تتبع الشحنة
- قطار
- قادة الإيمان
- نقل
- صحيح
- منعطف أو دور
- اثنان
- ui
- نهائي
- مع
- فهم
- تحديث
- بناء على
- us
- تستخدم
- حالة الاستخدام
- مستخدم
- تجربة المستخدم
- المستخدمين
- استخدام
- الاستفادة من
- تستخدم
- التحقق من صحة
- التحقق
- تحقق من
- التحقق
- الإصدار
- جدا
- بواسطة
- رؤيتنا
- تريد
- وكان
- طريق..
- طرق
- we
- الويب
- خدمات ويب
- حسن
- ابحث عن
- متى
- سواء
- التي
- في حين
- من الذى
- كامل
- سوف
- مع
- في غضون
- بدون
- للعمل
- سير العمل
- عامل
- أعمال
- العالم
- قلق
- قيمة
- سوف
- حتى الآن
- أنت
- حل متجر العقارات الشامل الخاص بك في جورجيا
- نفسك
- زفيرنت