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 مع ضبط معلَمة فائقة من داخل دفتر ملاحظات بنقرة زر
- كيفية إصدار بياناتك تلقائيًا في دفتر ملاحظات وفي كل خطوة في مسار التعلّم
المتطلبات
- مشروع Google Cloud Platform نشط لديك أذونات المالك له
هذا درس تطبيقي متقدّم حول الترميز يركّز على Kubeflow. للحصول على مزيد من المعلومات حول المنصة ومقدّمة حولها، يمكنك الاطّلاع على مستندات مقدّمة حول Kubeflow. يتم تمويه المفاهيم غير ذات الصلة وكتل الرموز، كما يتم توفيرها لك لنسخها ولصقها ببساطة.
2. إعداد البيئة
إعداد مشروع Google Cloud Platform
اتّبِع الخطوات أدناه لإنشاء مشروع Google Cloud Platform أو ضبط مشروع Google Cloud Platform الحالي. إذا كنت تخطّط لاستخدام مشروع حالي على Google Cloud Platform، تأكَّد من أنّ المشروع يستوفي الحدّ الأدنى من المتطلبات الموضّحة أدناه. تكمن الخطوة الأولى في فتح مدير المورد في وحدة تحكُّم Google Cloud Platform.
أنشِئ مشروعًا جديدًا أو اختَر مشروعًا حاليًا:
يُرجى التحقّق من الحدّ الأدنى للمتطلبات التالية:
- تأكَّد من أنّ لديك دور المالك للمشروع.
- تأكَّد من تفعيل الفوترة لمشروعك.
- إذا كنت تستخدم المستوى المجاني من GCP أو الفترة التجريبية التي تبلغ 12 شهرًا مع رصيد بقيمة 300 دولار أمريكي، يُرجى ملاحظة أنّه لا يمكنك تشغيل تثبيت MiniKF التلقائي من Google Cloud Platform، لأنّ الفئة المجانية لا توفّر موارد كافية. عليك الترقية إلى حساب مدفوع.
لمزيد من المساعدة في إعداد مشروع GCP، يمكنك الاطّلاع على وثائق Google Cloud Platform.
بعد إعداد مشروع Google Cloud Platform، انتقِل مباشرةً إلى تعليمات تثبيت MiniKF.
فتح مشروع GCP الذي تم تخصيصه مسبقًا
لفتح مشروع Google Cloud Platform المخصّص مسبقًا، انقر على الزر أدناه للانتقال إلى وحدة تحكّم Google Cloud Platform وافتح لوحة الصفحة الرئيسية في قائمة الهامبرغر في أعلى يمين الصفحة. إذا كانت الشاشة فارغة، فانقر فوق نعم في المطالبة لإنشاء لوحة معلومات.
إذا لم يكن المشروع محددًا من قبل، انقر على اختيار مشروع:
اختَر مشروعك. يجب أن يكون لديك واحد فقط:
3- تثبيت MiniKF
إنشاء مثيل Computes، بما في ذلك MiniKF
في "سوق Google Cloud Platform"، ابحث عن "MiniKF".
اختَر الجهاز الافتراضي MiniKF من Arrikto:
انقر على الزر إطلاق واختَر مشروعك:
في قسم تكوين & نشر، اختَر اسمًا ومنطقة لمثيل MiniKF واترك الخيارات التلقائية. بعد ذلك، انقر على الزر نشر:
انتظِر إلى أن يتم تشغيل مثيل MiniKF Compute:
تسجيل الدخول إلى MiniKF
عندما يتم تشغيل الجهاز الافتراضي MiniKF، يمكنك الاتصال وتسجيل الدخول بالنقر على زر SSH. اتّبِع التعليمات الظاهرة على الشاشة لتشغيل الأمر minikf
، والذي سيبدأ نشر Minikube وKubeflow وRok. سيستغرق إكمال هذه الخطوة بضع دقائق.
تسجيل الدخول إلى Kubeflow
بعد اكتمال التثبيت وتجهيز جميع اللوحات، يُرجى الانتقال إلى لوحة بيانات MiniKF. سجِّل الدخول إلى Kubeflow باستخدام اسم المستخدم وكلمة المرور في MiniKF:
ستظهر لمستخدمي Chrome هذه الشاشة:
ستظهر هذه الشاشة لمستخدمي Firefox:
ستظهر الشاشة التالية لمستخدمي Safari:
تسجيل الدخول إلى Rok
بعد تسجيل الدخول إلى Kubeflow، افتح القائمة اليمنى من خلال النقر على أيقونة الهامبرغر. انقر على Snapshots (اللقطات) وسجِّل الدخول إلى Rok باستخدام اسم المستخدم وكلمة المرور في MiniKF.
تهانينا! تم نشر MiniKF على GCP بنجاح. يمكنك الآن إنشاء دفاتر ملاحظات وكتابة رمز تعلُّم الآلة وتشغيل Kubeflow Pipelines واستخدام Rok لتحديد نُسَخ البيانات وإعادة إنتاجها.
4. تنفيذ مسار من داخل دفتر الملاحظات
خلال هذا القسم، ستعرض مثال تحديد سلالة الكلاب، وهو مشروع بتنسيق Udacity AI Nano°. بناءً على صورة كلب، سيقدم النموذج النهائي تقديرًا لسلالة الكلب.
إنشاء خادم ورقة ملاحظات في مجموعة Kubeflow
انتقِل إلى رابط دفاتر الملاحظات في لوحة بيانات Kubeflow المركزية.
انقر على خادم جديد.
حدِّد اسمًا لخادم ورقة الملاحظات.
تأكّد من اختيار صورة Docker التالية (لاحظ أنّ علامة الصورة قد تختلف):
gcr.io/arrikto/jupyter-kale:f20978e
أضف حجم بيانات جديدًا وفارغًا بحجم 5 غيغابايت وأطلق عليه البيانات.
انقر على Launch (بدء تشغيل) لإنشاء خادم ورقة الملاحظات.
عندما يكون خادم ورقة الملاحظات متاحًا، انقر على ربط للاتصال به.
تنزيل البيانات وورقة الملاحظات
ستُفتَح علامة تبويب جديدة تحتوي على صفحة JupyterLab المقصودة. أنشِئ وحدة طرفية جديدة في نموذج JupyterLab.
في النافذة الطرفية، شغِّل هذه الأوامر للانتقال إلى مجلد data وتنزيل دفتر الملاحظات والبيانات التي ستستخدمها لبقية التمرين المعملي:
cd data/ git clone https://github.com/kubeflow-kale/kale
يحتوي المستودع المستنسخ على سلسلة من الأمثلة المنظمة مع بيانات ودفاتر ملاحظات توضيحية.
في الشريط الجانبي، انتقِل إلى المجلد data/kale/examples/dog-breed-classification/
وافتح ورقة الملاحظات dog-breed.ipynb
.
استكشاف مثال تعلُّم سلالة الكلاب من رموز تعلُّم الآلة
في الوقت الحالي، لا تُشغِّل الخلايا التي تُنزِّل مجموعات البيانات، لأنّك ستستخدم بعض مجموعات البيانات الأصغر المضمَّنة في المستودع التي استنسختها للتو. إذا كنت تقوم بتشغيل هذا المثال بالسرعة التي تناسبك من المنزل، فلا تتردد في تنزيل مجموعات البيانات.
يجب تنفيذ الخلية imports
لاستيراد جميع المكتبات اللازمة. ملاحظة: إنّ الرمز يخفق بسبب عدم وجود إحدى المكتبات:
في العادة، عليك إنشاء صورة Docker جديدة لتتمكّن من تشغيل دفتر الملاحظات هذا كمسار Kubeflow، لتضمين المكتبات المُثبَّتة حديثًا. لحسن الحظ، يتأكد Rok وKale من أن أي مكتبات يتم تثبيتها أثناء التطوير ستجد طريقها إلى المسار الخاص بك، وذلك بفضل تقنية التقاط اللقطات من Rok وتركيب Kale بتلك الأجزاء المأخوذة في خطوات المسار.
شغِّل الخلية التالية لتثبيت المكتبة المفقودة:
أعِد تشغيل نواة ورقة الملاحظات من خلال النقر على رمز إعادة التشغيل:
شغِّل الخلية imports
مرة أخرى بعد تثبيت المكتبات الصحيحة، وانتظِر حتى تتم العملية بنجاح.
تحويل دفتر الملاحظات إلى مسار في Kubeflow Pipelines
قم بتمكين Kale بالنقر فوق أيقونة Kubeflow في الجزء الأيمن من دفتر الملاحظات:
يمكنك تفعيل Kale من خلال النقر على شريط التمرير في Kale Deployment Panel:
استكشاف التبعيات لكل خلية داخل دفتر الملاحظات. يمكنك التعرّف على كيفية اعتبار خلايا ورقة الملاحظات المتعددة جزءًا من خطوة في مسار واحد، كما هو موضّح في الأشرطة الملوّنة على يسار الخلايا، وكيفية اعتماد خطوة في مسار التعلّم على الخطوات السابقة، كما هو موضّح من خلال تعتمد على التصنيفات أعلى الخلايا. على سبيل المثال، تُظهر الصورة أدناه عدة خلايا تشكل جزءًا من نفس خطوة المسار. فهي لها نفس اللون الأحمر وتعتمد على خطوة المسار السابقة.
انقر على الزر التجميع والتشغيل:
يتولى Kale الآن مسؤولية دفتر الملاحظات الخاص بك وبنائه، وذلك عن طريق تحويله إلى مسار Kubeflow Pipelines. أيضًا، نظرًا لأن Kale يتكامل مع Rok لأخذ لقطات من حجم بيانات دفتر الملاحظات الحالي، فيمكنك مشاهدة تقدم اللقطة. تعتني شركة Rok بعملية تحديد نُسَخ البيانات وإعادة إنتاجها للبيئة بالكامل كما كانت عند النقر على الزر التجميع والتشغيل. بهذه الطريقة، لديك آلة زمنية للبيانات والتعليمات البرمجية الخاصة بك، وسيتم تشغيل مسار التنفيذ في نفس البيئة التي طورت فيها التعليمات البرمجية، دون الحاجة إلى إنشاء صور جديدة لـ Docker.
وتم تجميع المسار وتحميله إلى Kubeflow Pipelines. انقر الآن فوق الرابط للانتقال إلى واجهة مستخدم Kubeflow Pipelines وعرض التشغيل.
يتم فتح واجهة مستخدم Kubeflow Pipelines في علامة تبويب جديدة. انتظِر إلى حين انتهاء التدريب.
تهانينا! لقد قمتَ للتو بتشغيل مسار شامل في Kubeflow Pipelines، بدءًا من دفتر ملاحظاتك!
5- نقل بيانات التعلُّم من خلال ضبط معلَمة فائقة
فحص النتائج
ألقِ نظرة على سجلّات الخطوة cnn-from-scratch. (انقر على الخطوة في الرسم البياني في واجهة مستخدم Kubeflow Pipelines، ثم انقر على علامة التبويب السجلات). هذه هي الخطوة التي استخدمتها في تدريب الشبكة العصبية الالتفافية (CNN) من البداية. لاحِظ أنّ النموذج المُدرَّب ذو دقة منخفضة للغاية، علاوة على ذلك، استغرق إكمال هذه الخطوة وقتًا طويلاً.
ألقِ نظرة على سجلات الخطوة cnn-vgg16. في هذه الخطوة، استخدمت التعلم المنقولة على نموذج VGG-16 المدرَّب مسبقًا - وهو شبكة عصبية تم تطويرها بواسطة مجموعة الهندسة المرئية (VGG). والدقة أعلى بكثير من النموذج السابق، لكن ما زال بإمكاننا تحقيق نتائج أفضل.
ننصحك الآن بإلقاء نظرة على سجلات الخطوة cnn-resnet50. في هذه الخطوة، استخدمت تعلم النقل على نموذج ResNet-50 المدرَّب مسبقًا. وتكون الدقة أعلى بكثير. وبالتالي، هذا هو النموذج الذي ستستخدمه في باقي هذا الدرس التطبيقي حول الترميز.
ضبط المعلَمة الفائقة
ارجع إلى خادم ورقة الملاحظات في واجهة مستخدم Kubeflow، وافتح ورقة الملاحظات المسماة dog-breed-katib.ipynb
(في المسار data/kale/examples/dog-breed-classification/
). سوف تجري في هذا الدفتر بعض تجارب ضبط المعلمات الفائقة على نموذج ResNet-50 باستخدام كاتب. لاحظ أن لديك خلية واحدة في بداية دفتر الملاحظات للإعلان عن المعلمات:
في الجزء الأيمن من ورقة الملاحظات، فعِّل "ضبط HP" باستخدام "Katib" لتشغيل ضبط المعلَمة الفائقة:
بعد ذلك، انقر على إعداد وظيفة Katib لضبط كاتب كاتب:
حدِّد مساحة البحث لكل مَعلمة وحدِّد هدفًا:
انقر على الزر تجميع مهمة كتيب وتشغيلها:
شاهد مستوى تقدم تجربة كاتب:
انقر على عرض لعرض تجربة "كاتب".
انقر على Done (تم) للاطّلاع على عمليات التشغيل في Kubeflow Pipelines (KFP):
في صفحة تجربة "كاتب"، ستظهر لك التجارب الجديدة:
وفي واجهة مستخدم KFP ستظهر لك الإعدادات الجديدة:
لنوضح ما حدث. في السابق، أنتج Kale مسارًا يتم تشغيله من دفتر ملاحظات والآن يقوم بإنشاء عمليات مسارات متعددة، حيث يتم تغذية كل مسار بمجموعة مختلفة من الوسيطات.
يُعدّ "كاتب" مكوّنًا لتطبيق Kubeflow لتشغيل مهام ضبط معلَمة فائقة الغرض عامة. لا يعرف كاتب أي شيء عن الوظائف التي يعرضها في الواقع (يُسمى "المحاكمات" في مصطلحات "كاتب"). كل ما يهتم به Kale هو مساحة البحث وخوارزمية التحسين والهدف. يوفّر "كيب" تنفيذ مهام بسيطة (أي Pods) كتجارب، إلا أنّ Kale يستخدم نظامًا ساخرًا لتشغيل مسارات البيانات في Kubeflow Pipelines، ثم جمع المقاييس من عمليات التنفيذ.
ومع تنفيذ تجربة "كاتب" للتجارب، سترى المزيد من التجارب في واجهة مستخدم Katib:
ويتم تشغيل المزيد من الطلبات في واجهة مستخدم KFP:
عند اكتمال تجربة "كاتب"، يمكنك عرض جميع التجارب في واجهة مستخدم الكتاب:
في ما يلي جميع عمليات التشغيل في واجهة مستخدم KFP:
إذا عدت إلى دفتر الملاحظات، فسوف ترى زر معلومات بجوار تجربة كاتب مباشرةً داخل لوحة Kale:
انقر فوقه وسترى أفضل نتيجة والمعلمات التي أنشأتها:
6- تَنظيم
تدمير الجهاز الافتراضي MiniKF
انتقِل إلى مدير النشر في وحدة تحكّم Google Cloud Platform واحذف عملية نشر minikf-on-gcp
.
7. تهانينا
تهانينا، لقد نجحت في تنفيذ سير عمل شامل لعلم البيانات باستخدام Kubeflow (MiniKF) وKale وRok!
الخطوات التالية
الانضمام إلى منتدى Kubeflow:
- github.com/kubeflow
- تطبيق Kobeflow Slack
- kubeflow-discuss@googlegroups.com
- مكالمة المنتدى الأسبوعية وSlack وتفاصيل المنتدى الأخرى