من دفتر الملاحظات إلى مسارات أنابيب Kubeflow مع ضبط HP: رحلة في علم البيانات

1. مقدمة

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

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

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

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

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

يرشدك هذا الدرس التطبيقي حول الترميز إلى كيفية إنشاء عملية تفعيل Kubeflow باستخدام MiniKF، ثم تنفيذ سير عمل Kubeflow Pipelines مع ضبط المعلَمة الفائقة لتدريب نموذج وعرضه. يمكنك إجراء كل ذلك من داخل دفتر جوبيتر.

ما ستنشئه

في هذا الدرس العملي، ستنشئ مسارًا معقّدًا لعلوم البيانات مع ضبط المعلمات الفائقة على 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 مع ضبط المعلمات الفائقة من داخل دفتر ملاحظات بنقرة زر
  • كيفية إنشاء إصدارات من بياناتك تلقائيًا في دفتر ملاحظات وفي كل خطوة من خطوات عملية إنشاء خطوط الأنابيب

المتطلبات

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

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

إعداد مشروعك على Google Cloud Platform

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

أنشِئ مشروعًا جديدًا أو اختَر مشروعًا حاليًا:

99b103929d928576.png

تحقَّق من الحدّ الأدنى من المتطلبات التالية:

  • تأكَّد من أنّ لديك دور المالك للمشروع.
  • تأكَّد من تفعيل الفوترة لمشروعك.
  • إذا كنت تستخدم طبقة GCP المجانية أو الفترة التجريبية التي تبلغ 12 شهرًا مع رصيد بقيمة 300 دولار أمريكي، يُرجى العِلم أنّه لا يمكنك تشغيل عملية التثبيت التلقائية لـ MiniKF على GCP، لأنّ الطبقة المجانية لا توفّر موارد كافية. عليك الترقية إلى حساب مدفوع.

للحصول على مزيد من المساعدة بشأن إعداد مشروع على Google Cloud Platform، يُرجى الاطّلاع على مستندات Google Cloud Platform.

بعد إعداد مشروعك على GCP، انتقِل مباشرةً إلى تعليمات تثبيت MiniKF.

افتح مشروع Google Cloud Platform الذي تم تخصيصه مسبقًا

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

3fdc4329995406a0.png

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

e8952c0b96067dea.png

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

fe25c1925487142.png

3- تثبيت MiniKF

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

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

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

d6b423c1911ea85a.png

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

7d07439db939b61c.png

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

7d5f7d17a80a1930.png

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

5228086caadc44c6.png

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

عندما يكون الجهاز الافتراضي MiniKF نشطًا، اتّصِل به وسجِّل الدخول من خلال النقر على الزر SSH. اتّبِع التعليمات الظاهرة على الشاشة لتنفيذ الأمر 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، افتح القائمة اليمنى من خلال النقر على رمز الخطوط الثلاثة. انقر على اللقطات وسجِّل الدخول إلى Rok باستخدام اسم المستخدم وكلمة المرور في MiniKF.

16171f35a935a9af.png

80aad6ba5d298a7e.png

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

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

خلال هذا القسم، ستنفّذ مثال "تحديد سلالة الكلاب"، وهو مشروع في برنامج Udacity AI Nanodegree. عند تقديم صورة لكلب، سيقدّم النموذج النهائي تقديرًا لسلالة الكلب.

إنشاء خادم دفتر ملاحظات في مجموعة Kubeflow

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

60825e935fd0f39b.png

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

f9303c0a182e47f5.png

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

a2343f30bc9522ab.png

تأكَّد من اختيار صورة Docker التالية (يُرجى العِلم أنّ علامة الصورة قد تختلف):

gcr.io/arrikto/jupyter-kale:f20978e

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

8544d9b05826b316.png

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

28c024bcc55cc70a.png

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

52f1f8234988ceaa.png

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

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

ab9ac96f1a1f0d09.png

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

cd data/
git clone https://github.com/kubeflow-kale/kale

يحتوي المستودع المستنسخ على سلسلة من الأمثلة المنسّقة مع البيانات والملاحظات المشروحة.

في الشريط الجانبي، انتقِل إلى المجلد data/kale/examples/dog-breed-classification/ وافتح دفتر الملاحظات dog-breed.ipynb.

2bc436465522f65b.png

استكشاف رمز تعلُّم الآلة الخاص بمثال "التعرّف على سلالة الكلاب"

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

نفِّذ الخلية imports لاستيراد جميع المكتبات الضرورية. يجب ملاحظة أنّ الرمز البرمجي يتعذّر تنفيذه بسبب عدم توفّر مكتبة:

5e2b97ab2512f139.png

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

نفِّذ الخلية التالية لتثبيت المكتبة الناقصة:

c483da77943a6f01.png

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

376b5203209c2c91.png

أعِد تشغيل الخلية imports مرة أخرى بعد تثبيت المكتبات الصحيحة، وستلاحظ أنّها تعمل بنجاح.

تحويل دفتر ملاحظاتك إلى مسار في Kubeflow Pipelines

فعِّل Kale من خلال النقر على رمز Kubeflow في اللوحة اليمنى من دفتر الملاحظات:

7b96241f2ab6c389.png

فعِّل Kale من خلال النقر على شريط التمرير في لوحة نشر Kale:

804cfbf9d76b7e23.png

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

fcd0fb351cdfb359.png

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

18f2f6f0e12393d5.png

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

de1b88af76df1a9a.png

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

e0b467e2e7034b5d.png

يتم فتح واجهة مستخدم Kubeflow Pipelines في علامة تبويب جديدة. انتظِر حتى ينتهي التشغيل.

21a9d54a57f3e20c.png

39e6fa39516d2773.png

تهانينا! لقد نفّذت للتو مسارًا متكاملاً في Kubeflow Pipelines، بدءًا من دفتر الملاحظات.

5- التعلّم القائم على نقل المهام مع ضبط المعلَمة الفائقة

فحص النتائج

ألقِ نظرة على سجلّات الخطوة cnn-from-scratch. (انقر على الخطوة في الرسم البياني على واجهة مستخدم Kubeflow Pipelines، ثم انقر على علامة التبويب السجلّات). هذه هي الخطوة التي درّبت فيها شبكة عصبونية التفافية (CNN) من البداية. لاحظ أنّ النموذج المُدرَّب يتميّز بدقة منخفضة جدًا، بالإضافة إلى أنّ هذه الخطوة استغرقت وقتًا طويلاً لإكمالها.

62bf0835e9896c67.png

ألقِ نظرة على سجلّات خطوة cnn-vgg16. في هذه الخطوة، استخدمت التعلّم القائم على نقل المهام على نموذج VGG-16 المدرَّب مسبقًا، وهو شبكة عصبونية درّبتها مجموعة Visual Geometry Group (VGG). الدقة أعلى بكثير من النموذج السابق، ولكن لا يزال بإمكاننا تقديم أداء أفضل.

2b45072da65e20ae.png

الآن، ألقِ نظرة على سجلّات خطوة cnn-resnet50. في هذه الخطوة، استخدمت التعلّم القائم على نقل المهام على نموذج ResNet-50 المدرَّب مسبقًا. الدقة أعلى بكثير. لذلك، هذا هو النموذج الذي ستستخدمه في بقية هذا الدرس التطبيقي.

a1dc84ea48a87820.png

ضبط المعلَمة الفائقة

ارجع إلى خادم دفتر الملاحظات في واجهة مستخدم Kubeflow، وافتح دفتر الملاحظات المسمّى dog-breed-katib.ipynb (في المسار data/kale/examples/dog-breed-classification/). في دفتر الملاحظات هذا، ستجري بعض تجارب ضبط المعلمات الفائقة على نموذج ResNet-50 باستخدام Katib. لاحظ أنّ لديك خلية واحدة في بداية دفتر الملاحظات لتحديد المَعلمات:

87b9f6c98dc1823e.png

في اللوحة اليمنى من دفتر الملاحظات، فعِّل ضبط المعلَمة الفائقة باستخدام Katib لتنفيذ عملية ضبط المعلَمة الفائقة:

a518eba74d341139.png

بعد ذلك، انقر على إعداد مهمة Katib لضبط إعدادات Katib:

f4e34fff6a93aa60.png

حدِّد مساحة البحث لكل مَعلمة، وحدِّد هدفًا:

cfc6b7bcdc685a02.png

انقر على الزر تجميع وتشغيل مهمة Katib:

f9c1ab0a6a3c5e8d.png

يمكنك متابعة مستوى تقدّم تجربة Katib باتّباع الخطوات التالية:

f3514011876564db.png

انقر على عرض للاطّلاع على تجربة Katib:

ab2f5a5edd48e8dc.png

انقر على تم للاطّلاع على عمليات التشغيل في Kubeflow Pipelines (KFP):

410a843b6f044a4b.png

في صفحة تجربة Katib، ستظهر لك التجارب الجديدة:

a511dca519580133.png

وفي واجهة مستخدم KFP، ستظهر عمليات التشغيل الجديدة:

43dd34ee2b75018d.png

لنستعرض ما حدث للتو. في السابق، كانت أداة Kale تنفّذ عملية تشغيل واحدة لسلسلة من العمليات من دفتر ملاحظات، أمّا الآن، فهي تنفّذ عمليات تشغيل متعددة لسلسلة من العمليات، ويتم تزويد كل عملية تشغيل بمجموعة مختلفة من الوسيطات.

‫Katib هي أحد مكونات Kubeflow لتنفيذ مهام ضبط المعلمات الفائقة للأغراض العامة. لا يعرف Katib أي شيء عن المهام التي يتم تنفيذها فعليًا (تُعرف باسم التجارب في مصطلحات Katib). كل ما يهمّ Kale هو مساحة البحث وخوارزمية التحسين والهدف. يتيح Katib تشغيل مهام بسيطة (أي وحدات Pod) كتجارب، ولكن تنفّذ Kale برنامجًا وسيطًا لتشغيل خطوط الأنابيب في Kubeflow Pipelines، ثم تجمع المقاييس من عمليات تشغيل خطوط الأنابيب.

بما أنّ تجربة Katib تنتج تجارب، ستظهر لك المزيد من التجارب في واجهة مستخدم Katib:

3e854d3d4bb766c.png

والمزيد من عمليات التشغيل في واجهة مستخدم KFP:

ffd30dcefa739962.png

عند اكتمال تجربة Katib، يمكنك الاطّلاع على جميع المحاولات في واجهة مستخدم Katib:

9096ae9caa77e42a.png

وجميع عمليات التشغيل في واجهة مستخدم KFP:

7acc64dfee4f35a3.png

إذا عدت إلى "المفكرة"، سيظهر لك زر معلومات بجانب تجربة Katib مباشرةً داخل لوحة Kale:

95b092180d71dc80.png

انقر على هذا الرمز وستظهر لك أفضل نتيجة والمَعلمات التي أدّت إلى ظهورها:

3b0ce47e548e5afb.png

6. تَنظيم

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

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

7. تهانينا

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

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

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

Further reading