با آمازون SageMaker، می توانید کل چرخه عمر یادگیری ماشینی (ML) را مدیریت کنید. بسیاری از قابلیتهای بومی را برای کمک به مدیریت جنبههای گردش کار ML، مانند ردیابی آزمایش، و حاکمیت مدل از طریق رجیستری مدل، ارائه میکند. این پست راه حلی را ارائه می دهد که برای مشتریانی که در حال حاضر از MLflow استفاده می کنند، یک پلت فرم منبع باز برای مدیریت گردش کار ML ارائه می دهد.
در یک پست قبلی، در مورد MLflow و نحوه اجرای آن در AWS و ادغام با SageMaker بحث کردیم - به ویژه هنگام ردیابی مشاغل آموزشی به عنوان آزمایش و استقرار یک مدل ثبت شده در MLflow در زیرساخت مدیریت شده SageMaker. با این حال نسخه متن باز MLflow مکانیسمهای کنترل دسترسی کاربر بومی را برای چندین مستأجر در سرور ردیابی فراهم نمیکند. این بدان معناست که هر کاربری با دسترسی به سرور دارای حقوق سرپرست است و میتواند آزمایشها، نسخههای مدل و مراحل را تغییر دهد. این میتواند برای شرکتهایی در صنایع تحت نظارت که نیاز به حفظ حاکمیت مدل قوی برای اهداف حسابرسی دارند، چالشی باشد.
در این پست، با پیادهسازی کنترل دسترسی خارج از سرور MLflow و بارگذاری وظایف احراز هویت و مجوز به این محدودیتها میپردازیم. دروازه API آمازون، جایی که ما مکانیسم های کنترل دسترسی ریز دانه را در سطح منابع با استفاده از آن پیاده سازی می کنیم هویت و مدیریت دسترسی (من هستم). با انجام این کار، میتوانیم از هر دو زیرساخت مدیریت شده SageMaker و نیز دسترسی قوی و ایمن به سرور MLflow داشته باشیم. Amazon SageMaker Studio، بدون نیاز به نگرانی در مورد اعتبارنامه ها و تمام پیچیدگی های پشت مدیریت اعتبارنامه. طراحی مدولار ارائه شده در این معماری، تغییر منطق کنترل دسترسی را بدون تأثیر بر خود سرور MLflow ساده می کند. در نهایت، به لطف توسعه پذیری SageMaker Studio، ما تجربه دانشمند داده را با در دسترس قرار دادن MLflow در استودیو، همانطور که در تصویر زیر نشان داده شده است، بیشتر بهبود بخشیم.
MLflow قابلیتی را که فعال می کند یکپارچه کرده است درخواست امضا با استفاده از اعتبارنامه AWS به مخزن بالادستی برای Python SDK خود، ادغام با SageMaker را بهبود می بخشد. تغییرات MLflow Python SDK از زمان MLflow نسخه 1.30.0 برای همه در دسترس است.
در سطح بالا، این پست موارد زیر را نشان می دهد:
- نحوه استقرار یک سرور MLflow بر روی یک معماری بدون سرور در حال اجرا در یک زیرشبکه خصوصی که مستقیماً از خارج قابل دسترسی نیست. برای این کار، مخزن GitHub زیر را در بالای آن می سازیم: چرخه زندگی یادگیری ماشین خود را با MLflow و Amazon SageMaker مدیریت کنید.
- نحوه نمایش سرور MLflow از طریق ادغام های خصوصی در یک دروازه API، و پیاده سازی یک کنترل دسترسی ایمن برای دسترسی برنامه ریزی شده از طریق SDK و دسترسی مرورگر از طریق رابط کاربری MLflow.
- نحوه ثبت آزمایشها و اجراها، و ثبت مدلها در سرور MLflow از SageMaker با استفاده از نقشهای اجرایی مرتبط SageMaker برای احراز هویت و تأیید درخواستها، و نحوه احراز هویت از طریق Cognito آمازون به رابط کاربری MLflow. ما نمونههایی برای نشان دادن ردیابی آزمایش و استفاده از رجیستری مدل با MLflow از مشاغل آموزشی SageMaker و Studio ارائه میکنیم. دفتر یادداشت.
- نحوه استفاده از MLflow به عنوان یک مخزن متمرکز در راه اندازی چند حساب.
- چگونه با رندر کردن MLflow در استودیو، استودیو را گسترش دهیم تا تجربه کاربر را افزایش دهیم. برای این کار، ما نشان میدهیم که چگونه میتوان با نصب یک افزونه JupyterLab از توسعهپذیری استودیو استفاده کرد.
حالا بیایید عمیق تر به جزئیات بپردازیم.
بررسی اجمالی راه حل
شما می توانید در مورد MLflow به عنوان سه جزء اصلی مختلف که در کنار هم کار می کنند فکر کنید:
- یک REST API برای سرور ردیابی MLflow باطن
- SDK هایی برای تعامل برنامه نویسی شما با API های سرور ردیابی MLflow از کد آموزشی مدل شما
- یک React front end برای رابط کاربری MLflow برای تجسم تجربیات، اجراها و مصنوعات شما
در سطح بالا، معماری که ما در نظر گرفته و پیاده سازی کرده ایم در شکل زیر نشان داده شده است.
پیش نیازها
قبل از استقرار راه حل، مطمئن شوید که به یک حساب AWS با مجوزهای مدیریت دسترسی دارید.
زیرساخت راه حل را مستقر کنید
برای استقرار راه حلی که در این پست توضیح داده شده است، دستورالعمل های دقیق موجود در آن را دنبال کنید مخزن GitHub README. برای خودکارسازی استقرار زیرساخت، از کیت توسعه ابری AWS (AWS CDK). AWS CDK یک چارچوب توسعه نرم افزار منبع باز برای ایجاد است AWS CloudFormation پشته از طریق خودکار قالب CloudFormation نسل. پشته مجموعه ای از منابع AWS است که می تواند به صورت برنامه نویسی به روز شود، جابجا شود یا حذف شود. AWS CDK می سازد بلوکهای سازنده برنامههای AWS CDK هستند که نشاندهنده طرحی برای تعریف معماریهای ابری هستند.
ما چهار پشته را با هم ترکیب می کنیم:
- La MLFlowVPCSstack پشته اقدامات زیر را انجام می دهد:
- La RestApiGatewayStack پشته اقدامات زیر را انجام می دهد:
- سرور MLflow را از طریق AWS PrivateLink در معرض یک REST API Gateway قرار می دهد.
- استخر کاربر آمازون Cognito را برای مدیریت کاربرانی که به UI دسترسی دارند (هنوز پس از استقرار خالی است) مستقر می کند.
- یک را مستقر می کند AWS لامبدا مجوز تأیید رمز JWT با کلیدهای شناسه استخر کاربر آمازون Cognito و خط مشی های IAM را برای اجازه یا رد درخواست برمی گرداند. این استراتژی مجوز برای اعمال می شود
<MLFlow-Tracking-Server-URI>/*
. - یک مجوز IAM اضافه می کند. این برای به اعمال خواهد شد
<MLFlow-Tracking-Server-URI>/api/*
، که بر قبلی ارجحیت دارد.
- La AmplifyMLFlowStack stack عمل زیر را انجام می دهد:
- یک برنامه مرتبط با مخزن اصلاح شده MLflow ایجاد می کند AWS CodeCommit برای ساخت و استقرار رابط کاربری MLflow.
- La SageMakerStudioUserStack پشته اقدامات زیر را انجام می دهد:
- دامنه استودیو را مستقر می کند (اگر هنوز وجود نداشته باشد).
- سه کاربر را اضافه می کند که هر یک دارای نقش اجرای 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 Gateway ایمن کنید
در این مرحله، ما هنوز مکانیزم کنترل دسترسی نداریم. به عنوان اولین قدم، ما MLflow را با استفاده از AWS PrivateLink در معرض جهان خارج قرار می دهیم، که یک ارتباط خصوصی بین VPC و سایر سرویس های AWS، در مورد ما API Gateway برقرار می کند. درخواست های دریافتی به MLflow سپس از طریق a پراکسی می شوند REST API Gateway، به ما این امکان را می دهد که چندین مکانیسم را برای مجوز درخواست های دریافتی پیاده سازی کنیم. برای اهداف خود، ما فقط بر دو تمرکز می کنیم:
- استفاده از مجوزهای IAM - با مجوز IAM، درخواست کننده باید خط مشی مناسب IAM را برای دسترسی به منابع دروازه API اختصاص داده باشد. هر درخواستی باید اطلاعات احراز هویت را به درخواستهای ارسال شده از طریق HTTP اضافه کند AWS Signature نسخه 4.
- استفاده از مجوزهای Lambda – این بیشترین انعطافپذیری را ارائه میدهد، زیرا کنترل کاملی را بر نحوه تأیید درخواست باقی میگذارد. در نهایت، مجوز لامبدا باید یک خط مشی IAM را برگرداند، که به نوبه خود توسط API Gateway ارزیابی می شود که آیا درخواست باید مجاز باشد یا رد شود.
برای لیست کامل مکانیسم های تأیید هویت و مجوز پشتیبانی شده در API Gateway، مراجعه کنید کنترل و مدیریت دسترسی به API REST در API Gateway.
احراز هویت MLflow Python SDK (مجوز IAM)
سرور ردیابی آزمایش MLflow a را پیاده سازی می کند 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 با یک مرتبط است ابر محاسبه الاستیک آمازون نمونه (Amazon EC2) (برای سایر روشهای ارائه اعتبارنامه به Boto3، نگاه کنید به مجوزها و اعتبارات). این بدان معنی است که می تواند اعتبارنامه AWS را هنگام اجرا از یک نمونه مدیریت شده SageMaker از نقش اجرایی مرتبط بارگیری کند، همانطور که بعداً در این پست مورد بحث قرار گرفت.
سیاست های IAM را برای دسترسی به API های MLflow از طریق دروازه API پیکربندی کنید
میتوانید از نقشها و سیاستهای 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" } ]
}
احراز هویت UI MLflow (مجوز لامبدا)
دسترسی مرورگر به سرور MLflow توسط رابط کاربری MLflow پیاده سازی شده با React انجام می شود. رابط کاربری MLflow برای پشتیبانی از کاربران احراز هویت شده طراحی نشده است. اجرای یک جریان ورود قوی ممکن است یک کار دلهره آور به نظر برسد، اما خوشبختانه ما می توانیم به اجزای UI React را تقویت کنید برای احراز هویت، که تلاش برای ایجاد یک جریان ورود به سیستم در یک برنامه React را با استفاده از آمازون Cognito برای ذخیره هویت به شدت کاهش می دهد.
Amazon Cognito به ما اجازه می دهد تا پایگاه کاربری خود را مدیریت کنیم و همچنین حمایت از فدراسیون هویت شخص ثالث، ساختن، برای مثال، فدراسیون ADFS را امکان پذیر می کند (نگاه کنید به ایجاد فدراسیون ADFS برای برنامه وب خود با استفاده از استخرهای کاربر Cognito آمازون برای جزئیات بیشتر). توکن های صادر شده توسط Amazon Cognito باید در API Gateway تأیید شوند. به سادگی تأیید توکن برای کنترل دسترسی دقیق کافی نیست، بنابراین مجوز لامبدا به ما اجازه می دهد تا منطق مورد نیاز خود را اجرا کنیم. سپس میتوانیم مجوز Lambda خود را بسازیم تا توکن JWT را تأیید کرده و خطمشیهای IAM را ایجاد کنیم تا به دروازه API اجازه دهیم درخواست را رد یا اجازه دهد. نمودار زیر جریان ورود به سیستم MLflow را نشان می دهد.
برای اطلاعات بیشتر در مورد تغییرات واقعی کد، به فایل پچ مراجعه کنید cognito.patch، قابل استفاده برای MLflow نسخه 2.3.1.
این پچ دو قابلیت را معرفی می کند:
- اجزای Amplify UI را اضافه کنید و جزئیات آمازون Cognito را از طریق متغیرهای محیطی که جریان ورود به سیستم را پیاده سازی می کنند پیکربندی کنید.
- JWT را از جلسه استخراج کنید و یک هدر Authorization با یک نشانه حامل برای ارسال JWT ایجاد کنید.
اگرچه حفظ کدهای واگرا از بالادست همیشه پیچیدگی بیشتری را نسبت به اتکا به بالادست اضافه می کند، اما شایان ذکر است که تغییرات حداقل هستند زیرا ما به مؤلفه های Amplify React UI متکی هستیم.
با جریان ورود به سیستم جدید، بیایید ساخت تولید را برای رابط کاربری به روز شده MLflow خود ایجاد کنیم. میزبانی AWS Amplify یک سرویس AWS است که یک گردش کار مبتنی بر git برای CI/CD و میزبانی برنامه های وب ارائه می دهد. مرحله ساخت در خط لوله توسط تعریف شده است buildspec.yaml
، جایی که میتوانیم به عنوان متغیرهای محیطی جزئیات مربوط به شناسه استخر کاربر آمازون 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 مرتبط میکنید، یا به نمایه کاربری که از استودیو کار میکند مرتبط میکنید، تعریف میشود. برای اطلاعات بیشتر در مورد نقش اجرای 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 - مرتبط با یک نقش اجرایی با مجوزهای مشابه کاربر در مدیران گروه آمازون Cognito
- mlflow-reader - مرتبط با نقش اجرایی با مجوزهای مشابه کاربر در خوانندگان گروه آمازون Cognito
- mlflow-model-approver - مرتبط با یک نقش اجرایی با مجوزهای مشابه کاربر در تأییدکنندگان مدل گروه آمازون 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 تجسم کنید
پس از تکمیل اولین استقرار، بیایید مجموعه کاربران آمازون Cognito را با سه کاربر، که هر کدام متعلق به گروهی متفاوت هستند، پر کنیم تا مجوزهایی را که پیادهسازی کردهایم آزمایش کنیم. می توانید از این اسکریپت استفاده کنید add_users_and_groups.py برای دانه بندی استخر کاربران. پس از اجرای اسکریپت، اگر مجموعه کاربران آمازون Cognito را در کنسول آمازون Cognito بررسی کنید، باید سه کاربر ایجاد شده را ببینید.
در سمت REST API Gateway، مجوز دهنده Lambda ابتدا امضای توکن را با استفاده از کلید جمع آوری کاربر آمازون Cognito تأیید می کند و ادعاها را تأیید می کند. تنها پس از آن گروه آمازون Cognito که کاربر به آن تعلق دارد را از ادعای توکن JWT استخراج می کند (cognito:groups
) و بر اساس گروهی که برنامه ریزی کرده ایم، مجوزهای مختلفی را اعمال کنید.
برای مورد خاص خود ما سه گروه داریم:
- مدیران - می تواند همه چیز را ببیند و ویرایش کند
- خوانندگان - فقط می توان همه چیز را دید
- تایید کنندگان مدل - همانند خوانندگان، پلاس می تواند مدل ها را ثبت کند، نسخه ایجاد کند و نسخه های مدل را به مرحله بعدی ارتقا دهد
بسته به گروه، مجوزدهنده لامبدا خطمشیهای مختلف IAM را ایجاد میکند. این فقط یک مثال در مورد چگونگی دستیابی به مجوز است. با مجوز لامبدا، می توانید هر منطقی را که نیاز دارید پیاده سازی کنید. ما تصمیم گرفته ایم که خط مشی IAM را در زمان اجرا در خود تابع Lambda بسازیم. با این حال، می توانید سیاست های مناسب IAM را از قبل ایجاد کنید، آنها را در آن ذخیره کنید آمازون DynamoDB، و آنها را در زمان اجرا مطابق با منطق تجاری خود بازیابی کنید. با این حال، اگر می خواهید فقط زیر مجموعه ای از اقدامات را محدود کنید، باید از آن آگاه باشید تعریف MLflow REST API.
میتوانید کد مجوز لامبدا را در این قسمت کاوش کنید GitHub repo.
ملاحظات چند حسابی
گردش کار علم داده باید مراحل متعددی را طی کند که از آزمایش به تولید می رسد. یک رویکرد مشترک شامل حسابهای جداگانه اختصاص داده شده به مراحل مختلف گردش کار AI/ML (آزمایش، توسعه و تولید) است. با این حال، گاهی اوقات داشتن یک حساب اختصاصی که به عنوان مخزن مرکزی مدل ها عمل می کند، مطلوب است. اگرچه معماری و نمونه ما به یک حساب کاربری اشاره دارد، اما به لطف قابلیت 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 از محیط Studio و تجسم آزمایشها و اجراهای ثبتشده، ادغام خود را بیشتر بهبود بخشند. تصویر زیر نمونه ای از MLflow ارائه شده در Studio را نشان می دهد.
برای کسب اطلاعات در مورد نصب افزونه های JupyterLab در استودیو، مراجعه کنید Amazon SageMaker Studio و SageMaker Notebook Instance اکنون با نوت بوک JupyterLab 3 برای افزایش بهره وری توسعه دهندگان عرضه می شوند.. برای جزئیات بیشتر در مورد افزودن اتوماسیون از طریق تنظیمات چرخه عمر، به Amazon SageMaker Studio را با استفاده از تنظیمات چرخه زندگی سفارشی کنید.
در مخزن نمونه پشتیبانی از این پست، ما ارائه می دهیم دستورالعمل در مورد نحوه نصب jupyterlab-iframe
افزونه. پس از نصب برنامه افزودنی، میتوانید بدون خروج از استودیو با استفاده از همان مجموعه اعتبارنامههایی که در استخر کاربر Amazon Cognito ذخیره کردهاید، به رابط کاربری MLflow دسترسی پیدا کنید.
مراحل بعدی
چندین گزینه برای گسترش این کار وجود دارد. یک ایده این است که ذخیره هویت را برای SageMaker Studio و MLflow UI یکپارچه کنید. گزینه دیگر استفاده از سرویس فدراسیون هویت شخص ثالث با آمازون Cognito و سپس استفاده از آن است. مرکز هویت AWS IAM (جانشین AWS Single Sign-On) برای اعطای دسترسی به استودیو با استفاده از همان هویت شخص ثالث. یکی دیگر از اینها معرفی اتوماسیون کامل با استفاده از خطوط لوله آمازون SageMaker برای بخش CI/CD ساختمان مدل، و استفاده از MLflow بهعنوان سرور ردیابی آزمایشی متمرکز و رجیستری مدل با قابلیتهای حاکمیتی قوی، و همچنین اتوماسیون برای استقرار خودکار مدلهای تأیید شده در نقطه پایانی میزبانی SageMaker.
نتیجه
هدف این پست ارائه کنترل دسترسی در سطح سازمانی برای MLflow بود. برای رسیدن به این هدف، فرآیندهای احراز هویت و مجوز را از سرور MLflow جدا کرده و به API Gateway منتقل کردیم. ما از دو روش مجوز ارائه شده توسط API Gateway، مجوز IAM و مجوز Lambda استفاده کردیم تا نیازهای هر دو MLflow Python SDK و MLflow UI را برآورده کنیم. درک این نکته مهم است که کاربران برای MLflow خارجی هستند، بنابراین یک حاکمیت ثابت مستلزم حفظ خطمشیهای IAM است، بهویژه در مورد مجوزهای بسیار دقیق. در نهایت، ما نشان دادیم که چگونه می توان تجربه دانشمندان داده را با ادغام MLflow در Studio از طریق برنامه های افزودنی ساده افزایش داد.
راه حل را به تنهایی با دسترسی به آن امتحان کنید GitHub repo و اگر سوالی دارید در نظرات با ما در میان بگذارید!
منابع اضافی
برای اطلاعات بیشتر در مورد SageMaker و MLflow، به موارد زیر مراجعه کنید:
درباره نویسنده
پائولو دی فرانچسکو یک معمار ارشد راه حل در خدمات وب آمازون (AWS) است. وی دارای مدرک دکترای مهندسی مخابرات و دارای تجربه در زمینه مهندسی نرم افزار است. او علاقه زیادی به یادگیری ماشینی دارد و در حال حاضر روی استفاده از تجربیات خود برای کمک به مشتریان برای رسیدن به اهداف خود در AWS، به ویژه در بحث های پیرامون MLO ها، تمرکز کرده است. در خارج از محل کار، او از فوتبال بازی کردن و مطالعه لذت می برد.
کریس فرگلی یک معمار راه حل متخصص اصلی برای هوش مصنوعی و یادگیری ماشین در خدمات وب آمازون (AWS) مستقر در سانفرانسیسکو، کالیفرنیا است. او یکی از نویسندگان کتاب اوریلی، "علم داده در AWS" است. کریس همچنین بنیانگذار بسیاری از ملاقاتهای جهانی است که بر Apache Spark، TensorFlow، Ray و KubeFlow متمرکز شدهاند. او به طور منظم در کنفرانسهای هوش مصنوعی و یادگیری ماشین در سراسر جهان از جمله هوش مصنوعی O'Reilly، کنفرانس علوم دادههای باز، و Big Data Spain صحبت میکند.
ارشاد بوچ یک معمار اصلی راه حل در خدمات وب آمازون (AWS) است. ارشاد با شرکای بزرگ AWS Global ISV و SI کار می کند و به آنها کمک می کند تا استراتژی ابری خود را بسازند و پلتفرم محاسبات ابری آمازون را بپذیرند. ارشاد با CIOها، CTOها و معماران آنها تعامل دارد و به آنها و مشتریان نهایی آنها کمک می کند تا چشم انداز ابری خود را پیاده سازی کنند. ارشاد مالک تعهدات استراتژیک و فنی و موفقیت نهایی در مورد پروژههای پیادهسازی خاص، و توسعه تخصص عمیق در فناوریهای خدمات وب آمازون و همچنین دانش گسترده در مورد نحوه ساخت برنامهها و خدمات با استفاده از پلت فرم خدمات وب آمازون است.
- محتوای مبتنی بر 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/
- : دارد
- :است
- :نه
- :جایی که
- $UP
- 1
- 100
- 30
- 7
- a
- درباره ما
- دسترسی
- در دسترس
- دسترسی
- مطابق
- حساب
- حساب ها
- رسیدن
- دست
- در میان
- عمل
- اقدامات
- اعمال
- اضافه کردن
- اضافه کردن
- نشانی
- می افزاید:
- مدیر سایت
- اتخاذ
- مزیت - فایده - سود - منفعت
- پس از
- AI
- AI / ML
- هدف
- معرفی
- اجازه دادن
- اجازه می دهد تا
- قبلا
- همچنین
- هر چند
- همیشه
- آمازون
- Cognito آمازون
- آمازون EC2
- آمازون SageMaker
- Amazon SageMaker Studio
- آمازون خدمات وب
- خدمات وب آمازون (AWS)
- an
- و
- دیگر
- هر
- آپاچی
- API
- رابط های برنامه کاربردی
- نرم افزار
- ظاهر شدن
- مربوط
- کاربرد
- برنامه های کاربردی
- اعمال می شود
- درخواست
- روش
- مناسب
- تایید کرد
- برنامه های
- معماری
- هستند
- دور و بر
- AS
- جنبه
- اختصاص داده
- وابسته
- مرتبط است
- فرض
- At
- حسابرسی
- شفق قطبی
- اتهام
- تصدیق کردن
- تأیید اعتبار
- تصدیق
- مجوز
- اجازه دادن
- مجاز
- خودکار بودن
- بطور خودکار
- اتوماسیون
- در دسترس
- AWS
- بخش مدیریت
- پایه
- مستقر
- BE
- باربر
- زیرا
- بوده
- قبل از
- پشت سر
- متعلق
- میان
- بزرگ
- بزرگ داده
- بلاک ها
- کتاب
- بالا بردن
- هر دو
- پهن
- مرورگر
- ساختن
- بنا
- کسب و کار
- اما
- by
- کالیفرنیا
- دعوت کننده
- CAN
- نامزد
- قابلیت های
- مورد
- تهیه کنید
- مرکزی
- متمرکز
- به چالش
- تبادل
- بررسی
- را انتخاب کنید
- کریس
- ادعا
- ادعای
- کلاس
- مشتری
- ابر
- محاسبات ابری
- نویسنده مشترک
- رمز
- مجموعه
- ترکیب
- بیا
- مشترک
- کامل
- پیچیدگی
- جزء
- اجزاء
- محاسبه
- محاسبه
- کنفرانس
- همایش ها
- ارتباط
- استوار
- کنسول
- محکم کردن
- ظرف
- زمینه
- کنترل
- مناسب
- هسته
- اصلاح
- مقرون به صرفه
- ایجاد
- ایجاد شده
- اعتبار
- مجوزها و اعتبارات
- در حال حاضر
- مشتریان
- داده ها
- علم اطلاعات
- دانشمند داده
- اختصاصی
- عمیق
- تخصص عمیق
- عمیق تر
- مشخص
- نشان
- نشان می دهد
- نشان دادن
- گسترش
- استقرار
- گسترش
- شرح داده شده
- طرح
- طراحی
- دقیق
- جزئیات
- توسعه دهنده
- در حال توسعه
- پروژه
- مختلف
- مستقیما
- بحث کردیم
- بحث و گفتگو
- do
- کارگر بارانداز
- نمی کند
- عمل
- دامنه
- آیا
- هر
- به آسانی
- از دست
- اثر
- تلاش
- عناصر
- قادر ساختن
- فعال
- را قادر می سازد
- پایان
- پشت سر هم
- نقطه پایانی
- مهندسی
- بالا بردن
- کافی
- در سطح سازمانی
- شرکت
- محیط
- به خصوص
- ایجاد می کند
- ارزیابی
- حتی
- در نهایت
- هر
- هر کس
- مثال
- مثال ها
- اعدام
- وجود داشته باشد
- موجود
- گسترش
- تجربه
- تجربه
- آزمایش
- تخصص
- اکتشاف
- گسترش
- گسترش
- ضمیمهها
- وسیع
- خارجی
- عصاره
- تسهیل کردن
- امکان پذیر است
- ویژگی
- فدراسیون
- شکل
- پرونده
- فایل ها
- سرانجام
- پیدا کردن
- نام خانوادگی
- انعطاف پذیری
- جریان
- تمرکز
- متمرکز شده است
- تمرکز
- به دنبال
- پیروی
- فوتبال
- برای
- یافت
- موسس
- چهار
- چارچوب
- فرانسیسکو
- از جانب
- جلو
- پایان جلو
- ظاهر
- کامل
- تابع
- بیشتر
- دروازه
- تولید می کنند
- تولید
- نسل
- GitHub
- دادن
- دادن
- جهانی
- اهداف
- حکومت
- اعطا کردن
- کمک های مالی
- بزرگترین
- تا حد زیادی
- گروه
- گروه ها
- آیا
- داشتن
- he
- کمک
- کمک می کند
- اینجا کلیک نمایید
- زیاد
- در سطح بالا
- خیلی
- خود را
- دارای
- میزبانی
- میزبانی وب
- چگونه
- چگونه
- اما
- HTML
- HTTP
- HTTPS
- ID
- اندیشه
- هویت ها
- هویت
- if
- نشان می دهد
- تصویر
- بلافاصله
- تأثیرگذاری
- انجام
- پیاده سازی
- اجرا
- اجرای
- پیاده سازی می کند
- مهم
- بهبود
- بهبود
- in
- از جمله
- وارد شونده
- لوازم
- اطلاعات
- شالوده
- نصب
- نصب شده
- نصب کردن
- نمونه
- دستورالعمل
- یکپارچه
- ادغام
- ادغام
- یکپارچگی
- تعامل
- در ارتباط بودن
- رابط
- به
- معرفی
- معرفی می کند
- جدا شده
- صادر
- IT
- ITS
- خود
- کار
- شغل ها
- تنها
- Jwt
- نگاه داشتن
- کلید
- کلید
- دانستن
- KubeFlow
- بزرگ
- نام
- بعد
- یادگیری
- ترک
- اجازه
- سطح
- کتابخانه
- wifecycwe
- پسندیدن
- محدودیت
- مرتبط
- فهرست
- بار
- ورود به سیستم
- سیستم وارد
- ورود به سیستم
- منطق
- ورود
- نگاه کنيد
- شبیه
- دستگاه
- فراگیری ماشین
- حفظ
- ساخت
- باعث می شود
- ساخت
- مدیریت
- اداره می شود
- مدیریت
- مدیریت
- بسیاری
- به معنی
- مکانیزم
- مکانیسم
- ملاقات ها
- روش
- روش
- متریک
- قدرت
- حداقل
- ML
- MLO ها
- مدل
- مدل
- تغییر
- پیمانهای
- بیش
- چند
- چندگانه
- باید
- نام
- بومی
- نیاز
- ضروری
- نیازمند
- نیازهای
- جدید
- بعد
- دفتر یادداشت
- اکنون
- of
- ارائه شده
- پیشنهادات
- on
- ONE
- فقط
- باز کن
- داده های باز
- منبع باز
- نرم افزار منبع باز
- قابل استفاده
- عملیات
- گزینه
- گزینه
- or
- OS
- دیگر
- ما
- خارج
- خارج از
- روی
- خود
- مالک است
- بخش
- ویژه
- شرکای
- عبور
- گذشت
- احساساتی
- وصله
- کامل
- انجام می دهد
- اجازه
- مجوز
- برگزیده
- خط لوله
- محل
- سکو
- افلاطون
- هوش داده افلاطون
- PlatoData
- بازی
- به علاوه
- نقطه
- سیاست
- سیاست
- استخر
- امکان
- پست
- عملا
- قبلی
- اصلی
- خصوصی
- روند
- فرآیندهای
- تولید
- بهره وری
- مشخصات
- پروفایل
- برنامه ریزی شده
- برنامهریزی شده
- پیشرفت
- پروژه ها
- ترویج
- پیشنهاد شده
- ارائه
- ارائه
- فراهم می کند
- اهداف
- پــایتــون
- سوالات
- اشعه
- رسیدن به
- واکنش نشان می دهند
- خوانندگان
- مطالعه
- را کاهش می دهد
- منطقه
- ثبت نام
- ثبت نام
- رجیستری
- به طور منظم
- تنظیم
- صنایع تنظیم شده
- قابل اعتماد
- تکیه
- دور
- تفسیر
- مخزن
- نمایندگی
- درخواست
- درخواست
- مورد نیاز
- نیاز
- منابع
- منابع
- به ترتیب
- پاسخ
- REST
- محدود کردن
- برگشت
- بازده
- حقوق
- تنومند
- نقش
- نقش
- دویدن
- در حال اجرا
- حکیم ساز
- همان
- سان
- سان فرانسیسکو
- سناریو
- علم
- دانشمند
- دانشمندان
- sdk
- یکپارچه
- امن
- ایمن
- امنیت
- تیم امنیت لاتاری
- دیدن
- دانه
- ارسال
- ارشد
- جداگانه
- بدون سرور
- سرویس
- خدمات
- جلسه
- تنظیم
- محیط
- برپایی
- چند
- باید
- نشان
- نشان داده شده
- نشان می دهد
- طرف
- امضاء
- امضاء شده
- امضای
- مشابه
- ساده
- به سادگی
- پس از
- تنها
- So
- نرم افزار
- توسعه نرم افزار
- مهندسی نرم افزار
- راه حل
- مزایا
- اسپانیا
- جرقه
- صحبت می کند
- متخصص
- خاص
- مشخص شده
- پشته
- پشته
- مراحل
- استقرار
- راه افتادن
- بیانیه
- اظهارات
- گام
- مراحل
- هنوز
- ذخیره سازی
- opbevare
- ذخیره شده
- ساده
- استراتژیک
- استراتژی
- قوی
- استودیو
- زیر شبکه
- موفقیت
- چنین
- عرضه
- پشتیبانی
- پشتیبانی
- حمایت از
- گزینه
- سیستم
- طراحی شده
- گرفتن
- کار
- وظایف
- تیم
- فنی
- فن آوری
- ارتباط از راه دور
- موقت
- جریان تنسور
- آزمون
- نسبت به
- با تشکر
- که
- La
- جهان
- شان
- آنها
- سپس
- در نتیجه
- از این رو
- اینها
- آنها
- فکر می کنم
- شخص ثالث
- این
- سه
- از طریق
- زمان
- به
- رمز
- نشانه
- بالا
- پیگردی
- قطار
- آموزش
- منتقل
- درست
- دور زدن
- دو
- ui
- نهایی
- زیر
- فهمیدن
- به روز شده
- بر
- us
- استفاده کنید
- مورد استفاده
- کاربر
- سابقه کاربر
- کاربران
- با استفاده از
- استفاده کنید
- استفاده
- تایید شده
- تایید
- بررسی
- تایید
- نسخه
- بسیار
- از طريق
- دید
- می خواهم
- بود
- مسیر..
- راه
- we
- وب
- خدمات وب
- خوب
- چی
- چه زمانی
- چه
- که
- در حین
- WHO
- تمام
- اراده
- با
- در داخل
- بدون
- مهاجرت کاری
- گردش کار
- کارگر
- با این نسخهها کار
- جهان
- نگرانی
- با ارزش
- خواهد بود
- هنوز
- شما
- شما
- خودت
- زفیرنت