يتمثل أحد جوانب السيناريو في إنشاء نموذج للتعلم الآلي. يجب أن تكون قابلة للاستخدام في العالم الحقيقي ومتاحة للمستهلكين والمطورين.
الطريقة الأبسط والأكثر شيوعًا لنشر نماذج التعلم الآلي هي تضمينها في واجهة برمجة تطبيقات REST.
مع مكتبة شهيرة تسمى FastAPI ، هذا بالضبط ما سنحققه اليوم.
لكن ما هو FastAPI?
تم إنشاء إطار عمل الويب FastAPI Python من الألف إلى الياء للاستفادة من إمكانات Python المعاصرة.
بالنسبة للاتصال غير المتزامن والمتزامن مع العملاء ، فإنه يلتزم بمعيار ASGI ، بينما يمكنه أيضًا استخدام WSGI.
يمكن أن تستخدم كل من نقاط النهاية والمسارات وظائف غير متزامنة. بالإضافة إلى ذلك ، يتيح FastAPI إنشاء تطبيقات ويب منتجة في كود Python معاصر ونظيف ومُلمح من النوع.
حالة الاستخدام الرئيسية لـ FastAPI ، كما يوحي الاسم ، هي إنشاء نقاط نهاية API.
استخدام معيار OpenAPI ، والذي يتضمن واجهة مستخدم Swagger تفاعلية ، أو توفير بيانات قاموس Python مثل JSON هما طريقتان بسيطتان لتحقيق ذلك. ومع ذلك ، FastAPI ليس فقط لواجهات برمجة التطبيقات.
يمكن استخدامه لتقديم صفحات ويب قياسية باستخدام محرك قالب Jinja2 ولخدمة التطبيقات التي تستخدم WebSockets ، بالإضافة إلى كل شيء تقريبًا يمكن أن يقوم به إطار عمل الويب.
في هذه المقالة ، سنطور نموذجًا مباشرًا للتعلم الآلي ثم نستخدم FastAPI لنشره. هيا نبدأ.
تثبيت FastAPI وإنشاء أول واجهة برمجة تطبيقات
يلزم تثبيت المكتبة وخادم ASGI أولاً ؛ سيعمل إما Uvuicorn أو Hypercorn. يعمل عن طريق إدخال الأمر التالي في Terminal:
الآن وقد تم إنشاء API ، يمكنك استخدام محرر الكود المفضل لديك وتصفحه. قم بإنشاء برنامج نصي بلغة Python يسمى ml_model.py للبدء. مرحبًا بك لإعطاء اسمك اسمًا مختلفًا ، ولكن من أجل هذا المنشور ، سأشير إلى هذا الملف باسم ml_model.py.
لإنشاء واجهة برمجة تطبيقات مباشرة بنقطتي نهاية ، يجب عليك إكمال المهام التالية:
- قم باستيراد مكتبات FastAPI و Uvicorn.
- قم بإعداد مثيل فئة FastAPI.
- قم بتعريف المسار الأول ، الذي ينتج ، في صفحة الفهرس ، كائن JSON مباشرًا.
- قم بتعريف المسار الثاني ، الذي يوفر كائن JSON مباشرًا برسالة مخصصة. يتم أخذ معلمة الاسم مباشرة من عنوان URL (على سبيل المثال ، https://127.0.0.1:8000/Jay).
- استخدم Uvicorn لتشغيل API.
يتم عرض تنفيذ هذه المراحل الخمس في الجزء التالي من التعليمات البرمجية مثل. إنشاء واجهة برمجة تطبيقات بسيطة
كله تمام! دعنا نطلق API الخاص بنا على الفور. افتح نافذة طرفية بجوار ملف ml model.py لإنجاز ذلك. بعد ذلك ، أدخل ما يلي:
مفتاح Enter. قبل المضي قدمًا ، دعنا نفضح هذا التأكيد. يستخدم التطبيق الأول اسم ملف Python وحده ، بدون الامتداد. يجب أن يحمل التطبيق الثاني نفس اسم مثيل FastAPI.
باستخدام -Reload ، فإنك تخبر API أنك تريد إعادة تحميلها تلقائيًا عند حفظ الملف بدلاً من البدء من نقطة الصفر.
الآن قم بتشغيل المتصفح وانتقل إلى https://127.0.0.1:8000 ؛ يجب أن تظهر النتيجة على النحو التالي:
أنت الآن تفهم كيفية إنشاء واجهة برمجة تطبيقات بسيطة باستخدام FastAPI.
بناء وتدريب نموذج التعلم الآلي
بدون جمع أو تحليل أي بيانات ، سنقوم فقط بتدريب نموذج بسيط. هذه ليست مرتبطة بنشر النماذج وليست ضرورية للموضوع المطروح.
يمكن تثبيت نموذج يعتمد على مجموعة بيانات Iris باستخدام نفس النموذج الشبكة العصبية طريقة التثبيت.
وسنفعل ذلك فقط: قم بتنزيل ملف مجموعة بيانات Iris وتدريب النموذج. لن يكون ذلك سهلاً. للبدء ، أنشئ ملفًا باسم jaysmlmodel.py.
في ذلك ، ستقوم بما يلي:
- الواردات - ستحتاج إلى الباندا ، scikit-RandomForecastClassifier ، تعلم pydantic's BaseModel (ستكتشف السبب في الخطوة التالية) ، و joblib لتخزين النماذج وتحميلها.
- قم بتعريف فئة IrisSpecies التي ترث من النموذج الأساسي. تحتوي هذه الفئة فقط على الحقول اللازمة للتنبؤ بنوع زهرة واحد (المزيد عن ذلك في القسم التالي)
- أنشئ فصلًا دراسيًا. IrisModel هو تدريب نموذجي وأداة للتنبؤ.
- قم بتعريف طريقة باسم _train model داخل IrisModel. يتم استخدامه لتدريب النماذج باستخدام تقنية الغابات العشوائية. يتم إرجاع النموذج المدرب من خلال الإجراء.
- قم بتعريف وظيفة الأنواع المتوقعة داخل IrisModel. يتم استخدامه للتنبؤ بناءً على 4 عوامل إدخال (قياسات الزهرة). يتم إرجاع كل من التنبؤ (أنواع الزهور) واحتمال التنبؤ بواسطة الخوارزمية.
- قم بتغيير المُنشئ في IrisModel بحيث يقوم بتحميل مجموعة بيانات Iris وتدريب النموذج إذا كان مفقودًا من المجلد. هذا يحل مشكلة التدريب المتكرر للنماذج الجديدة. يتم استخدام مكتبة Joblib لتحميل النماذج وحفظها.
هذا هو الكود الكامل:
آمل أن تكون القائمة أعلاه والتعليقات قد جعلت من السهل فهمها على الرغم من أن هذا كان مقدارًا كبيرًا من التعليمات البرمجية التي تم إنشاؤها. الآن وقد تم تطوير هذا النموذج ، فلننشر إمكانيات التنبؤ الخاصة به على نطاق REST API.
إنشاء واجهة برمجة تطبيقات REST كاملة
ارجع إلى ملف ml_model.py وامسح جميع البيانات. سيكون النموذج المعياري في الأساس مماثلاً لما كان لديك من قبل ، ولكن يجب أن نبدأ من جديد بملف فارغ.
ستحدد نقطة نهاية واحدة فقط هذه المرة ، وهي النقطة المستخدمة لتحديد نوع الزهرة. يتم استدعاء نوع IrisModel.predict () ، الذي تم الإعلان عنه في القسم السابق ، من خلال نقطة النهاية هذه لتنفيذ التنبؤ.
نوع الطلب هو التغيير الكبير الآخر. من أجل إرسال المعلمات في JSON بدلاً من URL ، يوصى باستخدام POST عند استخدام آلة التعلم واجهات برمجة التطبيقات.
قد تبدو الجملة أعلاه وكأنها رطانة إذا كنت عالم البيانات، لكن هذا جيد. لتصميم النماذج ونشرها ، لا يحتاج المرء بالضرورة إلى أن يكون خبيرًا في طلبات HTTP وواجهات برمجة تطبيقات REST.
مهام ml model.py قليلة ومباشرة:
- يجب عليك استيراد ما يلي من ملف jaymlmodel.py الذي تم إنشاؤه مسبقًا: uvicorn و FastAPI و IrisModel و IrisSpecies.
- إنشاء مثيلات FastAPI و IrisModel.
- قم بتعريف دالة على https://127.0.0.1:8000/predict لعمل تنبؤات.
- تستقبل طريقة IrisModel.predict الأنواع () كائنًا من النوع IrisSpecies ، وتحوله إلى قاموس ، ثم تعيده. المرتجعات هي الفئة المتوقعة والاحتمال المتوقع.
- استخدم uvicorn لتنفيذ واجهة برمجة التطبيقات.
مرة أخرى ، إليك رمز الملف بالكامل مع تعليقاته:
هذا كل ما عليك فعله. في الخطوة التالية ، دعنا نختبر API.
اختبار API
أعد إدخال السطر التالي في Terminal لتنفيذ واجهة برمجة التطبيقات: uvicorn ml_model: app –reload
هكذا تظهر صفحة التوثيق:
هذا كل شيء لهذا اليوم. في الجزء التالي ، دعنا نختتم.
وفي الختام
اليوم ، تعلمت ما هو FastAPI وكيفية استخدامه ، باستخدام مثال بسيط لواجهة برمجة التطبيقات ومثال بسيط للتعلم الآلي. لقد تعلمت أيضًا كيفية إنشاء وعرض وثائق API ، وكذلك كيفية اختبارها.
هذا كثير لقطعة واحدة ، لذلك لا تتفاجأ إذا استغرق الأمر بضع قراءات لفهمها بشكل صحيح.
ترميز سعيد.
اترك تعليق