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

1. مقدمة

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

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

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

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

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

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

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

في هذا الدرس التطبيقي حول الترميز، ستنشئ مسارًا معقدًا لعلم البيانات مع ضبط معلَمة فائقة في 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 الحالي. إذا كنت تخطّط لاستخدام مشروع حالي على Google Cloud Platform، تأكَّد من أنّ المشروع يستوفي الحدّ الأدنى من المتطلبات الموضّحة أدناه. تكمن الخطوة الأولى في فتح مدير المورد في وحدة تحكُّم Google Cloud Platform.

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

99b103929d928576.png

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

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

لمزيد من المساعدة في إعداد مشروع GCP، يمكنك الاطّلاع على وثائق Google Cloud Platform.

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

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

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

3fdc4329995406a0.png

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

e8952c0b96067dea.png

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

fe25c1925487142.png

3- تثبيت MiniKF

إنشاء مثيل Computes، بما في ذلك MiniKF

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

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

d6b423c1911ea85a.png

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

7d07439db939b61c.png

في قسم تكوين & نشر، اختَر اسمًا ومنطقة لمثيل 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، افتح القائمة اليمنى من خلال النقر على أيقونة الهامبرغر. انقر على Snapshots (اللقطات) وسجِّل الدخول إلى Rok باستخدام اسم المستخدم وكلمة المرور في MiniKF.

16171f35a935a9af.png

80aad6ba5d298a7e.png

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

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

خلال هذا القسم، ستعرض مثال تحديد سلالة الكلاب، وهو مشروع بتنسيق Udacity AI Nano°. بناءً على صورة كلب، سيقدم النموذج النهائي تقديرًا لسلالة الكلب.

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

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

60825e935fd0f39b.png

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

f9303c0a182e47f5.png

حدِّد اسمًا لخادم ورقة الملاحظات.

a2343f30bc9522ab.png

تأكّد من اختيار صورة Docker التالية (لاحظ أنّ علامة الصورة قد تختلف):

gcr.io/arrikto/jupyter-kale:f20978e

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

8544d9b05826b316.png

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

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 Deployment Panel:

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

2b45072da65e20ae.png

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

a1dc84ea48a87820.png

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

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

87b9f6c98dc1823e.png

في الجزء الأيمن من ورقة الملاحظات، فعِّل "ضبط HP" باستخدام "Katib" لتشغيل ضبط المعلَمة الفائقة:

a518eba74d341139.png

بعد ذلك، انقر على إعداد وظيفة Katib لضبط كاتب كاتب:

f4e34fff6a93aa60.png

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

cfc6b7bcdc685a02.png

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

f9c1ab0a6a3c5e8d.png

شاهد مستوى تقدم تجربة كاتب:

f3514011876564db.png

انقر على عرض لعرض تجربة "كاتب".

ab2f5a5edd48e8dc.png

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

410a843b6f044a4b.png

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

a511dca519580133.png

وفي واجهة مستخدم KFP ستظهر لك الإعدادات الجديدة:

43dd34ee2b75018d.png

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

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

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

3e854d3d4bb766c.png

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

ffd30dcefa739962.png

عند اكتمال تجربة "كاتب"، يمكنك عرض جميع التجارب في واجهة مستخدم الكتاب:

9096ae9caa77e42a.png

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

7acc64dfee4f35a3.png

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

95b092180d71dc80.png

انقر فوقه وسترى أفضل نتيجة والمعلمات التي أنشأتها:

3b0ce47e548e5afb.png

6- تَنظيم

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

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

7. تهانينا

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

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

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

قراءة إضافية