شعار زيفيرنت

نصائح وحيل لنشر Deep Learning Webapp على Heroku Cloud

التاريخ:

صورة المؤلف.

Heroku تشتهر السحابة بين مطوري الويب وهواة التعلم الآلي. يوفر النظام الأساسي طرقًا سهلة لنشر تطبيق الويب وصيانته ، ولكن إذا لم تكن معتادًا على نشر تطبيقات التعلم العميق ، فقد تواجه مشكلات في التخزين والاعتماد. سيجعل هذا الدليل عملية النشر الخاصة بك أكثر سلاسة بحيث يمكنك التركيز على إنشاء تطبيقات ويب مذهلة. سنتعرف على تكامل DVC ، والنشر المستند إلى Git & CLI ، ورمز الخطأ H10 ، واللعب مع حزم Python ، وتحسين التخزين.

النشر المستند إلى Git & CLI

يمكن نشر تطبيق Streamlit باستخدام git أو تكامل GitHub أو باستخدام Docker. يعد النهج القائم على git طريقة أسرع وأسهل لنشر أي تطبيق بيانات على خادم Heroku.

بسيط قائم على بوابة

يمكن نشر تطبيق Streamlit باستخدام:

git remote إضافة heroku https: // heroku:[البريد الإلكتروني محمي]/.git git push -f heroku HEAD: master 

لكي ينجح هذا ، فأنت بحاجة إلى:

  • مفتاح Heroku API
  • تطبيق Heroku: إما عن طريق CLI أو باستخدام الموقع.
  • مشروع قائم على بوابة
  • ملف تعريفي

على أساس CLI

النشر المستند إلى CLI أساسي وسهل التعلم.

صورة المؤلف.

  1. إنشاء مجاني حساب Heroku هنا.
  2. قم بتثبيت Heroku CLI باستخدام هذا الصفحة .
  3. إما استنساخ مستودع بعيد أو استخدام الخطوة الأولى
  4. النوع تسجيل الدخول heroku و heroku إنشاء تطبيق dagshub-pc-pc. سيؤدي هذا إلى تسجيل دخولك إلى الخادم وإنشاء تطبيق على خادم الويب.
  5. الآن إنشاء ملف تعريفي تحتوي على أوامر تشغيل التطبيق: الويب: Streamlit run –server.port $ PORT streamlit_app.py
  6. أخيرًا ، قم بالالتزام ودفع الكود إلى خادم heroku git دفع heroku سيد

PORT

إذا كنت تقوم بتشغيل التطبيق مع تشغيل app.py سينتج رمز خطأ H10 وهو ما يعني بورت $ المعين من قبل الخادم لم يستخدمه تطبيق Streamlit.

أنت بحاجه إلى:

  • اضبط المنفذ باستخدام Heroku CLI
تكوين heroku: تعيين PORT = 8080 
  • قم بإجراء تغييرات في ملف ملف تعريفي وإضافة منفذ الخادم في الوسائط.
الويب: Streamlit run --server.port $ PORT app.py 

تعديل حزم بايثون

استغرق هذا الجزء يومين لتصحيح الأخطاء حيث تأتي سحابة Heroku بحدود 2 ميغا بايت ، والجديد TensorFlow العبوة 489.6 ميجا بايت. لتجنب التبعيات ومشكلات التخزين ، نحتاج إلى إجراء تغييرات في المتطلبات. xt ملف:

  1. أضف tensorflow- وحدة المعالجة المركزية بدلاً من tensorflow الذي سيقلل حجم سبيكة لدينا من 765 ميغا بايت إلى 400 ميغا بايت.
  2. أضف opencv-python-مقطوعة الرأس بدلاً من opencv-python لتجنب تثبيت التبعيات الخارجية. سيؤدي ذلك إلى حل جميع أخطاء السيرة الذاتية.
  3. قم بإزالة كافة الحزم غير الضرورية باستثناء حزم وسادة و انسيابي.

تكامل DVC

صورة المؤلف.

هناك بضع خطوات مطلوبة لسحب البيانات بنجاح من خادم DVC.

  1. أولاً ، سنقوم بتثبيت ملف buildpack سيسمح ذلك بتثبيت ملفات apt باستخدام Heroku API
حزم بناء heroku: add --index 1 heroku-community / apt 
  1. قم بإنشاء اسم ملف أبتفيل وإضافة أحدث إصدار DVC https://github.com/iterative/dvc/releases/download/2.8.3/dvc_2.8.3_amd64.deb
  2. في الخاص app.py أضف الملف سطورًا إضافية من التعليمات البرمجية:
استيراد نظام التشغيل إذا كان "DYNO" في os.environ و os.path.isdir (". dvc"): os.system ("dvc config core.no_scm true") إذا كان os.system (f "dvc pull")! = 0 : exit ("فشل سحب dvc") os.system ("rm -r .dvc .apt / usr / lib / dvc") 

بعد ذلك ، التزم وادفع الكود الخاص بك إلى خادم Heroku. عند النشر الناجح ، سيقوم التطبيق تلقائيًا بسحب البيانات من خادم DVC.

تحسين التخزين

هناك عدة طرق لتحسين التخزين ، وأكثرها شيوعًا هو استخدام Docker. باستخدام طريقة docker ، يمكنك تجاوز حد 500 ميجابايت ، ولديك أيضًا حرية تثبيت أي تكامل أو حزم تابعة لجهة خارجية. لمعرفة المزيد حول كيفية استخدام عامل الإرساء ، تحقق من هذا توجيه.

لتحسين التخزين:

  • قم فقط بإضافة نماذج مكتبات python للاستدلال في Requemnets.txt
  • يمكننا سحب البيانات الانتقائية من DVC باستخدام
سحب dvc {model} {sample_data1} {sample_data2} .. 
  • نحتاج فقط إلى ملف استدلال نموذجي ، لذا أضف بقية الملفات إلى .slugignore، والذي يعمل بشكل مشابه لـ .gitignore. لمعرفة المزيد ، تحقق من مترجم سبيكة.
  • حذف .dvc و .apt / usr / lib / dvc الدلائل بعد سحب البيانات بنجاح من الخادم.

نتائج

كان الحجم الأولي للارتفاع 850 ميجابايت ، ولكن مع تحسينات التخزين والحزمة ، تم تقليل الحجم النهائي للارتفاع إلى 400 ميجابايت. لقد حللنا رمز الخطأ H10 بأمر بسيط وأضفنا حزمة opencv-python-headless لحل مشكلات التبعية. تم إنشاء هذا الدليل للتغلب على بعض المشاكل الشائعة التي يواجهها المبتدئون على خوادم Heroku.

• القائم على عامل ميناء يمكن للنشر أن يحل الكثير من مشاكل التخزين ، ولكنه يأتي مع عملية نشر بطيئة. يمكنك استخدام حاوية heroku: دفع الويب ، ولكن قبل ذلك ، تحتاج إلى إنشاء عامل الإرساء واختباره وحل جميع المشكلات محليًا قبل أن تتمكن من دفعه. هذه الطريقة مفضلة من قبل مستخدمي Heroku المتقدمين.

التحدي التالي هو نشر تطبيق الويب الخاص بك باستخدام webhook. سيسمح لنا ذلك بأتمتة نظام التعلم الآلي بالكامل من أي نظام أساسي. ستشمل عملية الأتمتة إنشاء خادم ويب Flask بسيط يقوم بتشغيل أوامر shell.

مصادر إضافية

المصدر: https://www.kdnuggets.com/2021/12/tips-tricks-deploying-dl-webapps-heroku.html

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة