1. مقدمه
Kubeflow یک ابزار یادگیری ماشین برای Kubernetes است. این پروژه به ایجاد استقرار گردشهای کاری یادگیری ماشین (ML) در Kubernetes ساده، قابل حمل و مقیاسپذیر اختصاص دارد. هدف، ارائه راهی ساده برای استقرار بهترین سیستمهای منبع باز برای ML در زیرساختهای متنوع است. |
استقرار Kubeflow چگونه به نظر می رسد؟
استقرار Kubeflow عبارت است از:
- قابل حمل - روی هر خوشه Kubernetes کار می کند، چه در Google Cloud Platform (GCP)، چه در محل یا در بین ارائه دهندگان.
- مقیاس پذیر - می تواند از منابع نوسانی استفاده کند و فقط با تعداد منابع تخصیص یافته به خوشه Kubernetes محدود می شود.
- Composable - با کارگران خدماتی برای کار آفلاین یا در شبکه های با کیفیت پایین بهبود یافته است.
این وسیله ای است برای سازماندهی میکروسرویس های با اتصال آزاد به عنوان یک واحد و استقرار آنها در مکان های مختلف، چه لپ تاپ یا فضای ابری.
این کد لبه شما را در ایجاد استقرار Kubeflow خود با استفاده از MiniKF و اجرای یک گردش کاری Kubeflow Pipelines از داخل یک نوت بوک Jupyter راهنمایی می کند.
چیزی که خواهی ساخت
در این کد لبه، شما بدون استفاده از دستورات CLI یا SDK، یک خط لوله علوم داده پیچیده با خط لوله Kubeflow ایجاد خواهید کرد. شما نیازی به داشتن دانش Kubernetes یا Docker ندارید. پس از تکمیل، زیرساخت شما شامل موارد زیر خواهد بود:
- یک ماشین مجازی MiniKF (Mini Kubeflow) که به طور خودکار نصب می کند:
- Kubernetes (با استفاده از Minikube)
- Kubeflow
- Kale ، ابزاری برای تبدیل نوتبوکهای Jupyter با هدف عمومی به گردشهای کاری Kubeflow Pipelines ( GitHub )
- Arrikto Rok برای نسخه سازی و تکرارپذیری داده ها
چیزی که یاد خواهید گرفت
- نحوه نصب Kubeflow با MiniKF
- چگونه نوت بوک های Jupyter خود را بدون استفاده از دستورات CLI یا SDK به خط لوله Kubeflow تبدیل کنید
- نحوه اجرای Kubeflow Pipelines از داخل یک نوت بوک با کلیک یک دکمه
- چگونه به طور خودکار داده های خود را در یک نوت بوک و در هر مرحله خط لوله نسخه کنید
آنچه شما نیاز دارید
- یک پروژه GCP فعال که برای آن مجوزهای مالک دارید
این یک کد آزمایشگاه پیشرفته است که بر روی Kubeflow متمرکز شده است. برای پیشینه بیشتر و معرفی پلتفرم، به مستندات مقدماتی Kubeflow مراجعه کنید. مفاهیم و بلوکهای کد غیرمرتبط محو میشوند و برای شما فراهم میشود تا به سادگی کپی و جایگذاری کنید.
2. محیط را تنظیم کنید
شناسه پروژه GCP و نام خوشه خود را تنظیم کنید
برای یافتن شناسه پروژه خود، از پانل صفحه اصلی کنسول GCP که در منوی همبرگر در بالا سمت چپ یافت می شود، دیدن کنید. اگر صفحه خالی است، روی Yes در اعلان کلیک کنید تا داشبورد ایجاد شود.
اگر پروژه از قبل انتخاب نشده است، روی Select a project کلیک کنید:
و پروژه خود را انتخاب کنید. شما فقط باید یکی داشته باشید:
3. MiniKF را نصب کنید
یک نمونه محاسباتی ایجاد کنید
در بازار GCP، "MiniKF" را جستجو کنید.
ماشین مجازی MiniKF توسط Arrikto را انتخاب کنید.
روی دکمه Launch on Compute Engine کلیک کنید و پروژه خود را انتخاب کنید.
در پنجره Configure & Deploy ، یک نام برای نمونه MiniKF خود انتخاب کنید و گزینه های پیش فرض را رها کنید. سپس روی دکمه Deploy کلیک کنید.
منتظر بمانید تا نمونه MiniKF Compute بوت شود.
وارد MiniKF شوید
هنگامی که MiniKF VM روشن شد، با کلیک بر روی دکمه SSH متصل شوید و وارد شوید. دستورالعمل های روی صفحه را دنبال کنید تا دستور minikf
را اجرا کنید، که استقرار Minikube، Kubeflow و Rok را آغاز می کند. چند دقیقه طول می کشد تا تکمیل شود.
وارد Kubeflow شوید
پس از اتمام نصب و آماده شدن همه پادها، از داشبورد MiniKF دیدن کنید. با استفاده از نام کاربری و رمز عبور MiniKF وارد Kubeflow شوید.
کاربران کروم این صفحه را خواهند دید:
کاربران فایرفاکس این صفحه را خواهند دید:
کاربران سافاری این صفحه را مشاهده خواهند کرد:
وارد Rok شوید
پس از ورود به Kubeflow، منوی سمت چپ را با کلیک بر روی نماد همبرگر باز کنید. به فروشگاه اسنپ شات بروید و با استفاده از نام کاربری و رمز عبور MiniKF وارد Rok شوید.
تبریک می گویم! شما با موفقیت MiniKF را در GCP مستقر کردید! اکنون می توانید Notebook ایجاد کنید، کد ML خود را بنویسید و Kubeflow Pipelines را اجرا کنید. از Rok برای نسخهسازی و تکرارپذیری دادهها استفاده کنید.
4. یک Pipeline را از داخل نوت بوک خود اجرا کنید
در طول این بخش، شما نمونه تایتانیک را اجرا خواهید کرد، یک مسابقه Kaggle که پیش بینی می کند کدام مسافران از غرق شدن کشتی تایتانیک جان سالم به در برده اند.
یک سرور نوت بوک ایجاد کنید
به پیوند سرورهای نوت بوک در داشبورد مرکزی Kubeflow بروید.
روی سرور جدید کلیک کنید.
یک نام برای سرور نوت بوک خود مشخص کنید.
مطمئن شوید که این تصویر را انتخاب کرده اید:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
یک حجم داده جدید و خالی به اندازه 5 گیگابایت اضافه کنید و نام آن را داده بگذارید.
برای ایجاد سرور نوت بوک روی Launch کلیک کنید.
هنگامی که سرور نوت بوک در دسترس است، برای اتصال به آن روی Connect کلیک کنید.
داده ها و نوت بوک را دانلود کنید
یک تب جدید با صفحه فرود JupyterLab باز می شود. یک ترمینال جدید در JupyterLab ایجاد کنید.
در پنجره ترمینال، این دستورات را اجرا کنید تا به پوشه داده بروید و نوت بوک و داده هایی را که برای بقیه آزمایشگاه استفاده خواهید کرد دانلود کنید.
cd data/ git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples
این مخزن شامل مجموعه ای از نمونه های مدیریت شده با داده ها و نوت بوک های حاشیه نویسی شده است. به پوشه data/examples/titanic-ml-dataset/
در نوار کناری بروید و notebook titanic_dataset_ml.ipynb
را باز کنید.
کد ML چالش تایتانیک را کاوش کنید
نوت بوک را مرحله به مرحله اجرا کنید. توجه داشته باشید که کد خراب می شود زیرا یک کتابخانه وجود ندارد.
به ترمینال برگردید و کتابخانه گم شده را نصب کنید.
pip3 install --user seaborn
با کلیک بر روی نماد Refresh ، هسته نوت بوک را مجددا راه اندازی کنید.
سلول را دوباره با کتابخانه های صحیح نصب شده اجرا کنید و موفقیت آن را مشاهده کنید.
نوت بوک خود را به خط لوله Kubeflow تبدیل کنید
Kale را با کلیک بر روی نماد Kubeflow در سمت چپ فعال کنید.
وابستگی های هر سلول را کاوش کنید. ببینید چگونه چندین سلول می توانند بخشی از یک مرحله خط لوله باشند و چگونه یک مرحله خط لوله ممکن است به مراحل قبلی بستگی داشته باشد.
روی دکمه Compile and Run کلیک کنید.
پیشرفت عکس فوری را تماشا کنید.
پیشرفت Pipeline Run را تماشا کنید.
برای رفتن به رابط کاربری Kubeflow Pipelines و مشاهده اجرا، روی پیوند کلیک کنید.
صبر کنید تا کامل شود.
تبریک می گویم! شما فقط یک خط لوله Kubeflow را از نوت بوک خود شروع کردید!
5. تکرارپذیری با حجم عکس فوری
نتایج را بررسی کنید
به گزارشهای مربوط به نتایج مرحله دوم تا آخر خط لوله نگاهی بیندازید. توجه داشته باشید که همه پیش بینی کننده ها امتیاز 100٪ را نشان می دهند. یک دانشمند داده باتجربه بلافاصله این موضوع را مشکوک خواهد یافت. این نشانه خوبی است که مدلهای ما تعمیم نمییابند و در عوض بر روی مجموعه دادههای آموزشی بیش از حد برازش میکنند. این احتمالاً به دلیل مشکل در داده های مصرف شده توسط مدل ها ایجاد می شود.
بازتولید حالت قبلی
خوشبختانه، Rok از نسخهسازی دادهها و بازتولید کل محیط مراقبت میکند، همانطور که در زمان کلیک روی دکمه Compile و Run بود. به این ترتیب، شما یک ماشین زمان برای داده ها و کدهای خود دارید. پس بیایید قبل از آموزش یکی از مدل ها وضعیت خط لوله را از سر بگیریم و ببینیم چه خبر است. به مرحله جنگل تصادفی نگاه کنید، سپس روی Artifacts کلیک کنید.
مراحل Markdown را دنبال کنید، یعنی با کلیک روی پیوند مربوطه، عکس فوری را در Rok UI مشاهده کنید.
URL Rok را کپی کنید.
به لینک سرورهای نوت بوک بروید.
روی سرور جدید کلیک کنید.
URL Rok را که قبلاً کپی کردهاید جایگذاری کنید و روی دکمه تکمیل خودکار کلیک کنید.
یک نام برای دفترچه یادداشت خود مشخص کنید.
مطمئن شوید که این تصویر را انتخاب کرده اید:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
برای ایجاد سرور نوت بوک روی Launch کلیک کنید.
هنگامی که سرور نوت بوک در دسترس است، برای اتصال به آن روی Connect کلیک کنید.
توجه داشته باشید که دفترچه یادداشت دقیقاً در سلول مرحله خط لوله ای که شما ایجاد کرده اید باز می شود.
در پسزمینه، Kale با وارد کردن تمام کتابخانهها و بارگذاری متغیرهای مراحل قبل، وضعیت Notebook را از سر گرفته است.
اشکال زدایی حالت قبلی
دستور چاپ را به این سلول اضافه کنید:
print(acc_random_forest)
سلول فعال را با فشار دادن Shift + Return اجرا کنید تا جنگل تصادفی را دوباره آموزش دهید و امتیاز را چاپ کنید. 100 است.
حالا وقت آن است که ببینیم آیا چیز عجیبی در داده های آموزشی وجود دارد یا خیر. برای کاوش و رفع این مشکل، با انتخاب سلول قبلی و کلیک کردن روی نماد مثبت (+) یک سلول در بالای علامتگذاری جنگل تصادفی اضافه کنید.
متن زیر را اضافه کنید و سلول را برای چاپ مجموعه آموزشی اجرا کنید.
train_df
اوه! ستون با برچسب های آموزشی ("Survived") به اشتباه به عنوان ویژگی های ورودی درج شده است! مدل یاد گرفته است که روی ویژگی "Survived" تمرکز کند و بقیه را نادیده بگیرد و ورودی را آلوده کند. این ستون دقیقاً با هدف مدل مطابقت دارد و در هنگام پیشبینی وجود ندارد، بنابراین باید از مجموعه داده آموزشی حذف شود تا مدل از ویژگیهای دیگر بیاموزد.
یک رفع اشکال اضافه کنید
برای حذف این ستون، سلول را ویرایش کنید تا این دستور را اضافه کنید:
train_df.drop('Survived', axis=1, inplace=True) train_df
Kale را فعال کنید و مطمئن شوید سلولی که برچسبهای Survived را حذف میکند بخشی از مرحله خط لوله مهندسی ویژگیها است (باید همان رنگ طرح کلی را داشته باشد).
با کلیک بر روی دکمه Compile and Run دوباره خط لوله را اجرا کنید.
برای رفتن به رابط کاربری Kubeflow Pipelines و مشاهده اجرا، روی پیوند کلیک کنید.
منتظر بمانید تا مرحله نتایج کامل شود و گزارش ها را مشاهده کنید تا نتایج نهایی را ببینید. شما اکنون نمرات پیش بینی واقعی دارید!
6. پاکسازی کنید
MiniKF VM را نابود کنید
به Deployment Manager در کنسول GCP بروید و استقرار minikf-1
را حذف کنید.
7. تبریک می گویم
تبریک میگوییم، شما با استفاده از Kubeflow (MiniKF)، Kale و Rok یک گردش کار علم داده سرتاسر را با موفقیت اجرا کردید!
بعدش چی؟
به انجمن Kubeflow بپیوندید:
- github.com/kubeflow
- Kubeflow Slack
- kubeflow-discuss@googlegroups.com
- تماس با جامعه در روزهای سه شنبه