HyperAI

شرح TorchServe: 5 خطوات لنشر النماذج في بيئة الإنتاج

特色图像

  محتويات:

تم إطلاق TorchServe في أبريل 2020 ومر بأكثر من عامين من التطوير. لقد أصبح أكثر نضجًا واستقرارًا. ستقدم هذه المقالة مقدمة شاملة عن TorchServe.

تم نشر هذه المقالة لأول مرة على الحساب الرسمي لـ WeChat:مجتمع مطوري PyTorch

لمزيد من ممارسات نشر النموذج العملية باستخدام PyTorch، تفضل بزيارة openbayes.com يحصل

TorchServe هو الحل المفضل لنشر النماذج في بيئات الإنتاج في PyTorch.إنها أداة جيدة التصرف وقابلة للتوسيع تقوم بتغليف النماذج باستخدام واجهة برمجة التطبيقات HTTP أو HTTPS.

تم تنفيذ الواجهة الأمامية لـ TorchServe في Java ويمكنها التعامل مع مهام مختلفة، بما في ذلك تخصيص العمال لنشر النماذج والمسؤولية عن الاتصال بين العملاء والخوادم. يعد برنامج Python الخلفي مسؤولاً بشكل أساسي عن التعامل مع خدمة الاستدلال.

الشكل 1: نظرة عامة على عملية ضبط أداء TorchServe

بالإضافة إلى ذلك، فهو يدعم أيضًا اختبار AB، والتجميع الديناميكي، والتسجيل، وتقديم النماذج المختلفة وإصدارات المقاييس.تتضمن واجهات برمجة التطبيقات العامة الأربعة ما يلي:

* واجهة برمجة التطبيقات الاستدلالية:يمكن تكوين الاستماع على المنفذ 8080، والذي يمكن الوصول إليه عبر localhost افتراضيًا، في تكوين TorchServe، ويدعم الحصول على التوقعات من النموذج.

شرح واجهة برمجة التطبيقات:استخدم Captum تحت الغطاء لتوفير وصف للنموذج الذي يتم نشره والاستماع على المنفذ 8080.

واجهة برمجة التطبيقات للإدارة:يسمح بالتسجيل أو إلغاء التسجيل ووصف النماذج. كما يسمح للمستخدمين بزيادة أو تقليل عدد العمال الذين يتم نشر النموذج عليهم.

* واجهة برمجة تطبيقات المقاييس:بشكل افتراضي، يستمع على المنفذ 8082، مما يسمح للمستخدمين بمراقبة النموذج الذي يتم نشره.

يدعم TorchServe الاستدلال الدفعي وينشر النماذج على عمال متعددين.يتيح للمستخدمين توسيع نطاق نشر النماذج والتعامل مع حركة المرور القصوى. يمكن إجراء هذا الامتداد من خلال واجهة إدارة API والإعدادات الموجودة في ملف التكوين. بالإضافة إلى ذلك، يمكن لواجهة برمجة التطبيقات Metrics مراقبة نشر النموذج من خلال المقاييس الافتراضية والمخصصة.

الإعدادات المتقدمة الأخرى، مثل طول قائمة انتظار تلقي الطلبات، والحد الأقصى لوقت الانتظار لدفعة من المدخلات، والخصائص الأخرى،يمكن تكوين كليهما عبر ملف التكوين (الذي يمكن تمريره إلى TorchServe عند بدء التشغيل).

تتضمن خطوات نشر نموذج باستخدام TorchServe ما يلي:

1. تثبيت TorchServe وأرشيف النماذج والتبعيات الأخرى

2. حدد معالجًا افتراضيًا مناسبًا (مثل تصنيف الصورة) أو قم بإنشاء معالج مخصص

3. استخدم Torcharchive لتجميع عناصر النموذج والمعالجات في ملف واحد .مار  الملف ووضعه في متجر النماذج

4. ابدأ في نشر النموذج

5. تشغيل الاستدلال

عنوان مشروع TorchServe:

https://github.com/pytorch/serve/blob/master/README.md#install-torchserve-and-torch-model-archiver

مفاهيم TorchServe الرئيسية: المعالج

يستخدم برنامج TorchServe الخلفي معالجًا لتحميل النموذج، ومعالجة البيانات المستلمة مسبقًا، وتشغيل الاستدلال، ومعالجة الاستجابة لاحقًا. المعالج في TorchServe هو صنص بايثون، يتم تضمين جميع عمليات تهيئة النموذج، والمعالجة المسبقة، والاستدلال، ومنطق ما بعد المعالجة فيه.

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

توفر المعالجات المخصصة مرونة كبيرة.قد يؤدي هذا إلى جعل TorchServe أداة خدمة متعددة الأطر.تتيح لك المعالجات المخصصة تهيئة نموذج باستخدام منطق مخصص، كما تسمح للنموذج بتحميل النماذج من أطر عمل أخرى (مثل ONNX).

يتكون معالج TorchServe من أربع وظائف رئيسية،الوظائف ، تهيئة ، الاستدلال  و المعالجة المسبقة، كل دالة ترجع قائمة.

يعد مقتطف التعليمات البرمجية التالي مثالاً على معالج مخصص. يرث المعالج المخصص BaseHandler في TorchServe.يمكن تجاوز أي وظيفة رئيسية.يوضح هذا المثال كيفية استخدام المعالج لتحميل نموذج Detectron2 وحل مشكلة اكتشاف الشكل. تم تصدير النموذج إلى Torchscript واستخدامه  mod.half()  تشغيل الاستدلال FP16.

يحرر

المفاهيم الرئيسية لـ TorchServe: المقاييس

عند نشر نموذج في بيئة إنتاج، من المهم مراقبة أدائه. يقوم TorchServe بجمع المقاييس على مستوى النظام بشكل دوري ويسمح بإضافة مقاييس مخصصة.

تتضمن المقاييس على مستوى النظام استخدام وحدة المعالجة المركزية، ومساحة القرص والذاكرة المتوفرة والمستخدمة على المضيف، وعدد الطلبات التي تحتوي على رموز استجابة مختلفة.(على سبيل المثال 200-300، 400-500 وأعلى من 500). يمكن إضافة مقاييس مخصصة باستخدام واجهة برمجة تطبيقات المقاييس المخصصة.

واجهة برمجة تطبيقات المقاييس المخصصة:

https://github.com/pytorch/serve/blob/master/docs/metrics.md#custom-metrics-api

يسجل TorchServe هاتين المجموعتين من المقاييس في ملفات سجل مختلفة. بشكل افتراضي، يتم جمع المقاييس في:

مقاييس النظام: log_directory/ts_metrics.log

المقاييس المخصصة:دليل السجل/model_metrics.log

تستمع واجهة برمجة تطبيقات مقاييس TorchServe إلى المنفذ 8082 بشكل افتراضي وتسمح للمستخدمين بالاستعلام عن المقاييس المجمعة ومراقبتها. تعيد نقطة نهاية المقاييس الافتراضية المقاييس بتنسيق Prometheus. يمكنك الاستعلام عن المقاييس باستخدام طلبات curl، أو توجيه Prometheus Server إلى نقطة النهاية واستخدام Grafana للوحة المعلومات.

استخدم curl للاستعلام عن المقاييس:

curl http://127.0.0.1:8082/metrics

مثال على تصدير المقاييس المسجلة إلى Prometheus باستخدام mtail:https://github.com/google/mtail

من خلال تتبع هذه المقاييس في لوحة المعلومات، يمكنك مراقبة تراجعات الأداء التي قد تحدث بشكل متقطع أو يصعب اكتشافها أثناء تشغيل معايير الأداء دون اتصال بالإنترنت.

ما هو التالي

كل ما ورد أعلاه يتعلق بـ TorchServe. في القسم التالي، سنستخدم مثالاً محددًا.اشرح العوامل المحددة التي تؤثر على نشر النماذج في بيئات الإنتاج، وكيفية استخدام TorchServe لضبط تطبيق الرسومات المتحركة.

لمزيد من المواد التعليمية والدروس العملية، يرجى متابعة الحساب الرسمي:مجتمع مطوري PyTorch. لمشاهدة البرنامج التعليمي أثناء العمل، قم بزيارة openbayes.com  عملية عملية. ​