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

1. مقدمة

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

كيف تبدو عملية نشر Kubeflow؟

تتميّز عملية نشر Kubeflow بما يلي:

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

وهي وسيلة لتنظيم الخدمات المصغَّرة غير المتصلة بالإنترنت كوحدة واحدة ونشرها في أماكن مختلفة، سواء كانت كمبيوتر محمولاً أم سحابة إلكترونية.

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

ما الذي ستنشئه

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

  • جهاز افتراضي صغير MiniKF (Mini Kubeflow) يتم تثبيته تلقائيًا:
  • Kubernetes (باستخدام Minikube)
  • Kubeflow
  • Kale، وهي أداة لتحويل دفاتر ملاحظات Jupyter للأغراض العامة إلى سير عمل Kubeflow Pipelines ( GitHub)
  • Arrikto Rok لإنشاء نُسخ من البيانات وإعادة إنتاجها

المعلومات التي ستطّلع عليها

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

المتطلبات

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

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

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

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

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

3fdc4329995406a0.png

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

e8952c0b96067dea.png

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

fe25c1925487142.png

3- تثبيت MiniKF

إنشاء مثيل Compute

في "سوق Google Cloud Platform"، ابحث عن "MiniKF".

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

d6b423c1911ea85a.png

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

b5eeba43053db4bd.png

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

dc401e2bb5a884d9.png

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

5228086caadc44c6.png

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

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

774e83c3e96cf7b3.png

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

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

251b0bcdbf6d3c71.png

9d49d899bb0b5bd1.png

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

6258e0f09e46a6c2.png

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

8cff90ce2f0670bd.png

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

1c6fd768d71c0a92.png

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

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

a683198ac4ba900d.png

80aad6ba5d298a7e.png

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

4. تشغيل مسار من داخل دفترك

خلال هذا القسم، ستعرض مثال تيتانيك، وهي مسابقة Kaggle التي تتنبأ بالركاب الذين نجوا من حطام سفينة تايتانيك.

إنشاء خادم دفتر ملاحظات

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

4115cac8d8474d73.png

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

f9303c0a182e47f5.png

حدِّد اسمًا لخادم Notebook.

a2343f30bc9522ab.png

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

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

أضف وحدة تخزين بيانات جديدة فارغة بحجم 5 غيغابايت وأطلق عليها البيانات.

8544d9b05826b316.png

انقر على Launch (تشغيل) لإنشاء خادم ورقة الملاحظات.

28c024bcc55cc70a.png

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

2f06041475f45d3.png

تنزيل البيانات وورقة الملاحظات

ستُفتَح علامة تبويب جديدة تحتوي على صفحة JupyterLab المقصودة. إنشاء محطة طرفية جديدة في 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

شاهد مستوى تقدم مسار Pipeline Run.

9edbde68032f5e4b.png

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

a81646a22584e1b9.png

انتظِر ريثما تكتمل العملية.

44bee7dc0d24ec21.png

d377b6d574a4970.png

تهانينا! لقد قمت للتو بتشغيل مسار Kubeflow من النهاية إلى النهاية من دفتر ملاحظاتك!

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

فحص النتائج

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

2a594032c2dd6ff6.png

إعادة إنشاء الحالة السابقة

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

4f25ca4560711b23.png

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

e533bc781da9355a.png

انسخ عنوان URL الخاص بجهاز Rok.

d155d19731b5cedd.png

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

aafeab01f3ef0863.png

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

f2265a64e8f9d094.png

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

9ba4d4128a3bdeea.png

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

7685c3bf35fc74b2.png

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

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

انقر على Launch (تشغيل) لإنشاء خادم ورقة الملاحظات.

28c024bcc55cc70a.png

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

34955a64ae316de1.png

لاحظ أن دفتر الملاحظات يفتح في الخلية المحددة لخطوة المسار التي أنتجتها.

a1f7c81f349e0364.png

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

تصحيح الأخطاء الحالة السابقة

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

print(acc_random_forest)

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

e2a8a3b5465fcb5d.png

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

d1077f32dff9620f.png

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

train_df

2854798ff01aed4e.png

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

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

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

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

9e76c16a862b566.png

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

قم بتشغيل المسار مرة أخرى عن طريق النقر على الزر التجميع والتشغيل.

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

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

8c6a9676b49e5be8.png

6- تَنظيم

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

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

7. تهانينا

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

الخطوات التالية

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

قراءة إضافية