فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

فعال کردن گردش کار ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS

امروزه، بسیاری از مشتریان AWS در حال ساختن پلتفرم‌های یادگیری ماشینی آماده سازمانی (ML) هستند سرویس الاستیک کوبرنتز آمازون (Amazon EKS) با استفاده از Kubeflow در AWS (توزیع خاص AWS از Kubeflow) در بسیاری از موارد استفاده، از جمله بینایی رایانه، درک زبان طبیعی، ترجمه گفتار و مدل‌سازی مالی.

با آخرین نسخه منبع باز Kubeflow نسخه 1.6.1، جامعه Kubeflow به حمایت از این پذیرش در مقیاس بزرگ Kubeflow برای موارد استفاده سازمانی ادامه می دهد. آخرین نسخه شامل بسیاری از ویژگی های جدید هیجان انگیز مانند پشتیبانی از Kubernetes v1.22، Python SDK ترکیبی برای PyTorch، MXNet، MPI، XGBoost در اپراتور آموزشی توزیع شده Kubeflow، CRDهای جدید ClusterServingRuntime و ServingRuntime برای سرویس مدل، و بسیاری موارد دیگر است.

کمک‌های AWS به Kubeflow با راه‌اندازی اخیر Kubeflow در AWS 1.6.1 از همه ویژگی‌های منبع باز بالادست Kubeflow پشتیبانی می‌کند و شامل بسیاری از ادغام‌های جدید با سرویس‌های AWS بسیار بهینه، بومی ابری و آماده برای سازمان است که به شما کمک می‌کند تا بسیار قابل اعتماد بسازید. سیستم های ML ایمن، قابل حمل و مقیاس پذیر.

در این پست، ویژگی‌های جدید Kubeflow در AWS v1.6.1 را مورد بحث قرار می‌دهیم و سه ادغام مهم را که در یک پلتفرم همراه شده‌اند تا به شما ارائه دهند، برجسته می‌کنیم:

  • راه حل یک کلیک زیرساخت به عنوان کد (IaaC) که نصب سرتاسر Kubeflow را خودکار می کند، از جمله ایجاد خوشه EKS
  • پشتیبانی از آموزش های توزیع شده در آمازون SageMaker با استفاده از اپراتورهای آمازون SageMaker برای Kubernetes (ACK) و اجزای SageMaker برای خطوط لوله Kubeflow و به صورت محلی در Kubernetes با استفاده از اپراتورهای آموزشی Kubeflow. بسیاری از مشتریان از این قابلیت برای ساخت معماری‌های یادگیری ماشین ترکیبی استفاده می‌کنند که در آن از محاسبات Kubernetes برای فاز آزمایشی و SageMaker برای اجرای بارهای کاری در مقیاس تولید استفاده می‌کنند.
  • نظارت و قابلیت مشاهده پیشرفته برای بارهای کاری ML از جمله Amazon EKS، معیارهای Kubeflow و گزارش های برنامه با استفاده از Prometheus، Grafana و CloudWatch آمازون یکپارچگی

مورد استفاده در این وبلاگ به طور خاص بر ادغام SageMaker با Kubeflow در AWS متمرکز است که می‌تواند به گردش‌های کاری Kubernetes فعلی شما اضافه شود و شما را قادر می‌سازد معماری‌های یادگیری ماشین ترکیبی بسازید.

Kubeflow در AWS

Kubeflow در AWS 1.6.1 با افزودن خدمات AWS زیر در کنار قابلیت‌های موجود، مسیر روشنی را برای استفاده از Kubeflow فراهم می‌کند:

  • SageMaker ادغام با Kubeflow برای اجرای گردش های کاری ترکیبی ML با استفاده از SageMaker Operators for Kubernetes (ACK) و SageMaker Components برای Kubeflow Pipelines.
  • گزینه های استقرار خودکار با استفاده از اسکریپت های Kustomize و نمودارهای Helm بهبود یافته و ساده شده اند.
  • اضافه شدن پشتیبانی از Infrastructure as Code (IaC) برای استقرار یک کلیک برای Kubeflow در AWS با استفاده از Terraform برای همه موارد موجود گزینه های استقرار. این اسکریپت ایجاد منابع AWS زیر را خودکار می کند:
  • پشتیبانی AWS PrivateLink برای آمازون S3 که به کاربران غیرتجاری منطقه امکان می دهد به نقاط پایانی S3 مربوطه خود متصل شوند.
  • اضافه شدن ادغام با سرویس مدیریت آمازون برای Prometheus (AMP) و آمازون گرافانا را مدیریت کرد برای نظارت بر معیارها با Kubeflow در AWS.
  • ظروف سرور نوت بوک Kubeflow با جدیدترین تصاویر کانتینر یادگیری عمیق بر اساس TensorFlow 2.10.0 و PyTorch 1.12.1 به روز شده است.
  • ادغام با DLC های AWS برای اجرای توزیع شده پرورش و استنتاج حجم کار

نمودار معماری زیر یک عکس فوری از تمام ادغام‌های سرویس (از جمله مواردی که قبلاً ذکر شد) است که برای کنترل Kubeflow و اجزای صفحه داده در Kubeflow در AWS در دسترس هستند. هواپیمای کنترلی Kubeflow در بالای Amazon EKS نصب شده است، که یک سرویس کانتینری مدیریت شده است که برای اجرا و مقیاس‌بندی برنامه‌های Kubernetes در فضای ابری استفاده می‌شود. این یکپارچه‌سازی‌های سرویس AWS به شما امکان می‌دهد تا بخش‌های حیاتی هواپیمای کنترل Kubeflow را از Kubernetes جدا کنید و طراحی ایمن، مقیاس‌پذیر، انعطاف‌پذیر و بهینه‌سازی هزینه را ارائه دهید. برای جزئیات بیشتر در مورد ارزشی که این ادغام های سرویس نسبت به Kubeflow منبع باز اضافه می کنند، به آن مراجعه کنید با Kubeflow در AWS یک سیستم یادگیری ماشین مقیاس پذیر را در Kubernetes بسازید و استقرار دهید.

بیایید با جزئیات بیشتری در مورد اینکه چگونه ویژگی های کلیدی Kubeflow در AWS 1.6.1 می تواند برای سازمان شما مفید باشد بحث کنیم.

Kubeflow در جزئیات ویژگی AWS

با انتشار Kubeflow 1.6.1، ما سعی کردیم ابزارهای بهتری را برای انواع مختلف مشتریان ارائه کنیم که بدون توجه به اینکه کدام گزینه را انتخاب می کنید، شروع به کار با Kubeflow را آسان می کند. این ابزارها نقطه شروع خوبی را ارائه می دهند و می توانند متناسب با نیازهای شما تغییر کنند.

گزینه های استقرار

ما گزینه های استقرار مختلفی را برای موارد مختلف استفاده مشتری ارائه می دهیم. در اینجا می‌توانید انتخاب کنید که با کدام سرویس‌های AWS می‌خواهید استقرار Kubeflow خود را ادغام کنید. اگر تصمیم گرفتید بعداً گزینه‌های استقرار را تغییر دهید، توصیه می‌کنیم نصب جدیدی را برای استقرار جدید انجام دهید. گزینه های استقرار زیر در دسترس هستند:

اگر می خواهید Kubeflow را با حداقل تغییرات مستقر کنید، این را در نظر بگیرید وانیل گزینه استقرار همه گزینه های استقرار موجود را می توان با استفاده از Kustomize، Helm یا Terraform نصب کرد.

ما همچنین افزونه های مختلفی داریم که می توانند در بالای هر یک از این گزینه های استقرار نصب شوند:

گزینه های نصب

پس از اینکه تصمیم گرفتید که کدام گزینه استقرار به بهترین وجه با نیازهای شما مطابقت دارد، می توانید نحوه نصب این استقرارها را انتخاب کنید. در تلاش برای خدمت به متخصصان و تازه واردان، سطوح مختلف اتوماسیون و پیکربندی را داریم.

گزینه 1: Terraform (IaC)

این یک خوشه EKS و تمام منابع زیرساخت AWS مرتبط ایجاد می کند و سپس Kubeflow را در یک دستور با استفاده از Terraform مستقر می کند. در داخل، این از نقشه های EKS و نمودارهای هلم استفاده می کند.

این گزینه دارای مزایای زیر است:

  • این انعطاف پذیری را برای شرکت ها فراهم می کند تا Amazon EKS و Kubeflow را با یک فرمان بدون نگرانی در مورد پیکربندی های خاص Kubeflow مستقر کنند. این امر کمک زیادی به سرعت بخشیدن به ارزیابی فناوری، نمونه سازی اولیه و چرخه عمر توسعه محصول می کند که انعطاف پذیری را برای استفاده از ماژول های ترافورم و اصلاح آن برای رفع نیازهای خاص پروژه فراهم می کند.
  • امروزه بسیاری از سازمان‌ها که Terraform را مرکز استراتژی ابری خود می‌دانند، اکنون می‌توانند از Kubeflow در راه‌حل AWS Terraform برای رسیدن به اهداف ابری خود استفاده کنند.

گزینه 2: نمودارهای شخصی سازی یا هلم:

این گزینه به شما امکان می دهد Kubeflow را در یک فرآیند دو مرحله ای مستقر کنید:

  1. منابع AWS مانند Amazon EKS، Amazon RDS، Amazon S3، و Amazon Cognito را از طریق اسکریپت های خودکار موجود در توزیع AWS یا به صورت دستی به دنبال یک گام به گام توسط به گام راهنمای.
  2. استقرار Kubeflow را با استفاده از نمودار Helm یا Kustomize نصب کنید.

این گزینه دارای مزایای زیر است:

  • هدف اصلی این گزینه نصب، ارائه تنظیمات Kubernetes مرتبط با Kubeflow است. بنابراین، می‌توانید خوشه‌های EKS موجود یا هر یک از منابع AWS مرتبط مانند Amazon RDS، Amazon S3 و Amazon Cognito را ایجاد یا وارد کنید و آن را برای کار با Kubeflow در AWS پیکربندی و مدیریت کنید.
  • انتقال از مانیفست منبع باز Kustomize Kubeflow به توزیع AWS Kubeflow آسان تر است.

نمودار زیر معماری هر دو گزینه را نشان می دهد.

فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

ادغام با SageMaker

SageMaker یک سرویس کاملاً مدیریت شده است که به طور خاص برای مدیریت گردش کار ML طراحی و بهینه شده است. این مدیریت زیرساخت‌های سنگین را حذف می‌کند و نیاز به سرمایه‌گذاری در فناوری اطلاعات و DevOps برای مدیریت خوشه‌ها برای ساخت، آموزش و استنتاج مدل ML را از بین می‌برد.

بسیاری از مشتریان AWS که الزامات حمل‌پذیری یا محدودیت‌های استاندارد داخلی دارند، از Amazon EKS برای راه‌اندازی خطوط لوله ML تکرارپذیر در حال اجرای بارهای آموزشی و استنتاج استفاده می‌کنند. با این حال، این امر مستلزم آن است که توسعه دهندگان کد سفارشی بنویسند تا زیرساخت ML زیربنایی را بهینه کنند، در دسترس بودن و قابلیت اطمینان بالا را فراهم کنند، و با الزامات امنیتی و نظارتی مناسب مطابقت داشته باشند. بنابراین این مشتریان می‌خواهند از SageMaker برای زیرساخت‌های بهینه‌سازی شده و مدیریت‌شده برای آموزش و استقرار مدل استفاده کنند و به استفاده از Kubernetes برای ارکستراسیون و خطوط لوله ML برای حفظ استانداردسازی و قابلیت حمل ادامه دهند.

برای رفع این نیاز، AWS به شما امکان می‌دهد با استفاده از دو گزینه زیر، مدل‌هایی را در SageMaker از Amazon EKS آموزش، تنظیم و استقرار دهید:

  • Amazon SageMaker ACK Operators for Kubernetes که بر اساس کنترلرهای AWS برای Kubernetes چارچوب (ACK). ACK استراتژی AWS است که استانداردسازی را برای ساخت کنترلرهای سفارشی Kubernetes به ارمغان می آورد که به کاربران Kubernetes اجازه می دهد منابع AWS مانند پایگاه های داده یا صف های پیام را به سادگی با استفاده از Kubernetes API فراهم کنند. اپراتورهای SageMaker ACK کار را برای توسعه دهندگان ML و دانشمندان داده که از Kubernetes به عنوان صفحه کنترل خود استفاده می کنند، برای آموزش، تنظیم و استقرار مدل های ML در SageMaker بدون ورود به کنسول SageMaker آسان تر می کنند.
  • La اجزای SageMaker برای خطوط لوله Kubeflowکه به شما امکان می دهد SageMaker را با قابلیت حمل و هماهنگی خطوط لوله Kubeflow ادغام کنید. با اجزای SageMaker، هر کار در جریان کاری خط لوله به جای خوشه محلی Kubernetes روی SageMaker اجرا می شود. این به شما امکان می دهد آموزش، تنظیم، استقرار نقطه پایانی و تبدیل دسته ای مشاغل SageMaker بومی را از خطوط لوله Kubeflow خود ایجاد و نظارت کنید، از این رو به شما امکان می دهد محاسبات کامل شامل پردازش داده ها و کارهای آموزشی را از خوشه Kubernetes به سرویس مدیریت شده بهینه یادگیری ماشین SageMaker منتقل کنید.

با شروع Kubeflow در AWS v1.6.1، همه گزینه‌های استقرار Kubeflow موجود، هر دو گزینه ادغام Amazon SageMaker را به طور پیش‌فرض در یک پلتفرم گرد هم می‌آورند. این بدان معناست که اکنون می توانید کارهای SageMaker را با استفاده از اپراتورهای SageMaker ACK از خود سرور نوت بوک Kubeflow با ارسال منبع سفارشی SageMaker یا از مرحله خط لوله Kubeflow با استفاده از اجزای SageMaker ارسال کنید.

دو نسخه از SageMaker Components وجود دارد - Boto3 (AWS SDK برای AWS SDK برای Python) مؤلفه‌های نسخه 1 مبتنی بر و SageMaker Operator برای مؤلفه‌های مبتنی بر نسخه 8 K2 (ACK). کامپوننت‌های جدید SageMaker نسخه 2 از آخرین Apis آموزشی SageMaker پشتیبانی می‌کنند و ما به افزودن ویژگی‌های SageMaker بیشتر به این نسخه از مؤلفه ادامه خواهیم داد. با این حال، شما این قابلیت را دارید که اجزای Sagemaker نسخه 2 را برای آموزش و نسخه 1 را برای سایر ویژگی های SageMaker مانند تنظیم هایپرپارامتر، کارهای پردازش، میزبانی و بسیاری موارد دیگر ترکیب کنید.

ادغام با پرومتئوس و گرافانا

Prometheus یک ابزار جمع‌آوری معیارهای منبع باز است که می‌توانید آن را برای اجرا در خوشه‌های Kubernetes پیکربندی کنید. هنگام اجرا بر روی خوشه‌های Kubernetes، یک سرور اصلی Prometheus به صورت دوره‌ای نقاط انتهایی غلاف را خراش می‌دهد.

اجزای Kubeflow، مانند خطوط لوله Kubeflow (KFP) و Notebook، معیارهای Prometheus را منتشر می‌کنند تا امکان نظارت بر منابع جزء مانند تعداد آزمایش‌های در حال اجرا یا تعداد نوت‌بوک‌ها را فراهم کند.

این معیارها را می توان توسط یک سرور Prometheus که در خوشه Kubernetes اجرا می شود جمع آوری کرد و با استفاده از Prometheus Query Language (PromQL) پرس و جو کرد. برای جزئیات بیشتر در مورد ویژگی هایی که Prometheus پشتیبانی می کند، به بررسی کنید مستندات پرومتئوس.

توزیع Kubeflow در AWS از ادغام با خدمات مدیریت شده AWS زیر پشتیبانی می کند:

  1. آمازون Prometheus (AMP) را مدیریت کرد که یک تیتان فرزند پاپتوس-سرویس نظارت سازگار برای زیرساخت کانتینر و معیارهای کاربردی برای کانتینرها که نظارت ایمن بر محیط های کانتینر در مقیاس را برای مشتریان آسان می کند. با استفاده از AMP، می‌توانید معیارها، گزارش‌ها و ردیابی‌های جمع‌آوری‌شده از چندین منبع داده در سیستم مشاهده‌پذیری خود، از جمله AWS، ISV‌های شخص ثالث، و سایر منابع را در مجموعه فناوری اطلاعات خود تجسم، تجزیه و تحلیل و هشدار دهید.
  2. Amazon Managed Grafana، یک سرویس تجسم داده کاملاً مدیریت شده و ایمن بر اساس منبع باز گرافانا پروژه ای که مشتریان را قادر می سازد فوراً معیارها، گزارش ها و ردیابی های عملیاتی را برای برنامه های خود از چندین منبع داده جستجو، مرتبط و تجسم کنند. آمازون مدیریت Grafana مدیریت عملیاتی Grafana را با مقیاس خودکار زیرساخت محاسباتی و پایگاه داده با افزایش تقاضای استفاده، با به روز رسانی خودکار نسخه و وصله امنیتی، تخلیه می کند.

توزیع Kubeflow در AWS از ادغام سرویس مدیریت شده آمازون برای Prometheus و Amazon Managed Grafana پشتیبانی می کند تا دریافت و تجسم معیارهای Prometheus را به صورت ایمن در مقیاس تسهیل کند.

معیارهای زیر دریافت می‌شوند و می‌توان آن‌ها را تجسم کرد:

برای پیکربندی Amazon Managed Service برای Prometheus و Amazon Managed Grafana برای خوشه Kubeflow، به از Prometheus، Amazon Managed Service برای Prometheus و Amazon Managed Grafana برای نظارت بر معیارها با Kubeflow در AWS استفاده کنید..

بررسی اجمالی راه حل

در این مورد، ما از استقرار وانیلی Kubeflow با استفاده از گزینه نصب Terraform استفاده می کنیم. وقتی نصب کامل شد، وارد داشبورد Kubeflow می شویم. از داشبورد، یک سرور نوت بوک Kubeflow Jupyter را می چرخانیم تا یک خط لوله Kubeflow بسازیم که از SageMaker برای اجرای آموزش توزیع شده برای مدل طبقه بندی تصویر و یک نقطه پایانی SageMaker برای استقرار مدل استفاده می کند.

پیش نیازها

مطمئن شوید که پیش نیازهای زیر را دارید:

  • شما یک حساب AWS.
  • مطمئن شوید که در us-west-2 منطقه برای اجرای این مثال.
  • از Google Chrome برای تعامل با کنسول مدیریت AWS و Kubeflow.
  • مطمئن شوید که حساب شما دارای محدودیت نوع منبع آموزشی SageMaker برای ml.p3.2xlarge با استفاده از کنسول Service Quotas به 2 افزایش یافته است.
  • در صورت تمایل می توانید استفاده کنید AWS Cloud9یک محیط توسعه یکپارچه مبتنی بر ابر (IDE) که امکان تکمیل تمام کارها را از مرورگر وب شما فراهم می کند. برای دستورالعمل های راه اندازی، مراجعه کنید راه اندازی Cloud9 IDE. سرور اوبونتو 18.04 را به عنوان یک پلتفرم در تنظیمات AWS Cloud9 انتخاب کنید.فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.سپس از محیط AWS Cloud9 خود، علامت مثبت را انتخاب کرده و ترمینال جدید را باز کنید.

شما همچنین یک را پیکربندی کنید رابط خط فرمان AWS نمایه (AWS CLI). برای انجام این کار، به شناسه کلید دسترسی و کلید دسترسی مخفی an نیاز دارید هویت AWS و مدیریت دسترسی (من هستم) کاربر حساب با امتیازات اداری (ضمیمه خط مشی مدیریت شده موجود) و دسترسی برنامه ای. کد زیر را ببینید:

aws configure --profile=kubeflow

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

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

export AWS_PROFILE=kubeflow

مجوزهایی را که cloud9 برای فراخوانی منابع AWS استفاده می کند، تأیید کنید.

aws sts get-caller-identity

از خروجی زیر مطمئن شوید که arn کاربر ادمین را که در نمایه AWS CLI پیکربندی کرده‌اید، می‌بینید. در این مثال "kubeflow-user" است

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

Amazon EKS و Kubeflow را روی AWS نصب کنید

برای نصب Amazon EKS و Kubeflow در AWS، مراحل زیر را انجام دهید:

  1. محیط خود را برای استقرار Kubeflow در AWS تنظیم کنید:
    #Clone the awslabs/kubeflow-manifests and the kubeflow/manifests repositories and check out the release branches of your choosing
    export KUBEFLOW_RELEASE_VERSION=v1.6.1
    export AWS_RELEASE_VERSION=v1.6.1-aws-b1.0.0
    git clone https://github.com/awslabs/kubeflow-manifests.git && cd kubeflow-manifests
    git checkout ${AWS_RELEASE_VERSION}
    git clone --branch ${KUBEFLOW_RELEASE_VERSION} https://github.com/kubeflow/manifests.git upstream
    
    export MANIFEST_DIR=$PWD

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

  2. نسخه وانیلی Kubeflow را روی AWS و منابع AWS مرتبط مانند EKS با استفاده از Terraform اجرا کنید. لطفاً توجه داشته باشید که حجم های EBS مورد استفاده در گره گروه EKS به طور پیش فرض رمزگذاری نمی شوند:
    #Define the following environment variables
    
    #Region to create the cluster in
    export CLUSTER_REGION=us-west-2
    #Name of the cluster to create
    export CLUSTER_NAME=

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

مجوزهای Kubeflow را تنظیم کنید

  1. برای برقراری تماس‌های SageMaker، S3 و IAM با استفاده از Api، مجوزها را به Notebook pod و Pipeline Component pod اضافه کنید. kubeflow_iam_permissions.sh اسکریپت
    export NAMESPACE=kubeflow-user-example-com
    
    wget https://raw.githubusercontent.com/aws-samples/eks-kubeflow-cloudformation-quick-start/9e46662d97e1be7edb0be7fc31166e545655636a/utils/kubeflow_iam_permissions.sh
    chmod +x kubeflow_iam_permissions.sh
    ./kubeflow_iam_permissions.sh $NAMESPACE $CLUSTER_NAME $CLUSTER_REGION

  2. نقش اجرای SageMaker را ایجاد کنید تا کار آموزشی SageMaker برای دسترسی به مجموعه داده های آموزشی از سرویس S3 با استفاده از sagemaker_role.sh اسکریپت
    wget https://raw.githubusercontent.com/aws-samples/eks-kubeflow-cloudformation-quick-start/9e46662d97e1be7edb0be7fc31166e545655636a/utils/sagemaker_role.sh
    chmod +x sagemaker_role.sh
    ./sagemaker_role.sh

به داشبورد Kubeflow دسترسی پیدا کنید

برای دسترسی به داشبورد Kubeflow، مراحل زیر را انجام دهید:

  1. با اجرای دستورات زیر می‌توانید داشبورد Kubeflow را به صورت محلی در محیط Cloud9 اجرا کنید، بدون اینکه آدرس‌های اینترنتی خود را در معرض اینترنت عمومی قرار دهید.
    # Configure Kubecontext
    $(terraform output -raw configure_kubectl)
    
    cd ${MANIFEST_DIR}
    make port-forward

  2. را انتخاب کنید پیش نمایش برنامه در حال اجرا.فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.
  3. نماد موجود در گوشه داشبورد Kubeflow را انتخاب کنید تا به عنوان یک برگه جداگانه در کروم باز شود.
  4. اعتبار پیش فرض را وارد کنید (user@example.com/12341234) برای ورود به داشبورد Kubeflow.فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

Kubeflow را در محیط AWS تنظیم کنید

هنگامی که به داشبورد Kubeflow وارد شدید، مطمئن شوید که فضای نام مناسبی دارید (kubeflow-user-example-com) انتخاب شده است. مراحل زیر را برای راه اندازی Kubeflow خود در محیط AWS انجام دهید:

  1. در داشبورد Kubeflow، را انتخاب کنید نوت بوک در صفحه ناوبری
  2. را انتخاب کنید نوت بوک جدید.
  3. برای نام، وارد aws-nb.
  4. برای تصویر Jupyter Docket، تصویر را انتخاب کنید jupyter-pytorch:1.12.0-cpu-py38-ubuntu20.04-ec2-2022-09-20 (آخرین موجود jupyter-pytorch تصویر DLC).
  5. برای پردازنده، وارد 1.
  6. برای حافظه، وارد 5.
  7. برای GPU ها، ترک به عنوان هیچ.
  8. هیچ تغییری در آن ایجاد نکنید فضای کاری و حجم داده ها بخش.فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.
  9. انتخاب کنید اجازه دسترسی به خطوط لوله Kubeflow را بدهید در پیکربندی بخش و راه اندازی را انتخاب کنید.فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.
  10. بررسی کنید که نوت بوک شما با موفقیت ایجاد شده است (ممکن است چند دقیقه طول بکشد).فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.
  11. را انتخاب کنید اتصال برای ورود به JupyterLab.
  12. با وارد کردن، مخزن را کلون کنید https://github.com/aws-samples/eks-kubeflow-cloudformation-quick-start.git در یک مخزن را شبیه سازی کنید رشته.
  13. را انتخاب کنید کلون.فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

یک نمونه آموزشی توزیع شده را اجرا کنید

پس از راه اندازی نوت بوک Jupyter، می توانید کل نسخه نمایشی را با استفاده از مراحل سطح بالای زیر از پوشه اجرا کنید. eks-kubeflow-cloudformation-quick-start/workshop/pytorch-distributed-training در مخزن کلون شده:

  1. اسکریپت آموزشی PyTorch Distributed Data Parallel (DDP) را اجرا کنید – به اسکریپت آموزشی PyTorch DDP مراجعه کنید cifar10-distributed-gpu-final.py، که شامل یک نمونه شبکه عصبی کانولوشن و منطق برای توزیع آموزش بر روی خوشه CPU و GPU چند گره است.
  2. یک خط لوله Kubeflow ایجاد کنید - نوت بوک را اجرا کنید STEP1.0_create_pipeline_k8s_sagemaker.ipynb برای ایجاد یک خط لوله که اجرا می شود و مدل ها را در SageMaker مستقر می کند. مطمئن شوید که کتابخانه SageMaker را به عنوان بخشی از اولین سلول نوت بوک نصب کرده اید و قبل از اجرای بقیه سلول های نوت بوک، هسته را مجددا راه اندازی کنید.
  3. یک نقطه پایانی SageMaker را فراخوانی کنید - نوت بوک را اجرا کنید STEP1.1_invoke_sagemaker_endpoint.ipynb برای فراخوانی و آزمایش نقطه پایانی استنتاج مدل SageMaker ایجاد شده در نوت بوک قبلی.

در بخش های بعدی به تفصیل هر یک از این مراحل را مورد بحث قرار می دهیم.

اسکریپت آموزشی PyTorch DDP را اجرا کنید

به عنوان بخشی از آموزش توزیع شده، ما یک مدل طبقه بندی ایجاد شده توسط یک شبکه عصبی کانولوشنال ساده را آموزش می دهیم که بر روی مجموعه داده CIFAR10 عمل می کند. فیلمنامه آموزشی cifar10-distributed-gpu-final.py فقط شامل کتابخانه های منبع باز است و برای اجرا در کلاسترهای آموزشی Kubernetes و SageMaker در دستگاه های GPU یا نمونه های CPU سازگار است. قبل از اجرای نمونه های نوت بوک خود، به چند جنبه مهم اسکریپت آموزشی نگاه می کنیم.

ما با استفاده از torch.distributed ماژول، که شامل پشتیبانی PyTorch و اصول ارتباطی اولیه برای موازی سازی چند فرآیندی در سراسر گره ها در خوشه است:

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

ما یک مدل طبقه بندی تصویر ساده را با استفاده از ترکیبی از لایه های کانولوشنال، حداکثر ادغام و لایه های خطی ایجاد می کنیم. relu تابع فعال سازی در گذر رو به جلو آموزش مدل اعمال می شود:

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

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

اگر کلاستر آموزشی دارای پردازنده گرافیکی باشد، اسکریپت آموزش را روی دستگاه های CUDA اجرا می کند و متغیر دستگاه دستگاه CUDA پیش فرض را نگه می دارد:

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

قبل از اجرای آموزش توزیع شده با استفاده از PyTorch DistributedDataParallel برای اجرای پردازش توزیع شده روی چندین گره، باید محیط توزیع شده را با فراخوانی مقداردهی اولیه کنید init_process_group. این در هر ماشین از کلاستر آموزشی مقدار دهی اولیه می شود.

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

مدل طبقه‌بندی‌کننده را نمونه‌سازی می‌کنیم و مدل را روی دستگاه مورد نظر کپی می‌کنیم. اگر آموزش توزیع شده برای اجرا در چندین گره فعال باشد، DistributedDataParallel کلاس به عنوان یک شی بسته بندی در اطراف شی مدل استفاده می شود، که امکان آموزش توزیع همزمان در چندین ماشین را فراهم می کند. داده های ورودی بر روی ابعاد دسته ای تقسیم می شوند و یک کپی از مدل بر روی هر دستگاه و هر دستگاه قرار می گیرد. کد زیر را ببینید:

model = Net().to(device)

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

...

یک خط لوله Kubeflow ایجاد کنید

نوت بوک از Kubeflow Pipelines SDK و مجموعه ای از بسته های پایتون ارائه شده برای تعیین و اجرای خطوط لوله گردش کار ML. به عنوان بخشی از این SDK، ما از تزئین کننده بسته زبان مخصوص دامنه (DSL) استفاده می کنیم dsl.pipeline، که توابع پایتون را برای بازگشت خط لوله تزئین می کند.

خط لوله Kubeflow از SageMaker جزء V2 برای ارسال آموزش به SageMaker با استفاده از SageMaker ACK Operators استفاده می کند. ایجاد مدل SageMaker و استقرار مدل از مولفه SageMaker V1 استفاده می‌کند که اجزای SageMaker مبتنی بر Boto3 هستند. ما از ترکیبی از هر دو مؤلفه در این مثال برای نشان دادن انعطاف پذیری شما در انتخاب استفاده می کنیم.

  1. اجزای SageMaker را با استفاده از کد زیر بارگیری کنید:
    # Loads SageMaker training components v2 for Kubeflow pipeline from the URL
    sagemaker_train_ack_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/d4aaa03035f221351ebe72fbd74fcfccaf25bb66/components/aws/sagemaker/TrainingJob/component.yaml')
    
    # Loads SageMaker components v1 for Kubeflow pipeline from the URL
    sagemaker_model_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/cb36f87b727df0578f4c1e3fe9c24a30bb59e5a2/components/aws/sagemaker/model/component.yaml')
    sagemaker_deploy_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/cb36f87b727df0578f4c1e3fe9c24a30bb59e5a2/components/aws/sagemaker/deploy/component.yaml')

    در کد زیر، خط لوله Kubeflow را ایجاد می کنیم که در آن آموزش توزیع شده SageMaker را با استفاده از دو اجرا می کنیم ml.p3.2xlarge موارد:

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

    پس از تعریف خط لوله، می توانید خط لوله را با مشخصات Argo YAML با استفاده از Kubeflow Pipelines SDK کامپایل کنید. kfp.compiler بسته بندی شما می توانید این خط لوله را با استفاده از سرویس گیرنده Kubeflow Pipelines SDK اجرا کنید، که نقطه پایانی سرویس Pipelines را فراخوانی می کند و در هدرهای احراز هویت مناسب درست از نوت بوک عبور می کند. کد زیر را ببینید:

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

  2. انتخاب جزئیات را اجرا کنید پیوند زیر آخرین سلول برای مشاهده خط لوله Kubeflow. تصویر زیر جزئیات خط لوله ما را برای مؤلفه آموزش و استقرار SageMaker نشان می دهد.فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.
  3. مرحله شغلی آموزشی را انتخاب کنید و بر روی سیاههها برگه، پیوند گزارش‌های CloudWatch را برای دسترسی به گزارش‌های SageMaker انتخاب کنید.
    تصویر زیر گزارش‌های CloudWatch را برای هر یک از دو نمونه ml.p3.2xlarge نشان می‌دهد.فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.
  4. هر یک از گروه ها را برای دیدن گزارش ها انتخاب کنید.فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.
  5. با انتخاب گزینه، نقطه پایانی SageMaker را ضبط کنید Sagemaker – Deploy Model مرحله و کپی کردن endpoint_name مقدار مصنوع خروجیفعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

یک نقطه پایانی SageMaker را فراخوانی کنید

دفترچه یادداشت STEP1.1_invoke_sagemaker_endpoint.ipynb نقطه پایانی استنتاج SageMaker ایجاد شده در مرحله قبل را فراخوانی می کند. مطمئن شوید که نام نقطه پایانی را به روز کرده اید:

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

endpointName=''

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

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

output_vector_list=pred['score']

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

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

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

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

print(labels[index])

پاک کردن

برای پاکسازی منابع خود، مراحل زیر را انجام دهید:

  1. برای حذف منابع AWS دستورات زیر را در AWS Cloud9 اجرا کنید:
    cd ${MANIFEST_DIR}/deployments/vanilla/terraform
    make delete

  2. نقش IAM را حذف کنیدsagemakerrole” با استفاده از دستور AWS CLI زیر:
    aws iam detach-role-policy --role-name sagemakerrole --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
    aws iam detach-role-policy --role-name sagemakerrole --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
    aws iam delete-role --role-name sagemakerrole

  3. با استفاده از دستور AWS CLI زیر، نقطه پایانی SageMaker را حذف کنید:
    aws sagemaker delete-endpoint --endpoint-name  --region us-west-2

خلاصه

در این پست، ارزشی را که Kubeflow در AWS 1.6.1 از طریق ادغام‌های خدمات بومی مدیریت شده توسط AWS برای رفع نیاز موارد استفاده از هوش مصنوعی و ML در سطح سازمانی ارائه می‌کند، برجسته کردیم. می‌توانید از میان چندین گزینه استقرار، Kubeflow را روی AWS با ادغام‌های خدمات مختلف با استفاده از Terraform، Kustomize یا Helm نصب کنید. مورد استفاده در این پست یک ادغام Kubeflow با SageMaker را نشان می دهد که از یک کلاستر آموزشی مدیریت شده SageMaker برای اجرای آموزش توزیع شده برای مدل طبقه بندی تصویر و نقطه پایانی SageMaker برای استقرار مدل استفاده می کند.

ما همچنین در دسترس قرار داده ایم نمونه نمونه خط لوله که از آخرین اجزای SageMaker استفاده می کند. می توانید این را مستقیماً از داشبورد Kubeflow اجرا کنید. این خط لوله نیاز به داده های آمازون S3 و SageMaker اجرای نقش IAM به عنوان ورودی های مورد نیاز

برای شروع کار با Kubeflow در AWS، به گزینه‌های استقرار یکپارچه AWS در دسترس مراجعه کنید Kubeflow در AWS. می توانید دنبال کنید مخزن AWS Labs برای ردیابی تمام مشارکت های AWS به Kubeflow. شما همچنین می توانید ما را در Kubeflow #AWS Slack Channel; بازخورد شما در آنجا به ما کمک می کند تا ویژگی های بعدی را برای مشارکت در پروژه Kubeflow اولویت بندی کنیم.


درباره نویسندگان

فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.کانوالجیت خرمی یک معمار ارشد راه حل در خدمات وب آمازون است. او با مشتریان AWS همکاری می کند تا راهنمایی و کمک فنی ارائه دهد تا به آنها کمک کند ارزش راه حل های خود را هنگام استفاده از AWS بهبود بخشند. Kanwaljit در کمک به مشتریان با برنامه های کاربردی کانتینری و یادگیری ماشین تخصص دارد.

فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.کارتیک کلامدی مهندس توسعه نرم افزار در آمازون AI است. در حال حاضر روی پروژه‌های منبع باز Kubernetes مانند Kubeflow و AWS SageMaker Controller برای k8s تمرکز دارد. در اوقات فراغت خود دوست دارم بازی های رایانه شخصی بازی کنم و با استفاده از موتور یونیتی با VR دست و پنجه نرم کنم.

فعال کردن گردش‌های کاری ترکیبی ML در Amazon EKS و Amazon SageMaker با یک کلیک Kubeflow در استقرار AWS PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.راهول خارسه مهندس توسعه نرم افزار در خدمات وب آمازون است. کار او بر ادغام سرویس‌های AWS با پلتفرم‌های ML Ops کانتینری منبع باز برای بهبود مقیاس‌پذیری، قابلیت اطمینان و امنیت آن‌ها متمرکز است. راهول علاوه بر تمرکز بر روی درخواست‌های مشتریان برای ویژگی‌ها، از آزمایش آخرین پیشرفت‌های فناوری در این زمینه نیز لذت می‌برد.

تمبر زمان:

بیشتر از آموزش ماشین AWS