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 من داخل دفتر ملاحظات بنقرة زر
- كيفية إصدار بياناتك تلقائيًا في دفتر ملاحظات وفي كل خطوة في المسار
المتطلبات
- مشروع Google Cloud Platform نشط لديك أذونات المالك له
هذا درس تطبيقي متقدّم حول الترميز يركّز على Kubeflow. للحصول على مزيد من المعلومات حول المنصة ومقدّمة حولها، يمكنك الاطّلاع على مستندات مقدّمة حول Kubeflow. يتم تمويه المفاهيم غير ذات الصلة وكتل الرموز، كما يتم توفيرها لك لنسخها ولصقها ببساطة.
2. إعداد البيئة
ضبط رقم تعريف مشروع Google Cloud Platform واسم المجموعة
للعثور على رقم تعريف مشروعك، انتقِل إلى لوحة الصفحة الرئيسية لوحدة تحكُّم Google Cloud Platform، الموجودة في قائمة الهامبرغر في أعلى يمين الصفحة. إذا كانت الشاشة فارغة، فانقر فوق نعم في المطالبة لإنشاء لوحة معلومات.
فتح وحدة تحكُّم Google Cloud Platform
إذا لم يكن المشروع محددًا بالفعل، فانقر على تحديد مشروع:
واختر مشروعك. يجب أن يكون لديك واحد فقط:
3- تثبيت MiniKF
إنشاء مثيل Compute
في "سوق Google Cloud Platform"، ابحث عن "MiniKF".
اختَر الجهاز الافتراضي MiniKF من Arrikto.
انقر على الزر بدء تشغيل Compute Engine واختَر مشروعك.
في قسم تكوين & نشر، اختَر اسمًا لمثيل MiniKF واترك الخيارات التلقائية. بعد ذلك، انقر على الزر نشر.
انتظِر إلى أن يتم تشغيل مثيل MiniKF Compute.
تسجيل الدخول إلى MiniKF
عندما يتم تشغيل الجهاز الافتراضي MiniKF، قم بالاتصال وتسجيل الدخول بالنقر على زر بروتوكول النقل الآمن. اتّبِع التعليمات الظاهرة على الشاشة لتشغيل الأمر 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 التي تتنبأ بالركاب الذين نجوا من حطام سفينة تايتانيك.
إنشاء خادم دفتر ملاحظات
انتقِل إلى الرابط Notebook Servers (خادم دفتر الملاحظات) في لوحة بيانات Kubeflow المركزية.
انقر على خادم جديد.
حدِّد اسمًا لخادم Notebook.
تأكد من تحديد هذه الصورة:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
أضف وحدة تخزين بيانات جديدة فارغة بحجم 5 غيغابايت وأطلق عليها البيانات.
انقر على Launch (تشغيل) لإنشاء خادم ورقة الملاحظات.
عندما يكون خادم ورقة الملاحظات متاحًا، انقر على ربط للاتصال به.
تنزيل البيانات وورقة الملاحظات
ستُفتَح علامة تبويب جديدة تحتوي على صفحة JupyterLab المقصودة. إنشاء محطة طرفية جديدة في 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 في الجزء الأيمن.
استكشاف التبعيات لكل خلية. تعرّف على كيفية أن تكون خلايا متعددة جزءًا من خطوة في مسار واحد، وكيف يمكن أن تعتمد تلك الخطوة على خطوات سابقة.
انقر على الزر التجميع والتشغيل.
شاهِد مستوى تقدّم اللقطة.
شاهد مستوى تقدم مسار Pipeline Run.
انقر فوق الرابط للانتقال إلى واجهة مستخدم Kubeflow Pipelines وعرض عملية التشغيل.
انتظِر ريثما تكتمل العملية.
تهانينا! لقد قمت للتو بتشغيل مسار Kubeflow من النهاية إلى النهاية من دفتر ملاحظاتك!
5- قابلية إعادة الإنتاج باستخدام لقطات للحجم
فحص النتائج
ألقِ نظرة على السجلات لخطوة المسار الثانية إلى الأخيرة النتائج. لاحظ أن جميع المتنبئات تُظهر درجة 100%. سيجد عالِم البيانات ذو الخبرة هذا الأمر مشبوهًا على الفور. وهذا مؤشر جيد على أن نماذجنا لا يتم تعميمها وأنها أكثر من فرط التخصيص في مجموعة بيانات التدريب. من المحتمل أن يكون هذا بسبب مشكلة في البيانات التي تستهلكها النماذج.
إعادة إنشاء الحالة السابقة
لحسن الحظ، تتولى شركة Rok الاهتمام بتحديد نُسَخ البيانات وإعادة إنتاج البيئة بالكامل، حيث كان هذا هو الوقت الذي نقرت فيه على الزر التجميع والتشغيل. بهذه الطريقة، يتوفر لديك آلة زمنية للبيانات والتعليمات البرمجية الخاصة بك. إذًا، هيا نستأنف حالة المسار قبل تدريب أحد النماذج ونرى ما يحدث. ألقِ نظرة على الخطوة randomforest، ثم انقر على Artifacts.
اتّبِع الخطوات الواردة في Markdown، أي عرض اللقطة في واجهة مستخدم Rok من خلال النقر على الرابط المقابل.
انسخ عنوان URL الخاص بجهاز Rok.
انتقِل إلى الرابط خوادم نوتبوك.
انقر على خادم جديد.
ألصق عنوان URL Rok الذي نسخته سابقًا وانقر على الزر الملء التلقائي.
حدد اسمًا لدفتر الملاحظات.
تأكد من تحديد هذه الصورة:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
انقر على Launch (تشغيل) لإنشاء خادم ورقة الملاحظات.
عندما يكون خادم ورقة الملاحظات متاحًا، انقر على ربط للاتصال به.
لاحظ أن دفتر الملاحظات يفتح في الخلية المحددة لخطوة المسار التي أنتجتها.
في الخلفية، استأنف Kale حالة المفكرة من خلال استيراد جميع المكتبات وتحميل المتغيرات من الخطوات السابقة.
تصحيح الأخطاء الحالة السابقة
إضافة أمر طباعة إلى هذه الخلية:
print(acc_random_forest)
شغِّل الخلية النشطة بالضغط على Shift + Return لإعادة ضبط التفرعات العشوائية وطباعة النتيجة. إنها 100.
حان الوقت الآن لمعرفة ما إذا كان هناك شيء غريب في بيانات التدريب. لاستكشاف هذه المشكلة وإصلاحها، أضف خلية أعلى عملية تسجيل الغابة العشوائية عن طريق تحديد الخلية السابقة والنقر على رمز علامة الجمع (+).
أضف النص التالي ونفذ الخلية لطباعة مجموعة التدريب.
train_df
عفوًا. تم تضمين العمود الذي يحتوي على تصنيفات التدريب ("تم البقاء") عن طريق الخطأ كميزات إدخال! تعلم النموذج التركيز على "العناصر التي تم الحفاظ عليها" مميزة وتتجاهل الباقي، مما يضيع المدخلات. وهذا العمود يطابق تمامًا هدف النموذج ولا يكون موجودًا أثناء التنبؤ، لذا يجب إزالته من مجموعة بيانات التطبيق لتمكين النموذج من التعلم من الخصائص الأخرى.
إضافة إصلاح للأخطاء
لإزالة هذا العمود، عدِّل الخلية لإضافة الأمر التالي:
train_df.drop('Survived', axis=1, inplace=True) train_df
فعّل Kale وتأكد من أن الخلية التي تزيل التصنيفات تم البقاء جزءًا من خطوة مسار هندسة الميزات (يجب أن يكون لها لون المخطط نفسه).
قم بتشغيل المسار مرة أخرى عن طريق النقر على الزر التجميع والتشغيل.
انقر فوق الرابط للانتقال إلى واجهة مستخدم Kubeflow Pipelines وعرض عملية التشغيل.
انتظِر إلى أن تكتمل خطوة النتائج، واطّلِع على السجلّات لمعرفة النتائج النهائية. لديك الآن نتائج توقعات واقعية!
6- تَنظيم
تدمير الجهاز الافتراضي MiniKF
انتقِل إلى مدير النشر في وحدة تحكّم Google Cloud Platform واحذف عملية نشر minikf-1
.
7. تهانينا
تهانينا، لقد نجحت في تنفيذ سير عمل شامل لعلم البيانات باستخدام Kubeflow (MiniKF) وKale وRok!
الخطوات التالية
الانضمام إلى منتدى Kubeflow:
- github.com/kubeflow
- تطبيق Kobeflow Slack
- kubeflow-discuss@googlegroups.com
- مكالمة للمنتدى كل يوم ثلاثاء