نشر نماذج التعلم الآلي على Heroku
نشرت: 2021-01-05التعلم الآلي هو عملية مستمرة تتضمن استخراج البيانات ، والتنظيف ، واختيار الميزات المهمة ، وبناء النموذج ، والتحقق من الصحة ، والنشر لاختبار النموذج على البيانات غير المرئية.
في حين أن مرحلة هندسة البيانات الأولية وبناء النموذج عملية شاقة إلى حد ما وتتطلب الكثير من الوقت ليتم إنفاقه مع البيانات ، فقد يبدو نشر النموذج بسيطًا ، ولكنه عملية حاسمة وتعتمد على حالة الاستخدام التي تريد استهدافها. يمكنك تلبية النموذج لمستخدمي الأجهزة المحمولة أو مواقع الويب أو الأجهزة الذكية أو من خلال أي جهاز إنترنت الأشياء آخر.
يمكن للمرء أن يختار دمج النموذج في التطبيق الرئيسي ، أو إدراجه في SDLC ، أو السحابة. هناك العديد من الاستراتيجيات لنشر النموذج وتشغيله في النظام الأساسي السحابي ، والذي يبدو خيارًا أفضل لمعظم الحالات بسبب توفر أدوات مثل Google Cloud Platform و Azure و Amazon Web Services و Heroku.
بينما يمكنك اختيار عرض النموذج بطريقة Pub / Sub ، فإن واجهة برمجة التطبيقات (Application Program Interface) أو غلاف REST تستخدم بشكل أكثر شيوعًا لنشر النموذج في الإنتاج. مع زيادة تعقيد النموذج ، يتم تعيين فرق مختلفة للتعامل مع مثل هذه المواقف المعروفة باسم مهندسي التعلم الآلي. مع هذه المقدمة الكثيرة ، دعنا نلقي نظرة على كيفية نشر نموذج التعلم الآلي كواجهة برمجة تطبيقات على منصة Heroku.
جدول المحتويات
ما هو Heroku؟
Heroku عبارة عن منصة كأداة خدمة تتيح للمطورين استضافة التعليمات البرمجية بدون خادم. ما يعنيه هذا هو أنه يمكن للمرء أن يطور نصوصًا لخدمة أحدهما أو الآخر لأغراض محددة. يتم استضافة منصة Heroku نفسها على AWS (Amazon Web Services) ، وهي بنية أساسية كأداة خدمة.
Heroku عبارة عن منصة مجانية ولكنها محدودة بوقت تشغيل يصل إلى 500 ساعة. تتم استضافة التطبيقات كدينو ينتقل بعد 30 دقيقة من عدم النشاط إلى وضع السكون. هذا يضمن أن تطبيقك لا يستهلك كل وقت الفراغ أثناء عدم النشاط. يدعم النظام الأساسي Ruby و Java و PHP و Python و Node و Go و Scala. يشير معظم مبتدئين في علوم البيانات إلى هذا النظام الأساسي للحصول على تجربة تشغيل ونشر نموذج في السحابة.

تحضير النموذج
الآن بعد أن أصبحت على دراية بهذه المنصة ، دعنا نجهز النموذج لنفسه. عندما يتم تدريب نموذج التعلم الآلي ، يتم تخزين المعلمات المقابلة في الذاكرة نفسها. يجب تصدير هذا النموذج في ملف منفصل حتى نتمكن من تحميل هذا النموذج مباشرة ، وتمرير البيانات غير المرئية ، والحصول على المخرجات.
عادةً ما يتم ممارسة تنسيقات النماذج المختلفة مثل Pickle و job-lib الذي يحول نموذج كائن Python إلى تيار بت أو ONNX أو PMML أو MOJO وهو تنسيق تصدير H20.ai ويقدم النموذج ليتم دمجه في تطبيقات Java أيضًا. للتبسيط ، ضع في اعتبارك أننا نريد تصدير النموذج عبر pickle ، ثم يمكنك القيام بذلك عن طريق:
مخلل استيراد
Pkl_Filename = "model.pkl"
مع open (Pkl_Filename، 'wb') كملف:
pickle.dump (اسم_نموذج ، ملف)
يتم الآن تخزين النموذج في ملف منفصل وجاهز لاستخدامه بشكل متكامل في واجهة برمجة التطبيقات.
منطق الخادم
لتوفير الوصول إلى هذا النموذج للتنبؤات ، نحتاج إلى رمز خادم يمكنه إعادة توجيه جميع الطلبات من جانب العميل والتعامل معها. تدعم Python أطر تطوير الويب ومن أشهرها Flask.
إنه إطار أضيق الحدود يسمح بإعداد خادم بأسطر قليلة من التعليمات البرمجية. نظرًا لأنها حزمة بسيطة ، فإن الكثير من الوظائف مثل المصادقة وطبيعة الراحة غير مدعومة بشكل صريح. يمكن دمج هذه مع الملحقات.
خيار آخر هو اختيار إطار FastAPI الذي تم إصداره حديثًا. إنه أسرع بكثير ، وقابل للتطوير ، وموثق جيدًا ، ويأتي مع الكثير من الحزم المتكاملة. في الوقت الحالي ، دعنا نستمر في استخدام القارورة لإنشاء مسار تنبؤ بسيط.
من القارورة استيراد القارورة
مخلل استيراد
التطبيق = قارورة (__ name__)
مع فتح (Filename، 'rb') كملف:
النموذج = pickle.load (ملف)

@ app.route ('/ توقع'، طرق = ['GET'، 'POST'])
def بري ():
# تنفيذ المنطق للحصول على المعلمات إما من خلال الاستعلام أو الحمولة
التنبؤ = model.predict ([تم الحصول على المعلمات])
إرجاع {'نتيجة': توقع}
هذا رمز تقريبي لإظهار كيفية المتابعة مع منطق الخادم. هناك العديد من الاستراتيجيات التي يمكنك اختيارها من أجل تنفيذ أفضل.
تحقق من: دليل لنشر نماذج ML باستخدام Streamlit
إعداد ملفات النشر
يتطلب Heroku قائمة بجميع التبعيات التي يتطلبها تطبيقنا. يسمى هذا ملف المتطلبات. إنه ملف نصي يسرد جميع المكتبات الخارجية التي يستخدمها التطبيق. في هذا المثال ، قد تحتوي محتويات الملف على:
قارورة
sklearn
مكسور </ p>
الباندا
جونيكورن
تتيح لنا المكتبة الأخيرة ، gunicorn ، إعداد تنفيذ خادم WSGI الذي يشكل واجهة العميل والخادم الذي يتعامل مع حركة مرور HTTP. يطالب Heroku أيضًا بملف آخر يُعرف باسم Procfile يُستخدم لتحديد نقطة دخول التطبيق. ضع في اعتبارك أن ملف منطق الخادم يتم حفظه بالاسم main.py ، ثم يكون الأمر المراد وضعه في هذا الملف هو:
الويب: gunicorn main: app

"الويب" هو نوع dyno الذي ننشره ، ويعمل "gunicorn" كوسيط لتمرير الطلب إلى رمز الخادم "main" والبحث عن "app" في "main". يتعامل التطبيق مع جميع المسارات هنا.
النشر النهائي
تم الانتهاء من جميع الاستعدادات ، والآن حان الوقت لتشغيل التطبيق في السحابة. قم بإنشاء حساب إذا لم يكن على Heroku ، انقر فوق إنشاء تطبيق ، واختر أي منطقة. بعد ذلك ، قم بتوصيل حساب GitHub الخاص بك ، واختر الريبو الذي يحتوي على هذه الملفات: كود الخادم ، model.pkl ، requirements.txt ، و Procfile.
بعد هذا ببساطة ضرب فرع نشر! إذا نجحت ، فانتقل إلى الرابط الذي تم إنشاؤه ويجب أن يكون تطبيقك مباشرًا. يمكنك الآن تقديم طلبات إلى طريق appname.herokuapp.com/predict ويجب أن تقدم التنبؤات. تعرف على المزيد حول نماذج التعلم الآلي.
خاتمة
كانت هذه مقدمة لما هو Heroku ، ولماذا هو مطلوب ، وكيفية نشر نموذج بمساعدة Flask. هناك الكثير من منصات الاستضافة التي تقدم ميزات أكثر تقدمًا مثل خطوط أنابيب البيانات ، والبث المباشر ، ولكن كون Heroku النظام الأساسي المجاني لا يزال خيارًا جيدًا للمبتدئين الذين يرغبون فقط في تذوق طعم النشر.
إذا كنت مهتمًا بمعرفة المزيد حول التعلم الآلي ، فراجع دبلوم PG في IIIT-B & upGrad في التعلم الآلي والذكاء الاصطناعي المصمم للمهنيين العاملين ويقدم أكثر من 450 ساعة من التدريب الصارم ، وأكثر من 30 دراسة حالة ومهمة ، IIIT- حالة الخريجين B ، أكثر من 5 مشاريع تتويجا عملية ومساعدة وظيفية مع أفضل الشركات.
ما هي عيوب استخدام منصة Heroku؟
لا يعتبر Heroku مثاليًا للمؤسسات الكبيرة نظرًا لأن وثائق النظام الأساسي ليست واسعة النطاق. هناك مشكلة أخرى وهي نظام الملفات للقراءة فقط ، مما يجعل من الصعب التعامل مع تحميلات الملفات الضخمة مثل الأفلام أو الصور عالية الدقة. Heroku هو مزود منصة كخدمة مع قدر محدود من التخصيص. تقبل Heroku المدفوعات بالدولار الأمريكي فقط وليس بعملات أخرى ، مثل اليورو. بالنسبة لأصحاب الأعمال الذين يفضلون الدفع بعملتهم الخاصة ، قد يكون هذا مصدر إزعاج بسيط. علاوة على ذلك ، داخل CRE (بيئة وقت التشغيل العامة) ، لا يوفر Heroku عناوين IP ثابتة.
كيف تختلف Heroku عن AWS؟
إجراء النشر في AWS ليس بسيطًا ، ونتيجة لذلك ، فهو ليس سهل الاستخدام بشكل خاص من حيث التعقيد. يوفر Heroku بيئة جاهزة للاستخدام سهلة التشغيل. يعد Heroku أكثر تكلفة من AWS لأنه يتطلب تدخلاً بشريًا أقل. يمكن لـ AWS التعامل مع احتياجات حسابية عالية أو عالية جدًا ، بينما يمكن لـ Heroku التعامل مع المتطلبات الحسابية المتواضعة. لا تتطلب Heroku ، بخلاف AWS ، صيانة منتظمة للبنية التحتية. تعتبر كل من AWS و Heroku سريعة للغاية عندما يتعلق الأمر بالنشر.
كم من الوقت يمكنني استخدام Heroku بدون تكلفة؟
تحتوي حسابات Heroku على مجموعة من ساعات dyno المجانية التي يمكن استخدامها في التطبيقات المجانية. يحل هذا محل الحد الأقصى البالغ 18 ساعة للبرامج المجانية ، مما يتيح لها العمل لمدة 24 ساعة في اليوم إذا لزم الأمر. تحصل الحسابات الجديدة على 550 ساعة داينو مجانية ، مع 450 ساعة إضافية إذا قمت بالتحقق من هويتك ببطاقة ائتمان. تقدم Heroku خطة مجانية لمساعدتك على تعلم التكنولوجيا والبدء. توفر العديد من إضافات Heroku خطة مجانية ، مثلها مثل Heroku Buttons و Buildpacks.