با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.

با استفاده از Kubeflow در AWS و Amazon SageMaker، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید.

در این پست نحوه کار را به شما نشان می دهیم Kubeflow در AWS (توزیع خاص AWS از Kubeflow) که با ظروف یادگیری عمیق AWS و سیستم فایل الاستیک آمازون (Amazon EFS) همکاری را ساده می کند و انعطاف پذیری را در آموزش مدل های یادگیری عمیق در مقیاس در هر دو فراهم می کند. سرویس الاستیک کوبرنتز آمازون (Amazon EKS) و آمازون SageMaker استفاده از رویکرد معماری ترکیبی

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

Kubernetes یک سیستم به طور گسترده پذیرفته شده برای خودکارسازی استقرار زیرساخت، مقیاس‌بندی منابع و مدیریت این برنامه‌های کاربردی کانتینری است. با این حال، Kubernetes با در نظر گرفتن ML ساخته نشده است، بنابراین به دلیل اتکای زیاد به فایل‌های مشخصات YAML، می‌تواند برای دانشمندان داده غیرمعمول باشد. تجربه Jupyter وجود ندارد، و بسیاری از قابلیت های خاص ML، مانند مدیریت گردش کار و خطوط لوله، و سایر قابلیت هایی که کارشناسان ML انتظار دارند، مانند تنظیم هایپرپارامتر، میزبانی مدل و موارد دیگر وجود ندارد. چنین قابلیت هایی را می توان ایجاد کرد، اما Kubernetes برای انجام این کار به عنوان هدف اصلی خود طراحی نشده است.

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

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

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

Kubeflow در AWS و SageMaker چگونه کمک می کند؟

مدل‌های شبکه عصبی ساخته‌شده با چارچوب‌های یادگیری عمیق مانند TensorFlow، PyTorch، MXNet و سایرین، دقت بسیار بالاتری را با استفاده از مجموعه داده‌های آموزشی بزرگ‌تر، به‌ویژه در موارد استفاده از بینایی کامپیوتر و پردازش زبان طبیعی ارائه می‌کنند. با این حال، با مجموعه داده های آموزشی بزرگ، آموزش مدل های یادگیری عمیق بیشتر طول می کشد، که در نهایت زمان عرضه به بازار را کند می کند. اگر بتوانیم یک خوشه را مقیاس بندی کنیم و زمان آموزش مدل را از هفته ها به روزها یا ساعت ها کاهش دهیم، می تواند تأثیر زیادی بر بهره وری و سرعت کسب و کار داشته باشد.

آمازون EKS به تهیه هواپیمای کنترلی مدیریت شده Kubernetes کمک می کند. می‌توانید از Amazon EKS برای ایجاد کلاسترهای آموزشی در مقیاس بزرگ با نمونه‌های CPU و GPU استفاده کنید و از جعبه ابزار Kubeflow برای ارائه ابزارهای متن‌باز سازگار با ML و عملیاتی‌سازی جریان‌های کاری ML که قابل حمل و مقیاس‌پذیر هستند با استفاده از Kubeflow Pipelines برای بهبود بهره‌وری تیم خود استفاده کنید. زمان ورود به بازار را کاهش دهید

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

  • اطمینان از حداکثر استفاده از یک خوشه در تیم های علم داده. به عنوان مثال، شما باید نمونه‌های GPU را در صورت تقاضا تهیه کنید و از استفاده بالای آن برای کارهای سخت‌گیرانه در مقیاس تولید مانند آموزش یادگیری عمیق اطمینان حاصل کنید، و از نمونه‌های CPU برای کارهای کم‌مشکل مانند پیش‌پردازش داده‌ها استفاده کنید.
  • اطمینان از در دسترس بودن بالای اجزای زیرساخت Kubeflow سنگین وزن، از جمله پایگاه داده، ذخیره سازی، و احراز هویت، که در گره کارگر خوشه Kubernetes مستقر شده اند. به عنوان مثال، صفحه کنترل Kubeflow مصنوعاتی را تولید می کند (مانند نمونه های MySQL، گزارش های pod یا ذخیره سازی MinIO) که در طول زمان رشد می کنند و به حجم های ذخیره سازی قابل تغییر اندازه با قابلیت های نظارت مداوم نیاز دارند.
  • به اشتراک گذاری مجموعه داده آموزشی، کد و محیط های محاسباتی بین توسعه دهندگان، خوشه های آموزشی و پروژه ها چالش برانگیز است. برای مثال، اگر روی مجموعه کتابخانه‌های خودتان کار می‌کنید و آن کتابخانه‌ها وابستگی‌های متقابل قوی دارند، اشتراک‌گذاری و اجرای یک کد یکسان بین دانشمندان داده در یک تیم واقعاً سخت می‌شود. همچنین برای هر اجرا آموزشی باید مجموعه داده آموزشی را دانلود کنید و تصویر آموزشی را با تغییرات کد جدید بسازید.

Kubeflow در AWS به رفع این چالش ها کمک می کند و یک محصول نیمه مدیریتی Kubeflow در سطح سازمانی ارائه می دهد. با Kubeflow در AWS، می توانید برخی از خدمات هواپیمای کنترل Kubeflow مانند پایگاه داده، ذخیره سازی، نظارت و مدیریت کاربر را با سرویس های مدیریت شده AWS جایگزین کنید. سرویس پایگاه داده رابطه آمازون (آمازون RDS)، سرویس ذخیره سازی ساده آمازون (Amazon S3) سیستم فایل الاستیک آمازون (Amazon EFS) آمازون FSx, CloudWatch آمازونو Cognito آمازون.

جایگزینی این اجزای Kubeflow بخش‌های حیاتی هواپیمای کنترل Kubeflow را از Kubernetes جدا می‌کند و طراحی ایمن، مقیاس‌پذیر، انعطاف‌پذیر و بهینه‌سازی هزینه را ارائه می‌دهد. این رویکرد همچنین منابع ذخیره سازی و محاسباتی را از صفحه داده EKS آزاد می کند، که ممکن است برای برنامه هایی مانند آموزش مدل توزیع شده یا سرورهای نوت بوک کاربر مورد نیاز باشد. Kubeflow در AWS همچنین ادغام بومی نوت‌بوک‌های Jupyter را با تصاویر Deep Learning Container (DLC) فراهم می‌کند، که از پیش بسته‌بندی شده و با چارچوب‌های یادگیری عمیق بهینه‌سازی‌شده AWS مانند PyTorch و TensorFlow تنظیم شده‌اند که به شما امکان می‌دهد بلافاصله بدون نیاز به انجام کار نوشتن کد آموزشی خود را شروع کنید. با رزولوشن های وابستگی و بهینه سازی چارچوب. همچنین، ادغام آمازون EFS با خوشه های آموزشی و محیط توسعه به شما امکان می دهد کد و مجموعه داده های آموزشی پردازش شده خود را به اشتراک بگذارید، که از ساخت تصویر ظرف و بارگذاری مجموعه داده های عظیم پس از هر تغییر کد جلوگیری می کند. این ادغام‌ها با Kubeflow در AWS به شما کمک می‌کند سرعت ساخت مدل و زمان آموزش را افزایش دهید و امکان همکاری بهتر با داده‌ها و اشتراک‌گذاری کد آسان‌تر را فراهم کنید.

Kubeflow در AWS به ساخت یک پلت فرم ML بسیار در دسترس و قوی کمک می کند. این پلتفرم انعطاف‌پذیری را برای ساخت و آموزش مدل‌های یادگیری عمیق فراهم می‌کند و دسترسی به بسیاری از جعبه‌ابزارهای منبع باز، بینش‌هایی در مورد گزارش‌ها و اشکال‌زدایی تعاملی برای آزمایش را فراهم می‌کند. با این حال، دستیابی به حداکثر استفاده از منابع زیرساخت در حالی که آموزش مدل های یادگیری عمیق بر روی صدها پردازنده گرافیکی انجام می شود، همچنان شامل هزینه های عملیاتی زیادی است. این را می توان با استفاده از SageMaker، که یک سرویس کاملاً مدیریت شده طراحی و بهینه سازی شده برای مدیریت کلاسترهای آموزشی کارآمد و بهینه سازی شده است که فقط در صورت درخواست ارائه می شوند، در صورت نیاز مقیاس بندی می شوند، و به طور خودکار پس از اتمام کار خاموش می شوند، در نتیجه نزدیک به 100 را ارائه می دهند. ٪ بهره برداری از منابع. با استفاده از اجزای مدیریت شده SageMaker می توانید SageMaker را با خط لوله Kubeflow ادغام کنید. این به شما امکان می دهد تا گردش های کاری ML را به عنوان بخشی از خطوط لوله Kubeflow عملیاتی کنید، جایی که می توانید از Kubernetes برای آموزش محلی و SageMaker برای آموزش در مقیاس محصول در یک معماری ترکیبی استفاده کنید.

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

معماری زیر نحوه استفاده از Kubeflow Pipelines را برای ساخت و استقرار گردش‌های کاری ML سرتاسر قابل حمل و مقیاس‌پذیر برای اجرای مشروط آموزش توزیع‌شده در Kubernetes با استفاده از آموزش Kubeflow یا SageMaker بر اساس پارامتر زمان اجرا توضیح می‌دهد.

آموزش Kubeflow گروهی از اپراتورهای Kubernetes است که پشتیبانی از آموزش توزیع شده مدل های ML را با استفاده از چارچوب های مختلف مانند TensorFlow، PyTorch و غیره به Kubeflow اضافه می کنند. pytorch-operator اجرای Kubeflow از Kubernetes است منبع سفارشی (PyTorchJob) برای اجرای مشاغل آموزشی PyTorch توزیع شده در Kubernetes.

ما از مولفه PyTorchJob Launcher به عنوان بخشی از خط لوله Kubeflow برای اجرای آموزش های توزیع شده PyTorch در طول مرحله آزمایش استفاده می کنیم، زمانی که به انعطاف پذیری و دسترسی به تمام منابع اساسی برای اشکال زدایی و تجزیه و تحلیل تعاملی نیاز داریم.

ما همچنین از اجزای SageMaker برای Kubeflow Pipelines استفاده می کنیم تا آموزش مدل خود را در مقیاس تولید اجرا کنیم. این به ما امکان می دهد از ویژگی های قدرتمند SageMaker مانند خدمات کاملاً مدیریت شده، مشاغل آموزشی توزیع شده با حداکثر استفاده از GPU و آموزش مقرون به صرفه استفاده کنیم. ابر محاسبه الاستیک آمازون (Amazon EC2) موارد نقطه ای.

به عنوان بخشی از فرآیند ایجاد گردش کار، مراحل زیر (همانطور که در نمودار قبل نشان داده شده است) را برای ایجاد این خط لوله تکمیل می‌کنید:

  1. از فایل مانیفست Kubeflow برای ایجاد داشبورد Kubeflow و دسترسی به نوت بوک های Jupyter از داشبورد مرکزی Kubeflow استفاده کنید.
  2. از Kubeflow Pipeline SDK برای ایجاد و کامپایل خطوط لوله Kubeflow با استفاده از کد پایتون استفاده کنید. کامپایل خط لوله تابع پایتون را به یک منبع گردش کار تبدیل می کند که یک فرمت YAML سازگار با Argo است.
  3. از مشتری Kubeflow Pipelines SDK برای فراخوانی نقطه پایانی سرویس خط لوله برای اجرای خط لوله استفاده کنید.
  4. خط لوله متغیرهای زمان اجرا شرطی را ارزیابی می کند و بین SageMaker یا Kubernetes به عنوان محیط اجرای هدف تصمیم می گیرد.
  5. از مولفه Kubeflow PyTorch Launcher برای اجرای آموزش توزیع شده در محیط بومی Kubernetes استفاده کنید یا از مؤلفه SageMaker برای ارسال آموزش در پلت فرم مدیریت شده SageMaker استفاده کنید.

شکل زیر مؤلفه‌های Kubeflow Pipelines را نشان می‌دهد که در معماری نقش دارند که به ما انعطاف‌پذیری می‌دهد تا بین محیط‌های توزیع‌شده Kubernetes یا SageMaker انتخاب کنیم.

اجزای خط لوله Kubeflow

از Case Workflow استفاده کنید

ما از رویکرد گام به گام زیر برای نصب و اجرای Use case برای آموزش توزیع شده با استفاده از Amazon EKS و SageMaker با استفاده از Kubeflow در AWS استفاده می کنیم.

با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.

پیش نیازها

برای این راهنما، شما باید پیش نیازهای زیر را داشته باشید:

  • An حساب AWS.
  • ماشینی با داکر و رابط خط فرمان AWS (AWS CLI) نصب شده است.
  • در صورت تمایل می توانید استفاده کنید AWS Cloud9یک محیط توسعه یکپارچه مبتنی بر ابر (IDE) که امکان تکمیل تمام کارها را از مرورگر وب شما فراهم می کند. برای دستورالعمل های راه اندازی، مراجعه کنید راه اندازی Cloud9 IDE. از محیط Cloud9 خود، علامت مثبت را انتخاب کنید و ترمینال جدید را باز کنید.
  • نقش ایجاد کنید با نام sagemakerrole. سیاست های مدیریت شده را اضافه کنید AmazonSageMakerFullAccess و AmazonS3FullAccess برای دسترسی SageMaker به سطل های S3. این نقش توسط کار SageMaker ارسال شده به عنوان بخشی از مرحله Kubeflow Pipelines استفاده می شود.
  • مطمئن شوید که حساب شما دارای محدودیت نوع منبع آموزشی SageMaker است ml.p3.2xlarge با استفاده به 2 افزایش یافت کنسول سهمیه خدمات

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

شما می توانید از چندین روش مختلف برای ساخت یک خوشه Kubernetes و استقرار Kubeflow استفاده کنید. در این پست، ما بر روی رویکردی تمرکز می‌کنیم که معتقدیم فرآیند را ساده می‌کند. ابتدا یک خوشه EKS ایجاد می کنیم، سپس Kubeflow را روی AWS v1.5 روی آن مستقر می کنیم. برای هر یک از این وظایف، ما از یک پروژه متن باز متناظر استفاده می کنیم که از اصول آن پیروی می کند چارچوب را انجام دهید. به جای نصب مجموعه ای از پیش نیازها برای هر کار، کانتینرهای Docker را می سازیم که همه ابزارهای لازم را دارند و وظایف را از داخل کانتینرها انجام می دهند.

ما در این پست از Do Framework استفاده می کنیم که استقرار Kubeflow را با Amazon EFS به عنوان یک افزونه خودکار می کند. برای اطلاع از گزینه‌های رسمی Kubeflow در مورد استقرار AWS برای استقرار تولید، مراجعه کنید گسترش.

دایرکتوری فعلی و AWS CLI را پیکربندی کنید

ما یک دایرکتوری کاری را پیکربندی می کنیم تا بتوانیم به آن به عنوان نقطه شروع مراحل زیر اشاره کنیم:

export working_dir=$PWD

ما همچنین یک نمایه 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

1.1 یک خوشه EKS ایجاد کنید

اگر از قبل یک خوشه EKS در دسترس دارید، می توانید به بخش بعدی بروید. برای این پست از پروژه aws-do-eks برای ایجاد خوشه ما

  1. ابتدا پروژه را در پوشه کاری خود کلون کنید
    cd ${working_dir}
    git clone https://github.com/aws-samples/aws-do-eks
    cd aws-do-eks/

  2. سپس بسازید و اجرا کنید aws-do-eks ظرف:
    ./build.sh
    ./run.sh

    La build.sh اسکریپت یک تصویر ظرف Docker ایجاد می کند که دارای تمام ابزارها و اسکریپت های لازم برای تهیه و عملکرد خوشه های EKS است. این run.sh اسکریپت یک ظرف را با استفاده از تصویر Docker ایجاد شده راه اندازی می کند و آن را حفظ می کند، بنابراین ما می توانیم از آن به عنوان محیط مدیریت EKS خود استفاده کنیم. برای دیدن وضعیت خود aws-do-eks ظرف، شما می توانید اجرا کنید ./status.sh. اگر کانتینر در وضعیت Exited است، می توانید از آن استفاده کنید ./start.sh اسکریپت برای بالا آوردن کانتینر یا راه اندازی مجدد کانتینر، می توانید اجرا کنید ./stop.sh و پس از آن ./run.sh.

  3. یک پوسته در حال اجرا باز کنید aws-do-eks ظرف:
  4. برای بررسی پیکربندی کلاستر EKS برای استقرار KubeFlow، دستور زیر را اجرا کنید:
    vi ./eks-kubeflow.yaml

    به طور پیش فرض، این پیکربندی یک خوشه به نام ایجاد می کند eks-kubeflow در us-west-2 منطقه با شش گره m5.xlarge. همچنین، رمزگذاری حجم های EBS به طور پیش فرض فعال نیست. می توانید با اضافه کردن آن را فعال کنید "volumeEncrypted: true" به گروه گره و با استفاده از کلید پیش فرض رمزگذاری می شود. در صورت نیاز تنظیمات تنظیمات دیگر را تغییر دهید.

  5. برای ایجاد کلاستر، دستور زیر را اجرا کنید:
    export AWS_PROFILE=kubeflow
    eksctl create cluster -f ./eks-kubeflow.yaml

    فرآیند تهیه خوشه ممکن است تا 30 دقیقه طول بکشد.

  6. برای اطمینان از اینکه خوشه با موفقیت ایجاد شده است، دستور زیر را اجرا کنید:
    kubectl get nodes

    خروجی دستور قبلی برای خوشه ای که با موفقیت ایجاد شد شبیه کد زیر است:

    root@cdf4ecbebf62:/eks# kubectl get nodes
    NAME                                           STATUS   ROLES    AGE   VERSION
    ip-192-168-0-166.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-13-28.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-45-240.us-west-2.compute.internal   Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-63-84.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-75-56.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-85-226.us-west-2.compute.internal   Ready       23m   v1.21.14-eks-ba74326

یک جلد EFS برای کار آموزشی SageMaker ایجاد کنید

در این مورد، با آموزش مدل‌های یادگیری عمیق از داده‌هایی که قبلاً در Amazon EFS ذخیره شده‌اند، به کار آموزش SageMaker سرعت می‌بخشید. این انتخاب این مزیت را دارد که مشاغل آموزشی شما را مستقیماً از داده‌های Amazon EFS بدون نیاز به جابجایی داده راه‌اندازی می‌کند و در نتیجه زمان شروع آموزش سریع‌تر می‌شود.

ما یک حجم EFS ایجاد می کنیم و درایور EFS Container Storage Interface (CSI) را اجرا می کنیم. این کار توسط یک اسکریپت استقرار واقع در آن انجام می شود /eks/deployment/csi/efs در داخل aws-do-eks مخزن

این اسکریپت فرض می کند که شما یک کلاستر EKS در حساب خود دارید. تنظیم CLUSTER_NAME= در صورتی که بیش از یک خوشه EKS دارید.

cd /eks/deployment/csi/efs
./deploy.sh

این اسکریپت یک حجم EFS را فراهم می کند و اهداف mount را برای زیرشبکه های VPC کلاستر ایجاد می کند. سپس درایور EFS CSI را مستقر کرده و آن را ایجاد می کند efs-sc کلاس ذخیره سازی و efs-pv حجم پایدار در خوشه EKS.

پس از اتمام موفقیت آمیز اسکریپت، باید خروجی زیر را مشاهده کنید:

Generating efs-sc.yaml ...

Applying efs-sc.yaml ...
storageclass.storage.k8s.io/efs-sc created
NAME            PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
efs-sc          efs.csi.aws.com         Delete          Immediate              false                  1s
gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  36m

Generating efs-pv.yaml ...
Applying efs-pv.yaml ...
persistentvolume/efs-pv created
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
efs-pv   5Gi        RWX            Retain           Available           efs-sc                  10s

Done ...

یک نقطه پایانی Amazon S3 VPC ایجاد کنید

شما از یک VPC خصوصی استفاده می کنید که شغل آموزشی SageMaker و سیستم فایل EFS شما به آن دسترسی دارند. برای دسترسی خوشه آموزشی SageMaker به سطل های S3 از VPC خصوصی خود، یک نقطه پایانی VPC ایجاد می کنید:

cd /eks/vpc 
export CLUSTER_NAME= 
export REGION= 
./vpc-endpoint-create.sh

اکنون می توانید از آن خارج شوید aws-do-eks پوسته ظرف و به بخش بعدی بروید:

exit

root@cdf4ecbebf62:/eks/deployment/csi/efs# exit
exit
TeamRole:~/environment/aws-do-eks (main) $

1.2 استقرار Kubeflow در AWS در Amazon EKS

برای استقرار Kubeflow در Amazon EKS، از پروژه aws-do-kubeflow.

  1. با استفاده از دستورات زیر مخزن را کلون کنید:
    cd ${working_dir}
    git clone https://github.com/aws-samples/aws-do-kubeflow
    cd aws-do-kubeflow

  2. سپس پروژه را پیکربندی کنید:
    ./config.sh

    این اسکریپت فایل پیکربندی پروژه را در یک ویرایشگر متن باز می کند. برای آن مهم است AWS_REGION برای تنظیم به منطقه ای که خوشه شما در آن است، و همچنین AWS_CLUSTER_NAME برای مطابقت با نام خوشه ای که قبلا ایجاد کرده اید. به‌طور پیش‌فرض، پیکربندی شما از قبل به درستی تنظیم شده است، بنابراین اگر نیازی به ایجاد هیچ تغییری ندارید، فقط ویرایشگر را ببندید.

    ./build.sh
    ./run.sh
    ./exec.sh

    La build.sh اسکریپت یک تصویر کانتینر Docker ایجاد می‌کند که دارای تمام ابزارهای لازم برای استقرار و مدیریت Kubeflow در یک خوشه Kubernetes موجود است. این run.sh اسکریپت یک کانتینر را با استفاده از تصویر Docker شروع می‌کند و اسکریپت exec.sh یک پوسته فرمان را در ظرف باز می‌کند که می‌توانیم از آن به عنوان محیط مدیریت Kubeflow استفاده کنیم. می توانید استفاده کنید ./status.sh اسکریپت برای دیدن اینکه آیا aws-do-kubeflow کانتینر آماده و راه اندازی است و ./stop.sh و ./run.sh اسکریپت برای راه اندازی مجدد آن در صورت نیاز.

  3. بعد از اینکه یک پوسته در آن باز شد aws-do-eks ظرف، می توانید بررسی کنید که زمینه خوشه پیکربندی شده مطابق انتظار است:
    root@ip-172-31-43-155:/kubeflow# kubectx
    kubeflow@eks-kubeflow.us-west-2.eksctl.io

  4. برای استقرار Kubeflow در خوشه EKS، اجرا کنید deploy.sh متن:
    ./kubeflow-deploy.sh

    زمانی که همه پادها در فضای نام kubeflow وارد حالت Running شوند، استقرار موفقیت آمیز است. یک خروجی معمولی شبیه کد زیر است:

    Waiting for all Kubeflow pods to start Running ...
    
    Waiting for all Kubeflow pods to start Running ...
    
    Restarting central dashboard ...
    pod "centraldashboard-79f489b55-vr6lp" deleted
    /kubeflow/deploy/distro/aws/kubeflow-manifests /kubeflow/deploy/distro/aws
    /kubeflow/deploy/distro/aws
    
    Kubeflow deployment succeeded
    Granting cluster access to kubeflow profile user ...
    Argument not provided, assuming default user namespace kubeflow-user-example-com ...
    clusterrolebinding.rbac.authorization.k8s.io/kubeflow-user-example-com-cluster-admin-binding created
    Setting up access to Kubeflow Pipelines ...
    Argument not provided, assuming default user namespace kubeflow-user-example-com ...
    
    Creating pod-default for namespace kubeflow-user-example-com ...
    poddefault.kubeflow.org/access-ml-pipeline created

  5. برای نظارت بر وضعیت پادهای KubeFlow، در یک پنجره جداگانه، می توانید از دستور زیر استفاده کنید:
    watch kubectl -n kubeflow get pods

  6. رسانه ها و مطبوعات Ctrl + C وقتی همه پادها در حال اجرا هستند، داشبورد Kubeflow را در خارج از کلاستر با اجرای دستور زیر در معرض دید قرار دهید:
    ./kubeflow-expose.sh

شما باید خروجی شبیه کد زیر را ببینید:

root@ip-172-31-43-155:/kubeflow# ./kubeflow-expose.sh
root@ip-172-31-43-155:/kubeflow# Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080

این پورت فرمان، سرویس دروازه ورودی Istio را از خوشه به پورت محلی 8080 شما منتقل می کند. برای دسترسی به داشبورد Kubeflow، به سایت مراجعه کنید. http://localhost:8080 و با استفاده از اعتبار کاربری پیش فرض وارد شوید (user@example.com/12341234). اگر در حال اجرا هستید aws-do-kubeflow ظرف در AWS Cloud9، سپس می توانید انتخاب کنید پیش نمایش، پس از آن را انتخاب کنید پیش نمایش برنامه در حال اجرا. اگر روی Docker Desktop اجرا می‌کنید، ممکن است لازم باشد آن را اجرا کنید ./kubeflow-expose.sh اسکریپت خارج از aws-do-kubeflow مخزن

با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.

2. Kubeflow را در محیط AWS راه اندازی کنید

برای راه اندازی Kubeflow خود در محیط AWS، یک حجم EFS و یک نوت بوک Jupyter ایجاد می کنیم.

2.1 یک حجم EFS ایجاد کنید

برای ایجاد یک حجم EFS، مراحل زیر را انجام دهید:

  • در داشبورد Kubeflow، را انتخاب کنید جلد در صفحه ناوبری
  • انتخاب کرد حجم جدید.
  • برای نام، وارد efs-sc-claim.
  • برای اندازه حجم، وارد 10.
  • برای کلاس ذخیره سازی، انتخاب کنید efs-sc.
  • برای حالت دسترسی، انتخاب کنید ReadWriteOnce.
  • را انتخاب کنید ساختن.

با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.

2.2 یک نوت بوک Jupyter ایجاد کنید

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

  • در داشبورد Kubeflow، را انتخاب کنید نوت بوک در صفحه ناوبری
  • را انتخاب کنید نوت بوک جدید.
  • برای نام، وارد aws-hybrid-nb.
  • برای تصویر Jupyter Docket، تصویر را انتخاب کنید c9e4w0g3/notebook-servers/jupyter-pytorch:1.11.0-cpu-py38-ubuntu20.04-e3-v1.1 (جدیدترین تصویر DLC jupyter-pytorch).
  • برای پردازنده، وارد 1.
  • برای حافظه، وارد 5.
  • برای GPU ها، ترک به عنوان هیچ.
  • هیچ تغییری در آن ایجاد نکنید حجم فضای کاری بخش.
  • در حجم داده ها بخش، را انتخاب کنید حجم موجود را ضمیمه کنید و بخش حجم موجود را گسترش دهید
  • برای نام، انتخاب کنید efs-sc-claim.
  • برای مسیر کوه، وارد /home/jovyan/efs-sc-claim.
    این ولوم EFS را روی غلاف نوت بوک Jupyter شما نصب می کند و می توانید پوشه را ببینید efs-sc-claim در رابط آزمایشگاه ژوپیتر شما. شما مجموعه داده آموزشی و کد آموزشی را در این پوشه ذخیره می کنید تا کلاسترهای آموزشی بتوانند بدون نیاز به بازسازی تصاویر ظرف برای آزمایش به آن دسترسی داشته باشند.با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.
  • انتخاب کنید اجازه دسترسی به خطوط لوله Kubeflow را بدهید در بخش پیکربندی
  • را انتخاب کنید راه اندازی.
    بررسی کنید که نوت بوک شما با موفقیت ایجاد شده است (ممکن است چند دقیقه طول بکشد).با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.
  • بر نوت بوک صفحه ، انتخاب کنید اتصال برای ورود به محیط JupyterLab.
  • بر رفتن منو ، انتخاب کنید یک مخزن را شبیه سازی کنید.
  • برای یک مخزن را شبیه سازی کنید، وارد https://github.com/aws-samples/aws-do-kubeflow.
    با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.

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

پس از راه اندازی نوت بوک Jupyter، می توانید کل نسخه نمایشی را با استفاده از مراحل سطح بالای زیر از پوشه اجرا کنید. aws-do-kubeflow/workshop در مخزن کلون شده:

  • اسکریپت آموزشی PyTorch Distributed Data Parallel (DDP): به اسکریپت آموزشی PyTorch DDP cifar10-distributed-gpu-final.py مراجعه کنید، که شامل یک نمونه شبکه عصبی کانولوشنال و منطق برای توزیع آموزش بر روی یک CPU چند گره و کلاستر GPU است. (برای جزئیات به 3.1 مراجعه کنید)
  • نصب کتابخانه ها: نوت بوک را اجرا کنید 0_initialize_dependencies.ipynb برای مقداردهی اولیه همه وابستگی ها (برای جزئیات به 3.2 مراجعه کنید)
  • آموزش کار توزیع شده PyTorch را در Kubernetes اجرا کنید: نوت بوک را اجرا کنید 1_submit_pytorchdist_k8s.ipynb برای ایجاد و ارسال آموزش توزیع شده بر روی یک کانتینر اصلی و دو کانتینر کارگر با استفاده از منبع سفارشی Kubernetes فایل PyTorchJob YAML با استفاده از کد پایتون. (برای جزئیات به 3.3 مراجعه کنید)
  • یک خط لوله ترکیبی Kubeflow ایجاد کنید: نوت بوک را اجرا کنید 2_create_pipeline_k8s_sagemaker.ipynb برای ایجاد خط لوله ترکیبی Kubeflow که آموزش های توزیع شده را در SageMaker یا Amazon EKS با استفاده از متغیر زمان اجرا اجرا می کند. training_runtime. (برای جزئیات به 3.4 مراجعه کنید)

مطمئن شوید که نوت بوک را اجرا کرده اید 1_submit_pytorchdist_k8s.ipynb قبل از شروع نوت بوک 2_create_pipeline_k8s_sagemaker.ipynb.

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

3.1 اسکریپت آموزشی PyTorch Distributed Data Parallel (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

ما از مشعل DataLoader استفاده می کنیم که مجموعه داده و را ترکیب می کند DistributedSampler (زیر مجموعه ای از داده ها را به صورت توزیع شده با استفاده از بارگیری می کند torch.nn.parallel.DistributedDataParallel) و یک تکرار کننده تک فرآیندی یا چند فرآیندی روی داده ها ارائه می دهد:

# Define data loader for training dataset
def _get_train_data_loader(batch_size, training_dir, is_distributed):
logger.info("Get train data loader")

train_set = torchvision.datasets.CIFAR10(root=training_dir,
train=True,
download=False,
transform=_get_transforms())

train_sampler = (
torch.utils.data.distributed.DistributedSampler(train_set) if is_distributed else None
)

return torch.utils.data.DataLoader(
train_set,
batch_size=batch_size,
shuffle=train_sampler is None,
sampler=train_sampler)
...

اگر کلاستر آموزشی دارای پردازنده گرافیکی باشد، اسکریپت آموزش را روی دستگاه های 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)

...

3.2 کتابخانه ها را نصب کنید

شما تمام کتابخانه های لازم را برای اجرای مثال آموزشی توزیع شده PyTorch نصب خواهید کرد. این شامل Kubeflow Pipelines SDK، Training Operator Python SDK، کلاینت پایتون برای Kubernetes و Amazon SageMaker Python SDK است.

#Please run the below commands to install necessary libraries

!pip install kfp==1.8.4

!pip install kubeflow-training

!pip install kubernetes

!pip install sagemaker

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

دفترچه یادداشت 1_submit_pytorchdist_k8s.ipynb فایل YAML PyTorchJob منبع سفارشی Kubernetes را با استفاده از آموزش Kubeflow و کلاینت Kubernetes Python SDK ایجاد می کند. در ادامه چند قطعه مهم از این دفترچه آورده شده است.

ما PyTorchJob YAML را با کانتینرهای اولیه و worker همانطور که در کد زیر نشان داده شده است ایجاد می کنیم:

# Define PyTorchJob custom resource manifest
pytorchjob = V1PyTorchJob(
api_version="kubeflow.org/v1",
kind="PyTorchJob",
metadata=V1ObjectMeta(name=pytorch_distributed_jobname,namespace=user_namespace),
spec=V1PyTorchJobSpec(
run_policy=V1RunPolicy(clean_pod_policy="None"),
pytorch_replica_specs={"Master": master,
"Worker": worker}
)
)

این با استفاده از هواپیمای کنترل Kubernetes ارسال می شود PyTorchJobClient:

# Creates and Submits PyTorchJob custom resource file to Kubernetes
pytorchjob_client = PyTorchJobClient()

pytorch_job_manifest=pytorchjob_client.create(pytorchjob):

گزارش های آموزشی Kubernetes را مشاهده کنید

شما می توانید گزارش های آموزشی را از همان نوت بوک Jupyter با استفاده از کد پایتون یا از پوسته مشتری Kubernetes مشاهده کنید.

3.4 یک خط لوله ترکیبی Kubeflow ایجاد کنید

دفترچه یادداشت 2_create_pipeline_k8s_sagemaker.ipynb یک خط لوله ترکیبی Kubeflow بر اساس متغیر زمان اجرا شرطی ایجاد می کند training_runtime، همانطور که در کد زیر نشان داده شده است. نوت بوک از Kubeflow Pipelines SDK و مجموعه ای از بسته های پایتون را برای تعیین و اجرای خطوط لوله گردش کار ML ارائه می کند. به عنوان بخشی از این SDK، ما از بسته های زیر استفاده می کنیم:

  • دکوراتور بسته زبان مخصوص دامنه (DSL). dsl.pipeline، که توابع پایتون را برای بازگشت خط لوله تزئین می کند
  • La dsl.Condition بسته، که نشان‌دهنده گروهی از عملیات است که فقط زمانی اجرا می‌شوند که یک شرط خاص مانند بررسی کردن انجام شود training_runtime ارزش به عنوان sagemaker or kubernetes

کد زیر را ببینید:

# Define your training runtime value with either 'sagemaker' or 'kubernetes'
training_runtime='sagemaker'

# Create Hybrid Pipeline using Kubeflow PyTorch Training Operators and Amazon SageMaker Service
@dsl.pipeline(name="PyTorch Training pipeline", description="Sample training job test")
def pytorch_cnn_pipeline():

# Pipeline Step 1: to evaluate the condition. You can enter any logic here. For demonstration we are checking if GPU is needed for training
condition_result = check_condition_op(training_runtime)

# Pipeline Step 2: to run training on Kuberentes using PyTorch Training Operators. This will be executed if gpus are not needed
with dsl.Condition(condition_result.output == 'kubernetes', name="PyTorch_Comp"):
train_task = pytorch_job_op(
name=training_job_name,
namespace=user_namespace,
master_spec=json.dumps(master_spec_loaded), # Please refer file at pipeline_yaml_specifications/pipeline_master_spec.yml
worker_spec=json.dumps(worker_spec_loaded), # Please refer file at pipeline_yaml_specifications/pipeline_worker_spec.yml
delete_after_done=False
).after(condition_result)

# Pipeline Step 3: to run training on SageMaker using SageMaker Components for Pipeline. This will be executed if gpus are needed
with dsl.Condition(condition_result.output == 'sagemaker', name="SageMaker_Comp"):
training = sagemaker_train_op(
region=region,
image=train_image,
job_name=training_job_name,
training_input_mode=training_input_mode,
hyperparameters='{ 
"backend": "'+str(pytorch_backend)+'", 
"batch-size": "64", 
"epochs": "3", 
"lr": "'+str(learning_rate)+'", 
"model-type": "custom", 
"sagemaker_container_log_level": "20", 
"sagemaker_program": "cifar10-distributed-gpu-final.py", 
"sagemaker_region": "us-west-2", 
"sagemaker_submit_directory": "'+source_s3+'" 
}',
channels=channels,
instance_type=instance_type,
instance_count=instance_count,
volume_size=volume_size,
max_run_time=max_run_time,
model_artifact_path=f's3://{bucket_name}/jobs',
network_isolation=network_isolation,
traffic_encryption=traffic_encryption,
role=role,
vpc_subnets=subnet_id,
vpc_security_group_ids=security_group_id
).after(condition_result)

ما آموزش توزیع شده SageMaker را با استفاده از دو نمونه ml.p3.2xlarge پیکربندی می کنیم.

پس از تعریف خط لوله، می توانید خط لوله را با مشخصات Argo YAML با استفاده از Kubeflow Pipelines SDK کامپایل کنید. kfp.compiler بسته بندی شما می توانید این خط لوله را با استفاده از سرویس گیرنده Kubeflow Pipeline 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="kubeflow")

# 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.

اگر شما یک sagemaker import خطا، !pip install sagemaker را اجرا کنید و هسته را مجددا راه اندازی کنید (در هسته منو ، انتخاب کنید کرنل را مجددا راه اندازی کنید).

انتخاب جزئیات را اجرا کنید پیوند زیر آخرین سلول برای مشاهده خط لوله Kubeflow.

مرحله ایجاد خط لوله را با training_runtime='kubernetes' برای آزمایش خط لوله اجرا شده در محیط Kubernetes. این training_runtime متغیر همچنین می تواند در یک سناریوی تولید در خط لوله CI/CD شما ارسال شود.

گزارش‌های اجرای خط لوله Kubeflow را برای مؤلفه SageMaker مشاهده کنید

تصویر زیر جزئیات خط لوله ما را برای جزء SageMaker نشان می دهد.

با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.

مرحله شغلی آموزشی را انتخاب کنید و بر روی سیاههها برگه، پیوند گزارش‌های CloudWatch را برای دسترسی به گزارش‌های SageMaker انتخاب کنید.

با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.

تصویر زیر گزارش‌های CloudWatch را برای هر یک از دو نمونه ml.p3.2xlarge نشان می‌دهد.

با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.

هر یک از گروه ها را برای دیدن گزارش ها انتخاب کنید.

با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.

گزارش‌های اجرای خط لوله Kubeflow را برای مؤلفه Kubeflow PyTorchJob Launcher مشاهده کنید

تصویر زیر جزئیات خط لوله را برای جزء Kubeflow ما نشان می دهد.

با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.

با استفاده از دستورات زیر را اجرا کنید Kubectl در پوسته مشتری Kubernetes خود که به خوشه Kubernetes متصل است تا گزارش‌ها را مشاهده کند (جایگزین فضای نام و نام‌های غلاف خود شوید):

kubectl get pods -n kubeflow-user-example-com
kubectl logs  -n kubeflow-user-example-com -f

4.1 پاکسازی

برای پاکسازی تمام منابعی که در حساب ایجاد کرده ایم، باید آنها را به ترتیب معکوس حذف کنیم.

  1. نصب Kubeflow را با اجرا حذف کنید ./kubeflow-remove.sh در aws-do-kubeflow ظرف اولین مجموعه از دستورات اختیاری هستند و می توانند در صورتی که قبلاً پوسته دستوری در خود ندارید از آنها استفاده کنید aws-do-kubeflow ظرف باز است
    cd aws-do-kubeflow
    ./status.sh
    ./start.sh
    ./exec.sh
    
    ./kubeflow-remove.sh

  2. از aws-do-eks پوشه ظرف، حجم EFS را حذف کنید. اولین مجموعه از دستورات اختیاری است و می تواند در صورتی که قبلاً پوسته دستوری در خود ندارید استفاده شود aws-do-eks ظرف باز است
    cd aws-do-eks
    ./status.sh
    ./start.sh
    ./exec.sh
    
    cd /eks/deployment/csi/efs
    ./delete.sh
    ./efs-delete.sh

    حذف Amazon EFS برای آزاد کردن رابط شبکه مرتبط با VPC که برای خوشه خود ایجاد کرده‌ایم ضروری است. توجه داشته باشید که حذف حجم EFS هر داده ای را که روی آن ذخیره می شود از بین می برد.

  3. از aws-do-eks ظرف، اجرا کنید eks-delete.sh اسکریپت برای حذف خوشه و سایر منابع مرتبط با آن، از جمله VPC:
    cd /eks
    ./eks-delete.sh

خلاصه

در این پست، برخی از چالش‌های معمول آموزش مدل توزیع‌شده و گردش‌های کاری ML را مورد بحث قرار دادیم. ما یک نمای کلی از Kubeflow در توزیع AWS ارائه کردیم و دو پروژه منبع باز را به اشتراک گذاشتیم (aws-do-eks و aws-do-kubeflow) که تهیه زیرساخت و استقرار Kubeflow را بر روی آن ساده می کند. در نهایت، ما یک معماری ترکیبی را توصیف و نشان دادیم که بارهای کاری را قادر می‌سازد به طور یکپارچه بین اجرا در یک Kubernetes خود مدیریت شده و زیرساخت SageMaker کاملاً مدیریت شده منتقل شوند. ما شما را تشویق می کنیم که از این معماری ترکیبی برای موارد استفاده خود استفاده کنید.

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

با تشکر ویژه از Sree Arasanagatta (مدیر توسعه نرم افزار AWS ML) و Suraj Kota (مهندس توسعه نرم افزار) برای حمایتشان از راه اندازی این پست.


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

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

با استفاده از Kubeflow در AWS و Amazon SageMaker PlatoBlockchain Data Intelligence، معماری‌های آموزشی توزیع‌شده انعطاف‌پذیر و مقیاس‌پذیر بسازید. جستجوی عمودی Ai.گوتام کومار یک مهندس نرم افزار با AWS AI Deep Learning است. او AWS Deep Learning Containers و AWS Deep Learning AMI را توسعه داده است. او علاقه زیادی به ساخت ابزار و سیستم برای هوش مصنوعی دارد. در اوقات فراغت از دوچرخه سواری و کتاب خواندن لذت می برد.

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

تمبر زمان:

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