من Notebook وKubeflow Pipelines باستخدام MiniKF وKale

1. مقدمة

Kubeflow هي مجموعة أدوات لتعلُّم الآلة مخصّصة لكل من Kubernetes. يهدف المشروع إلى تسهيل عملية نشر مهام تعلُّم الآلة على Kubernetes، بالإضافة إلى توفير إمكانية نقلها وتوسيع نطاقها. الهدف هو توفير طريقة مباشرة لنشر أفضل أنظمة مفتوحة المصدر لتعلُّم الآلة في بنى أساسية متنوعة.

كيف يبدو نشر Kubeflow؟

عملية نشر Kubeflow هي:

  • إمكانية النقل: يمكن استخدامها على أي مجموعة Kubernetes، سواء كانت مستضافة على Google Cloud Platform (GCP) أو في مقر الشركة أو على مستوى عدة موفّرين.
  • قابل للتوسيع: يمكنه الاستفادة من الموارد المتقلّبة ولا يقتصر على عدد الموارد المخصّصة لمجموعة Kubernetes.
  • قابلة للإنشاء - محسّنة باستخدام عاملي الخدمة للعمل بلا إنترنت أو على شبكات منخفضة الجودة

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

سيرشدك هذا الدرس التطبيقي حول الترميز إلى خطوات إنشاء عملية نشر Kubeflow باستخدام MiniKF، وتشغيل سير عمل Kubeflow Pipelines من داخل دفتر ملاحظات Jupyter.

ما ستنشئه

في هذا الدرس التطبيقي حول الترميز، ستنشئ مسار بيانات معقّدًا لعلم البيانات باستخدام Kubeflow Pipelines، بدون استخدام أي أوامر واجهة سطر الأوامر أو حِزم تطوير البرامج (SDK). لا تحتاج إلى أي معرفة بـ Kubernetes أو Docker. عند اكتمال العملية، ستتضمّن بنيتك الأساسية ما يلي:

  • آلة افتراضية (VM) من MiniKF (Mini Kubeflow) يتم تثبيتها تلقائيًا:
  • ‫Kubernetes (باستخدام Minikube)
  • Kubeflow
  • Kale: أداة لتحويل أوراق ملاحظات Jupyter Notebooks العامة إلى سير عمل Kubeflow Pipelines ( GitHub)
  • ‫Arrikto Rok لإصدار البيانات وإمكانية تكرارها

ما ستتعلمه

  • كيفية تثبيت Kubeflow باستخدام MiniKF
  • كيفية تحويل أوراق ملاحظات Jupyter إلى Kubeflow Pipelines بدون استخدام أي أوامر واجهة سطر الأوامر أو حِزم تطوير البرامج (SDK)
  • كيفية تشغيل Kubeflow Pipelines من داخل دفتر ملاحظات بنقرة زر
  • طريقة التنفيذ: إنشاء إصدارات من بياناتك تلقائيًا في Notebook وفي كل خطوة من خطوات مسار التعلّم

المتطلبات

هذا الدرس التطبيقي حول الترميز متقدّم ويركّز على Kubeflow. لمزيد من المعلومات الأساسية ومقدمة عن المنصة، يُرجى الاطّلاع على مستندات مقدمة عن Kubeflow. يتم تجاهل المفاهيم وكتل الرموز البرمجية غير ذات الصلة وتقديمها لك لنسخها ولصقها ببساطة.

2. إعداد البيئة

ضبط رقم تعريف مشروع Google Cloud Platform واسم المجموعة

للعثور على رقم تعريف مشروعك، انتقِل إلى لوحة "الصفحة الرئيسية" في "وحدة تحكّم Google Cloud Platform"، والتي يمكنك العثور عليها في قائمة الخطوط الثلاثة في أعلى يمين الصفحة. إذا كانت الشاشة فارغة، انقر على "نعم" في الطلب لإنشاء لوحة بيانات.

افتح "وحدة تحكّم Google Cloud Platform"

3fdc4329995406a0.png

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

e8952c0b96067dea.png

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

fe25c1925487142.png

3- تثبيت MiniKF

إنشاء آلة افتراضية في Compute Engine

في GCP Marketplace، ابحث عن "MiniKF".

اختَر الجهاز الافتراضي MiniKF من Arrikto.

d6b423c1911ea85a.png

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

b5eeba43053db4bd.png

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

dc401e2bb5a884d9.png

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

5228086caadc44c6.png

تسجيل الدخول إلى MiniKF

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

774e83c3e96cf7b3.png

تسجيل الدخول إلى Kubeflow

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

251b0bcdbf6d3c71.png9d49d899bb0b5bd1.png

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

6258e0f09e46a6c2.png

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

8cff90ce2f0670bd.png

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

1c6fd768d71c0a92.png

تسجيل الدخول إلى Rok

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

a683198ac4ba900d.png80aad6ba5d298a7e.png

تهانينا! تم نشر MiniKF على Google Cloud Platform بنجاح. يمكنك الآن إنشاء دفاتر وكتابة رمز تعلُّم الآلة وتشغيل Kubeflow Pipelines. استخدِم Rok لتحديد إصدارات البيانات وإمكانية تكرارها.

4. تشغيل عملية Pipeline من داخل دفتر الملاحظات

خلال هذا القسم، ستنفّذ مثال "تايتانيك"، وهو مسابقة على Kaggle تتوقّع الركاب الذين نجوا من غرق السفينة.

إنشاء خادم Notebook

انتقِل إلى الرابط خوادم دفاتر الملاحظات في لوحة التحكّم المركزية في Kubeflow.

4115cac8d8474d73.png

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

f9303c0a182e47f5.png

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

a2343f30bc9522ab.png

تأكَّد من اختيار هذه الصورة:

gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop

أضِف وحدة تخزين بيانات جديدة فارغة بحجم 5 غيغابايت وسمِّها data.

8544d9b05826b316.png

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

28c024bcc55cc70a.png

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

2f06041475f45d3.png

تنزيل البيانات ودفتر الملاحظات

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

2482011174f7bc75.png

في نافذة "الوحدة الطرفية"، نفِّذ الأوامر التالية للانتقال إلى مجلد البيانات وتنزيل دفتر الملاحظات والبيانات التي ستستخدمها في بقية الدرس التطبيقي.

cd data/
git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples

يحتوي هذا المستودع على سلسلة من الأمثلة المنسّقة مع البيانات ودفاتر الملاحظات المشروحة. انتقِل إلى المجلد data/examples/titanic-ml-dataset/ في الشريط الجانبي وافتح دفتر الملاحظات titanic_dataset_ml.ipynb.

c85baf68b36c63b2.png

استكشاف رمز تعلُّم الآلة الخاص بتحدّي Titanic

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

bf2451fd7407e334.png

ارجع إلى "وحدة التحكّم" وثبِّت المكتبة الناقصة.

pip3 install --user seaborn

d90593b21425dd12.png

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

a21f5f563b36ce4d.png

أعِد تشغيل الخلية بعد تثبيت المكتبات الصحيحة وستنجح العملية.

تحويل دفتر الملاحظات إلى Kubeflow Pipeline

فعِّل Kale من خلال النقر على رمز Kubeflow في اللوحة اليمنى.

3f4f9c93b187b105.png

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

15cca32444c1f12e.png

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

bde5cef34f00e258.png

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

9408f46abb2493f5.png

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

9edbde68032f5e4b.png

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

a81646a22584e1b9.png

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

44bee7dc0d24ec21.pngd377b6d574a4970.png

تهانينا! لقد نفّذت للتو عملية شاملة في Kubeflow Pipeline بدءًا من دفتر الملاحظات.

5- إمكانية إعادة الإنتاج باستخدام "لقطات المجلّد"

فحص النتائج

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

2a594032c2dd6ff6.png

إعادة إنتاج الحالة السابقة

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

4f25ca4560711b23.png

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

e533bc781da9355a.png

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

d155d19731b5cedd.png

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

aafeab01f3ef0863.png

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

f2265a64e8f9d094.png

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

9ba4d4128a3bdeea.png

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

7685c3bf35fc74b2.png

تأكَّد من اختيار هذه الصورة:

gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop

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

28c024bcc55cc70a.png

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

34955a64ae316de1.png

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

a1f7c81f349e0364.png

في الخلفية، استأنف Kale حالة "دفتر الملاحظات" من خلال استيراد جميع المكتبات وتحميل المتغيّرات من الخطوات السابقة.

تصحيح الحالة السابقة

أضِف أمر طباعة إلى هذه الخلية:

print(acc_random_forest)

نفِّذ الخلية النشطة من خلال الضغط على Shift + Return لإعادة تدريب الغابة العشوائية وطباعة النتيجة. الحد الأقصى هو 100.

e2a8a3b5465fcb5d.png

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

d1077f32dff9620f.png

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

train_df

2854798ff01aed4e.png

عفوًا. تم تضمين العمود الذي يحتوي على تصنيفات التدريب ("نجا") عن طريق الخطأ كميزات إدخال. تعلّم النموذج التركيز على ميزة "الناجون" وتجاهل الباقي، ما يؤدي إلى تشويه الإدخال. يتطابق هذا العمود تمامًا مع هدف النموذج ولا يكون متوفّرًا أثناء التوقّع، لذا يجب إزالته من مجموعة بيانات التدريب ليتمكّن النموذج من التعلّم من الميزات الأخرى.

إضافة إصلاح خطأ

لإزالة هذا العمود، عدِّل الخلية لإضافة الأمر التالي:

train_df.drop('Survived', axis=1, inplace=True)
train_df

9e76c16a862b566.png

فعِّل Kale وتأكَّد من أنّ الخلية التي تزيل تصنيفات Survived هي جزء من خطوة featureengineering في مسار البيانات (يجب أن يكون لها لون المخطط التفصيلي نفسه).

نفِّذ مسار العرض مرة أخرى من خلال النقر على الزر تجميع وتشغيل.

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

انتظِر إلى أن تكتمل خطوة النتائج واطّلِع على السجلّات لمعرفة النتائج النهائية. أصبحت لديك الآن نتائج توقعات واقعية.

8c6a9676b49e5be8.png

6. تَنظيم

تدمير الجهاز الافتراضي MiniKF

انتقِل إلى Deployment Manager في "وحدة تحكّم Google Cloud Platform" واحذف عملية النشر minikf-1.

7. تهانينا

تهانينا، لقد نفّذت بنجاح سير عمل شاملًا لعلم البيانات باستخدام Kubeflow (MiniKF) وKale وRok.

ما هي الخطوات التالية؟

الانضمام إلى منتدى Kubeflow:

مزيد من المعلومات