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

1. مقدمة

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

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

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

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

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

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

ما ستنشئه

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

المتطلبات

هذا الدرس التطبيقي حول الترميز متقدّم ويركّز على 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.

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

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

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

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.png9d49d899bb0b5bd1.png

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

6258e0f09e46a6c2.png

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

8cff90ce2f0670bd.png

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

1c6fd768d71c0a92.png

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

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

16171f35a935a9af.png80aad6ba5d298a7e.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.png39e6fa39516d2773.png

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

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

فحص النتائج

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

62bf0835e9896c67.png

ألقِ نظرة على سجلّات خطوة cnn-vgg16. في هذه الخطوة، استخدمت "التعلّم القائم على نقل المهام" في نموذج VGG-16 المدرَّب مسبقًا، وهو شبكة عصبونية درّبتها "مجموعة الهندسة المرئية" (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

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

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:

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