كيف تدرب وتنشر نموذح على سحابة قوقل ؟

Tensorflow + Cloud ML

خطوات سير العمل العامة ل ML على السحابة

مقدمة

ماذا ستتعلم؟

ستتعلم بناء حل بتعلم الآلة يستخدم كلا من Tensorflow and AI Platform للتديب الموزع distributed training على السحابة ومن ثم نشر النموذج على السحابة والتنبؤ باسعار البيوت اونلاين باستخدام REST API و JSON

سنغطي هذه المواضيع:

  1. كيف نستخدم Tensorflow’s high level Estimator API
  2. كيف ننشر tensorflow كود للتدريب الموزع distributed training في السحابة cloud
  3. كيف نقيم النتائج باستخدام TensorBoard
  4. كيف ننشر النموذج الناتج the resulting model في السحابة cloud للتنبؤ اونلاين

ماهو tf.estimator ؟

واجهة برمجة تطبيقات TensorFlow عالية المستوى تعمل على تبسيط برمجة التعلم الآلي. وتساعد على:

  • تدريب training
  • تقييم evaluation
  • تنبؤ prediction
  • تصدير للخدمة export for serving

لنبدأ

افتح Google Console سنفترض أنك مسجل من قبل وجاهز لإستخدامها

افتح Cloud Shell ومن ثم اضعط علي زر الاستمرار

ستفتح لك نافذة تشبة هذه

الان قم بانشاء Storage Bucket للتخزين بإتباع الخطوات التالية:

  • في GCP Console انقر على  Navigation menu ومن تم اختر Storage
  • انقر على Create bucket
  • اختر اسم فريد غير مكرر واختر المنطقة المناسبة لك او اجعلها متعددة
  • انقر Create

تشغيل AI Platform

في GCP Console انقر على  Navigation menu ومن تم اختر AI Platform ثم Notebooks

اختر New Instance

ثم اختر Tensorflow Enterprise 1.XX  ومن ثم Without GPU

سيستغرق الأمر من ٢ الى ٣ دقائق

ثم انقر فوق فتح JupyterLab سيتم فتح نافذة JupyterLab في علامة تبويب جديدة.

الخطوة التالية تحميل ال Notebook
اختر Terminal كما هو موضح بالصورة

استنساخ الكود clone

في موجه الأوامر ، اكتب الأمر التالي (اختر إما الامر بالخيار الأول أو الخيار الثاني) ثم اضغط على Enter.

الخيار الأول: هنا الشرح مختصر


git clone https://github.com/Ruqyai/Deploy-a-Model-on-Cloud-ML-Engine.git

الخيار الثاني: هنا في اسهاب بالشرح


git clone https://github.com/vijaykyr/tensorflow_teaching_examples.git

فتح وتنفيذ ال Notebook

من Jupyter console

للخيار الأول: اختر
> cloud-ml-housing-prices.ipynb

للخيار الثاني: اذهب الى واختر
tensorflow_teaching_examples > housing_prices > housing_prices > cloud-ml-housing-prices.ipynb

الآن سيظهر لك ال Notebook ابدآ بقراءة الأكواد وتشغيلها


شرح الكود

يوضح لك هذا Notebook كيفية إنشاء نموذج tensorflow ، وتدريبه على السحابة بطريقة موزعة عبر وحدات المعالجة المركزية CPUs أو وحدات معالجة الرسومات المتعددة CPUs ، واستكشاف النتائج باستخدام Tensorboard ، وأخيراً نشر النموذج للتنبؤ عبر الإنترنت. سوف نوضح ذلك من خلال بناء نموذج للتنبؤ بأسعار البيوت.

Tensorflow هو إطار هرمي. كلما نزلنا اسفل التسلسل الهرمي كلما زادت المرونة ، لكن كلما زادت الأسطر البرمجية التي يجب كتابتها . لذا الأفضل هو البدء من أعلى التسلسل الهرمي. ثم إذا كنت بحاجة إلى مرونة إضافية لسبب ما أنزل اسفل التسلسل الهرمي مستوى واحد.

هنا سوف نعمل على أعلى مستوى في التسلسل الهرمي ل Tensorflow باستخدام  Estimator API.

الخطوات العملية المتبعة في هذا الدرس العملي

  1. تحميل البيانات الخام raw data
  2. اكتب كود Tensorflow
    1. تحديد Feature Columns
    2. انشاء Estimator
    3. انشاء وظيفة Input
    4. انشاء وظيفة Serving
    5. انشاء وظيفة التدريب والتقييم Train و Eval
  3. كود ال Package
  4. التدزيب
  5. فحص النتائج
  6. نشر النموذج
  7. الحصول على التوقعات

1) تحميل البيانات الخام raw data

معاني الأعمدة:

  1. اCRIM: نصيب الفرد من معدل الجريمة حسب المدينة
  2. ZN: نسبة الأراضي السكنية المخصصة لكثير من أكثر من 25000 قدم مربع.
  3. INDUS: نسبة الأعمال التجارية غير المباعة لكل فدان في المدينة
  4. CHAS: متغير نهر تشارلز الوهميCharles River dummy variable و (= 1 إذا كان المسالك حدود النهرif tract bounds river ؛ 0 على خلاف ذلك)
  5. أNOX: تركيز أكاسيد النيتريك (أجزاء لكل 10 ملايين)
  6. RM: متوسط ​​عدد الغرف لكل مسكن
  7. AGE: نسبة الوحدات التي يشغلها مالكوها والتي بنيت قبل عام 1940
  8. DIS: المسافات المرجحة إلى خمسة مراكز توظيف في بوسطن
  9. RAD: مؤشر إمكانية الوصول إلى الطرق السريعة القطرية
  10. TAX: معدل ضريبة القيمة الكاملة لكل 10000 دولار
  11. PTRATIO: نسبة التلاميذ إلى المعلمين حسب المدينة
  12. MEDV: القيمة المتوسطة للمنازل التي يشغلها مالكوها

2) كتابة كود Tensorflow

2.A تحديد Feature Columns

2.B تحديد ال Estimator

2.C تحديد وظيفة الإدخال Define Input Function

2.D تحديد وظيفة خدمة الإدخال Define Serving Input Function

2.E تحديد وظيفة التديب والتقييم Define Train and Eval Function

3) كود الحزمة Package Code

لجعل الاكواد اعلاه متوافقة مع Cloud ML Engine ، سنقوم بدمج كود tensorflow أعلاه في ملف python واحد مع تغييرين بسيطين

  1. أضف بعض التعليمات البرمجية المطلوبة لـ gcloud.
  2. استخدم الدالة learn_runner.run () لتشغيل التجربة

نضيف أيضًا ملفًا فارغًا __init__.py إلى المجلد. هذه ليست سوى اتفاقية python لتحديد modules.

هنا نفس الأكواد السابقة مع إضافة التعديلات اللازمة للعمل على السحابة Cloud ML Engine

4) التدريب Train

يمكننا استدعاء الكود اعلاه باستخدام أداة سطر الأوامر gcloud لتشغيل التدريب.

تذكر : مجموعة البيانات لدينا صغيرة جدًا ونموذجنا بسيط .
ستلاحظ أن التدريب السحابي VM الفرديsingle VM cloud training يستغرق وقتًا أطول من التدريب المحليlocal training ، بينما يستغرق التدريب السحابي الموزع distributed cloud training وقتًا أطول من السحاب VM السحابي single VM cloud. وستلاحظ ذلك في مجموعات البيانات الكبيرة والنماذج الأكثر تعقيدًا.

تعيين متغيرات البيئة Set Environment Vars

سننشئ متغيرات البيئة لاسم مشروعنا GCS Bucket ولذلك لنستخدمها في الأوامر المستقبلية.

– التشغيل المحلي Run local

– التشغيل على السحابة وحدة واحدة
(Run on cloud (1 cloud ML unit

أولا نحدد أي مشروع سنستخدم

ثم حدد GCS bucket وايضا job name. اسم ال job يجب ان يكود فريدا لذا اضفنا التاريخ والوقت له

– التدريب الموزع على السحابة 10 وحدات
(Run on cloud (10 cloud ML units

لأننا نستخدم واجهة TF Estimators ، فإن الحوسبة الموزعة تعمل و التغيير الوحيد الذي نحتاج من اجل تشغيله بطريقة موزعة هو إضافة scale-tier argument . تقوم خدمة Cloud ML Engine بعد ذلك بتوزيع التدريب عبر الأجهزة.

– التدريب على GPU وحدة المعالجة الرسومية
(Run on cloud GPU (3 cloud ML units

يتوافق “BASIC_GPU” مع Tesla K80. تكلفة 1 GPU مثل 3 وحدات سحابة ML.

– للمشاريع الكبيرة التدريب على GPUs متعدده
(Run on 8 cloud GPUs (24 cloud ML units

يمكنك اختيار تدريب عبر وحدات معالجة الرسومات GPUs متعددة ، يمكنك استخدام فئة مخصص custom scale tier.

5) فحص النتائج باستخدام Tensorboard

Tensorboard هي أداة تسمح لك بتصور نتائجك. يمكنك استخدامها لتقيم النتائج وفحصها.

6) نشر النموذج ليكون جاهر للتنبؤ

لدى Cloud ML Engine خدمة تنبؤ تربط نموذج tensorflow الخاص بنا مع واجهة برمجة تطبيقات REST API  وتسمح بالحصول على توقعات عن بُعد.
ملاحظة :يمكنك نشر النموذج من واجهة المستخدم الرسومية لـ Google Cloud Console ، أو يمكنك استخدام أداة سطر الأوامر gcloud.
سوف نستخدم الطريقة الأخيرة. لاحظ أن هذا سيستغرق ما يصل إلى 5 دقائق.

7) الحصول على التوقعات

هناك نوعان في خدمة ML Engine Prediction: الدفعة وعبر الإنترنت Batch and online.

يعد التنبؤ online أكثر ملاءمة للطلبات الحساسة لزمن الوصول كالتي تحتاج إرجاع النتائج بسرعة وبشكل متزامن. ويعد التنبؤ بالدُفعات Batch أكثر ملاءمة لطلبات التنبؤ الكبيرة والتي نحتاج تشغيلها كم مرة في اليوم فقط. خدمات التنبؤ تستخدم طلبات بتنسيق JSON لذا سنقوم أولاً بإنشاء ملف JSON يحتوي على اثنين من سجلات البيوت.

الان أكتب هذا الأمر للحصول على التوقعات

انتهى .. ولله الحمد

ترجمة من مختبر على Qwiklabs