1. مقدمة
| Kubeflow هي مجموعة أدوات لتعلُّم الآلة مخصّصة لمنصة Kubernetes. يهدف المشروع إلى تسهيل عمليات نشر مهام تعلُّم الآلة على Kubernetes، وجعلها قابلة للنقل والتوسيع. الهدف هو توفير طريقة مباشرة لنشر أفضل أنظمة مفتوحة المصدر لتعلُّم الآلة على بنى أساسية متنوعة. |
كيف يبدو نشر Kubeflow؟
عملية نشر Kubeflow هي:
- إمكانية النقل: يمكن استخدامها على أي مجموعة Kubernetes، سواء كانت مستضافة على Google Cloud Platform (GCP) أو في مقر الشركة أو على مستوى عدة موفّرين.
- قابل للتوسيع: يمكنه الاستفادة من الموارد المتقلبة ولا يقتصر على عدد الموارد المخصّصة لمجموعة Kubernetes.
- قابلة للإنشاء - محسّنة باستخدام عاملي الخدمة للعمل بلا إنترنت أو على شبكات منخفضة الجودة
وهي وسيلة لتنظيم الخدمات المصغّرة المرتبطة بشكل غير محكم كوحدة واحدة ونشرها في مجموعة متنوعة من المواقع الجغرافية، سواء كان ذلك على كمبيوتر محمول أو على السحابة الإلكترونية.
سيرشدك هذا الدرس التطبيقي حول الترميز إلى كيفية إنشاء عملية نشر Kubeflow باستخدام MiniKF، وتشغيل سير عمل Kubeflow Pipelines من داخل دفتر ملاحظات Jupyter.
ما ستنشئه
في هذا الدرس التطبيقي، ستنشئ مسارًا معقّدًا لعلوم البيانات باستخدام Kubeflow Pipelines، بدون استخدام أي أوامر CLI أو حِزم SDK. لا تحتاج إلى أي معرفة بـ Kubernetes أو Docker. عند اكتمال العملية، ستتضمّن بنيتك الأساسية ما يلي:
- آلة افتراضية (VM) من MiniKF (Mini Kubeflow) يتم تثبيتها تلقائيًا:
- Kubernetes (باستخدام Minikube)
- Kubeflow
- Kale: أداة لتحويل أوراق ملاحظات Jupyter Notebooks العامة إلى سير عمل Kubeflow Pipelines ( GitHub)
- Arrikto Rok لإصدار البيانات وإمكانية تكرارها
ما ستتعلمه
- كيفية تثبيت Kubeflow باستخدام MiniKF
- كيفية تحويل أوراق ملاحظات Jupyter إلى Kubeflow Pipelines بدون استخدام أي أوامر من واجهة سطر الأوامر أو حِزم تطوير البرامج
- كيفية تشغيل Kubeflow Pipelines من داخل دفتر ملاحظات بنقرة زر
- كيفية إنشاء إصدارات تلقائية من بياناتك في دفتر ملاحظات وفي كل خطوة من خطوات مسار البيانات
المتطلبات
- مشروع نشط على Google Cloud Platform لديك أذونات المالك له
هذا الدرس التطبيقي حول الترميز المتقدّم يركّز على Kubeflow. لمزيد من المعلومات الأساسية ومقدمة عن المنصة، يُرجى الاطّلاع على مستندات مقدمة عن Kubeflow. يتم تجاهل المفاهيم ومجموعات الرموز غير ذات الصلة وتقديمها لك لنسخها ولصقها ببساطة.
2. إعداد البيئة
ضبط رقم تعريف مشروع Google Cloud Platform واسم المجموعة
للعثور على رقم تعريف مشروعك، انتقِل إلى لوحة "الصفحة الرئيسية" في وحدة تحكّم Google Cloud Platform، والتي يمكنك العثور عليها في قائمة الخطوط الثلاثة في أعلى يمين الصفحة. إذا كانت الشاشة فارغة، انقر على "نعم" في الطلب لإنشاء لوحة بيانات.
افتح "وحدة تحكّم Google Cloud Platform"

إذا لم يكن المشروع محدّدًا من قبل، انقر على اختيار مشروع:

واختَر مشروعك. يجب أن يكون لديك حساب واحد فقط:

3- تثبيت MiniKF
إنشاء آلة افتراضية في Compute Engine
في GCP Marketplace، ابحث عن "MiniKF".
اختَر الجهاز الافتراضي MiniKF من Arrikto.

انقر على الزر التشغيل على Compute Engine واختَر مشروعك.

في نافذة Configure & Deploy (الإعداد والنشر)، اختَر اسمًا لمثيل MiniKF واترك الخيارات التلقائية. بعد ذلك، انقر على الزر نشر.

انتظِر إلى أن يتم تشغيل مثيل MiniKF Compute.

تسجيل الدخول إلى MiniKF
عندما يكون الجهاز الافتراضي MiniKF نشطًا، اتّصِل به وسجِّل الدخول من خلال النقر على زر SSH. اتّبِع التعليمات الظاهرة على الشاشة لتنفيذ الأمر minikf، ما سيؤدي إلى بدء نشر Minikube وKubeflow وRok. سيستغرق إكمال هذه الخطوة بضع دقائق.

تسجيل الدخول إلى Kubeflow
بعد اكتمال التثبيت وتجهيز جميع الحاويات، انتقِل إلى لوحة بيانات MiniKF. سجِّل الدخول إلى Kubeflow باستخدام اسم المستخدم وكلمة المرور في MiniKF.


ستظهر لمستخدمي Chrome الشاشة التالية:

سيظهر لمستخدمي Firefox الشاشة التالية:

سيظهر لمستخدمي Safari الشاشة التالية:

تسجيل الدخول إلى Rok
بعد تسجيل الدخول إلى Kubeflow، افتح القائمة اليمنى من خلال النقر على رمز الخطوط الثلاثة. انتقِل إلى Snapshot Store وسجِّل الدخول إلى Rok باستخدام اسم المستخدم وكلمة المرور في MiniKF.


تهانينا! لقد تم نشر MiniKF على Google Cloud Platform بنجاح. يمكنك الآن إنشاء دفاتر وكتابة رمز تعلُّم الآلة وتشغيل Kubeflow Pipelines. استخدِم Rok لتحديد إصدارات البيانات وضمان إمكانية تكرار النتائج.
4. تشغيل مسار من داخل دفتر الملاحظات
خلال هذا القسم، ستنفّذ مثال "تايتانيك"، وهو مسابقة على Kaggle تتوقّع الركاب الذين نجوا من غرق السفينة.
إنشاء خادم دفتر ملاحظات
انتقِل إلى الرابط خوادم دفاتر الملاحظات في لوحة التحكّم المركزية في Kubeflow.

انقر على خادم جديد.

حدِّد اسمًا لخادم دفتر الملاحظات.

تأكَّد من اختيار هذه الصورة:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
أضِف وحدة تخزين بيانات جديدة فارغة بحجم 5 غيغابايت وسمِّها data.

انقر على تشغيل لإنشاء خادم دفتر الملاحظات.

عندما يصبح خادم دفتر الملاحظات متاحًا، انقر على اتصال للاتصال به.

تنزيل البيانات ودفتر الملاحظات
سيتم فتح علامة تبويب جديدة تتضمّن الصفحة المقصودة في JupyterLab. أنشئ نافذة Terminal جديدة في JupyterLab.

في نافذة "الوحدة الطرفية"، شغِّل الأوامر التالية للانتقال إلى مجلد البيانات وتنزيل دفتر الملاحظات والبيانات التي ستستخدمها في بقية الدرس التطبيقي.
cd data/ git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples
يحتوي هذا المستودع على سلسلة من الأمثلة المنسّقة مع البيانات ودفاتر الملاحظات المشروحة. انتقِل إلى المجلد data/examples/titanic-ml-dataset/ في الشريط الجانبي وافتح دفتر الملاحظات titanic_dataset_ml.ipynb.

استكشاف رمز تعلُّم الآلة الخاص بتحدّي Titanic
تشغيل دفتر الملاحظات خطوة بخطوة يُرجى العِلم أنّ الرمز البرمجي يتعذّر تنفيذه بسبب عدم توفّر مكتبة.

ارجع إلى "الوحدة الطرفية" وثبِّت المكتبة الناقصة.
pip3 install --user seaborn

أعِد تشغيل نواة دفتر الملاحظات من خلال النقر على رمز إعادة التحميل.

أعِد تشغيل الخلية بعد تثبيت المكتبات الصحيحة وستنجح العملية.
تحويل دفتر ملاحظاتك إلى Kubeflow Pipeline
فعِّل Kale من خلال النقر على رمز Kubeflow في اللوحة اليمنى.

استكشاف التبعيات على مستوى كل خلية يمكنك الاطّلاع على كيفية إمكانية أن تكون خلايا متعددة جزءًا من خطوة واحدة في مسار الإعداد، وكيفية اعتماد خطوة في مسار الإعداد على الخطوات السابقة.

انقر على الزر تجميع وتشغيل.

يمكنك متابعة مستوى تقدّم اللقطة.

تابِع مستوى تقدّم عملية تنفيذ البنية الأساسية.

انقر على الرابط للانتقال إلى واجهة مستخدم Kubeflow Pipelines وعرض عملية التشغيل.

انتظِر إلى أن تكتمل العملية.


تهانينا! لقد نفّذت للتوّ عملية Kubeflow Pipeline شاملة بدءًا من دفتر الملاحظات.
5- إمكانية إعادة الإنتاج باستخدام "لقطات المجلد"
فحص النتائج
ألقِ نظرة على السجلات الخاصة بخطوة المسار قبل الأخيرة النتائج. لاحظ أنّ جميع المؤشرات التنبؤية تعرض نتيجة %100. سيرصد عالم البيانات المتمرّس هذا النشاط المريب على الفور. وهذا مؤشر جيد على أنّ نماذجنا لا تعمّم النتائج، بل إنّها تفرط في التخصيص على مجموعة بيانات التدريب. من المحتمل أن يكون السبب هو مشكلة في البيانات التي تستخدمها النماذج.

إعادة إنتاج الحالة السابقة
لحسن الحظ، يتولّى Rok عملية تحديد إصدار البيانات وإعادة إنتاج البيئة بأكملها كما كانت عند النقر على الزر تجميع وتشغيل. بهذه الطريقة، يمكنك الرجوع إلى أي إصدار سابق من بياناتك ورمزك البرمجي. لذا، لنستأنف حالة خط الأنابيب قبل تدريب أحد النماذج ونرى ما يحدث. ألقِ نظرة على خطوة randomforest، ثم انقر على النتائج.

اتّبِع الخطوات الواردة في Markdown، أي اعرض اللقطة في واجهة مستخدم Rok من خلال النقر على الرابط المناسب.

انسخ عنوان URL الخاص بـ Rok.

انتقِل إلى الرابط خوادم دفاتر الملاحظات.

انقر على خادم جديد.

الصِق عنوان URL الخاص بـ Rok الذي نسخته سابقًا وانقر على الزر الملء تلقائيًا.

حدِّد اسمًا لدفتر الملاحظات.

تأكَّد من اختيار هذه الصورة:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
انقر على تشغيل لإنشاء خادم دفتر الملاحظات.

عندما يصبح خادم دفتر الملاحظات متاحًا، انقر على اتصال للاتصال به.

يُرجى العِلم أنّ دفتر الملاحظات يفتح في الخلية المحدّدة لخطوة مسار البيانات التي أنشأتها.

في الخلفية، استأنف Kale حالة دفتر الملاحظات من خلال استيراد جميع المكتبات وتحميل المتغيّرات من الخطوات السابقة.
تصحيح أخطاء الحالة السابقة
أضِف أمر طباعة إلى هذه الخلية:
print(acc_random_forest)
نفِّذ الخلية النشطة من خلال الضغط على Shift + Return لإعادة تدريب الغابة العشوائية وطباعة النتيجة. وهي 100.

حان الوقت الآن لمعرفة ما إذا كانت هناك أي بيانات غريبة في بيانات التدريب. لاستكشاف هذه المشكلة وحلّها، أضِف خلية فوق ترميز Random Forest عن طريق اختيار الخلية السابقة والنقر على رمز الإضافة (+).

أضِف النص التالي وشغِّل الخلية لطباعة مجموعة التدريب.
train_df

عفوًا. تم تضمين العمود الذي يحتوي على تصنيفات التدريب ("الناجون") عن طريق الخطأ كميزات إدخال. تعلّم النموذج التركيز على ميزة "الناجون" وتجاهل الباقي، ما يؤدي إلى تشويه الإدخال. يتطابق هذا العمود تمامًا مع هدف النموذج ولا يكون متوفّرًا أثناء التوقّع، لذا يجب إزالته من مجموعة بيانات التدريب ليتمكّن النموذج من التعلّم من الميزات الأخرى.
إضافة إصلاح خطأ
لإزالة هذا العمود، عدِّل الخلية لإضافة الأمر التالي:
train_df.drop('Survived', axis=1, inplace=True)
train_df

فعِّل Kale وتأكَّد من أنّ الخلية التي تزيل تصنيفات Survived هي جزء من خطوة featureengineering في مسار البيانات (يجب أن يكون لها لون المخطط التفصيلي نفسه).
نفِّذ مسار العرض مرة أخرى من خلال النقر على الزر تجميع وتشغيل.
انقر على الرابط للانتقال إلى واجهة مستخدم Kubeflow Pipelines وعرض عملية التشغيل.
انتظِر إلى أن تكتمل خطوة النتائج واطّلِع على السجلّات لمعرفة النتائج النهائية. أصبحت لديك الآن نتائج توقّعات واقعية.

6. تَنظيم
محو الجهاز الافتراضي MiniKF
انتقِل إلى Deployment Manager في وحدة تحكّم Google Cloud Platform واحذف عملية النشر minikf-1.
7. تهانينا
تهانينا، لقد نفّذت بنجاح سير عمل شاملًا لعلم البيانات باستخدام Kubeflow (MiniKF) وKale وRok.
ما هي الخطوات التالية؟
الانضمام إلى منتدى Kubeflow:
- github.com/kubeflow
- قناة Kubeflow على Slack
- kubeflow-discuss@googlegroups.com
- مكالمة جماعية أيام الثلاثاء
