قم بتشغيل الاستدلال متعدد النماذج وتحسينه باستخدام نقاط النهاية متعددة النماذج من Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

قم بتشغيل الاستدلال متعدد النماذج وتحسينه باستخدام نقاط النهاية متعددة النماذج من Amazon SageMaker

الأمازون SageMaker تمكّنك نقطة النهاية متعددة النماذج (MME) من نشر واستضافة نماذج متعددة بشكل فعال من حيث التكلفة في نقطة نهاية واحدة ثم قياس نقطة النهاية أفقيًا لتحقيق المقياس. كما هو موضح في الشكل التالي ، يعد هذا أسلوبًا فعالًا لتنفيذ نماذج متعددة الإيجار داخل البنية التحتية للتعلم الآلي (ML). لقد رأينا البرمجيات كخدمة (SaaS) تستخدم الشركات هذه الميزة لتطبيق التخصيص المفرط في نماذج ML الخاصة بهم مع تحقيق تكاليف أقل.

للحصول على نظرة عامة عالية المستوى حول كيفية عمل MME ، تحقق من مقطع فيديو AWS Summit الارتقاء بمستوى ML إلى المستوى التالي: استضافة آلاف النماذج على SageMaker. لمعرفة المزيد حول حالات الاستخدام المفرطة الشخصية والمتعددة المستأجرين التي تتيحها MME ، يرجى الرجوع إلى كيفية توسيع نطاق استدلال التعلم الآلي لحالات استخدام SaaS متعددة المستأجرين.

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

حالات الاستخدام الأنسب لـ MME

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

تم تصميم MME أيضًا لنماذج الاستضافة المشتركة التي تستخدم نفس إطار عمل ML لأنها تستخدم الحاوية المشتركة لتحميل نماذج متعددة. لذلك ، إذا كان لديك مزيج من أطر عمل تعلم الآلة في أسطولك النموذجي (مثل PyTorch و TensorFlow) ، فإن نقاط النهاية المخصصة من SageMaker أو الاستضافة متعددة الحاويات هي الخيار الأفضل.

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

لقد رأينا أيضًا بعض السيناريوهات حيث يقوم العملاء بنشر مجموعة MME بسعة ذاكرة مجمعة كافية لتناسب جميع نماذجهم ، وبالتالي تجنب تفريغ النموذج تمامًا مع استمرار تحقيق وفورات في التكاليف بسبب البنية التحتية للاستدلال المشترك.

نموذج حاويات التقديم

عند استخدام مجموعة أدوات الاستدلال SageMaker أو حاوية تخدم طراز SageMaker المصممة مسبقًا والمتوافقة مع MME ، فإن الحاوية الخاصة بك تحتوي على خادم متعدد النماذج (عملية JVM) قيد التشغيل. أسهل طريقة لدمج خادم متعدد النماذج (MMS) في حاوية تقديم النموذج الخاص بك هو استخدامها حاويات تخدم نموذج SageMaker متوافق مع MME (ابحث عن أولئك الذين لديهم نوع الوظيفة = الاستدلال و CPU / GPU = CPU). MMS هي أداة مفتوحة المصدر وسهلة الاستخدام لخدمة نماذج التعلم العميق. يوفر واجهة برمجة تطبيقات REST مع خادم ويب لخدمة وإدارة نماذج متعددة على مضيف واحد. ومع ذلك ، ليس من الضروري استخدام رسائل الوسائط المتعددة ؛ يمكنك تنفيذ نموذج الخادم الخاص بك طالما أنه يطبق الامتداد واجهات برمجة التطبيقات المطلوبة من قبل MME.

عند استخدامها كجزء من النظام الأساسي MME ، يتم توجيه جميع مكالمات API إلى MMS أو خادم النموذج الخاص بك وتحميلها وإلغاء تحميلها من خلال وحدة تحكم مستوى بيانات MME. يتم إجراء مكالمات API من وحدة التحكم في مستوى البيانات عبر المضيف المحلي فقط لمنع الوصول غير المصرح به من خارج المثيل. تتمثل إحدى الفوائد الرئيسية لـ MMS في أنها تتيح واجهة موحدة لتحميل النماذج وتفريغها واستدعاءها مع التوافق عبر مجموعة واسعة من أطر التعلم العميق.

التكوين المتقدم لرسائل الوسائط المتعددة

إذا اخترت استخدام MMS لخدمة النموذج ، ففكر في التكوينات المتقدمة التالية لتحسين قابلية التوسع والإنتاجية لمثيلات MME الخاصة بك.

زيادة توازي الاستدلال لكل نموذج

تقوم MMS بإنشاء عملية عامل Python واحدة أو أكثر لكل نموذج بناءً على قيمة ملف العمال_الافتراضيون معلمة التكوين. يتعامل هؤلاء العاملون في Python مع كل طلب استنتاج فردي عن طريق تشغيل أي وظائف معالجة مسبقة وتنبؤ وما بعد المعالجة التي تقدمها. لمزيد من المعلومات ، راجع معالج خدمة مخصص GitHub الريبو.

يزيد وجود أكثر من عامل نموذج واحد من توازي التنبؤات التي يمكن أن يقدمها نموذج معين. ومع ذلك ، عندما يتم استضافة عدد كبير من النماذج على مثيل به عدد كبير من وحدات المعالجة المركزية (CPU) ، يجب عليك إجراء اختبار تحميل لـ MME الخاص بك للعثور على القيمة المثلى لـ default_workers_per_model لمنع أي ذاكرة أو استنفاد موارد وحدة المعالجة المركزية.

تصميم لارتفاعات المرور

تحتوي كل عملية MMS داخل مثيل نقطة النهاية على قائمة انتظار طلبات يمكن تهيئتها باستخدام job_queue_size المعلمة (الافتراضي هو 100). يحدد هذا عدد الطلبات التي ستضعها رسائل الوسائط المتعددة في قائمة الانتظار عندما تكون جميع عمليات العاملين مشغولة. استخدم هذه المعلمة لضبط استجابة مثيلات نقطة النهاية الخاصة بك بعد أن تقرر العدد الأمثل للعمال لكل نموذج.

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

تعظيم موارد الذاكرة لكل مثيل

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

تعيين قيم للتكوينات المتقدمة MMS

تستخدم MMS ملف config.properties لتخزين التكوينات. تستخدم MMS الترتيب التالي لتحديد موقع ملف config.properties هذا:

  1. إذا كان MMS_CONFIG_FILE تم تعيين متغير البيئة ، وتحمل MMS التكوين من متغير البيئة.
  2. إذا كان --mms-config يتم تمرير المعلمة إلى MMS ، وتحميل التكوين من المعلمة.
  3. إذا كان هناك config.properties في المجلد الحالي حيث يبدأ المستخدم MMS ، يقوم بتحميل ملف config.properties ملف من دليل العمل الحالي.

إذا لم يتم تحديد أي مما سبق ، تقوم MMS بتحميل التكوين المدمج بالقيم الافتراضية.

فيما يلي مثال على سطر الأوامر لبدء MMS بملف تكوين صريح:

multi-model-server --start --mms-config /home/mms/config.properties

المقاييس الرئيسية لمراقبة أداء نقطة النهاية الخاصة بك

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

مقاييس مستوى مثيل نقطة النهاية (مقاييس MMS)

XNUMX. من قائمة قائمة مقاييس رسائل الوسائط المتعددةيمكن أن يساعدك CPUUtilization و MemoryUtilization على تقييم ما إذا كان المثيل أو مجموعة MME بالحجم المناسب أم لا. إذا كان كلا المقياسين يحتويان على نسب تتراوح بين 50-80٪ ، فإن MME الخاص بك يكون بالحجم المناسب.

عادةً ما يكون استخدام وحدة المعالجة المركزية المنخفضة واستخدام الذاكرة المرتفع مؤشرًا على مجموعة MME التي تم توفيرها بشكل زائد لأنها تشير إلى أنه لا يتم إلغاء تحميل النماذج التي يتم استدعاءها بشكل غير متكرر. قد يكون هذا بسبب وجود عدد أكبر من مثيلات نقطة النهاية المخصصة لـ MME وبالتالي تتوفر ذاكرة مجمعة أعلى من الأمثل للنماذج التي لا يتم الوصول إليها بشكل متكرر لتبقى في الذاكرة. على العكس من ذلك ، فإن ما يقرب من 100٪ من استخدام هذه المقاييس يعني أن مجموعتك غير مؤمنة بشكل كافٍ ، لذلك تحتاج إلى تعديل سياسة القياس التلقائي للمجموعة الخاصة بك.

مقاييس مستوى المنصة (مقاييس MME)

XNUMX. من قائمة القائمة الكاملة لمقاييس MME، المقياس الأساسي الذي يمكن أن يساعدك في فهم وقت استجابة طلب الاستنتاج الخاص بك هو ModelCacheHit. يوضح هذا المقياس متوسط ​​نسبة طلبات الاستدعاء التي تم تحميل النموذج لها بالفعل في الذاكرة. إذا كانت هذه النسبة منخفضة ، فهذا يشير إلى أن مجموعة MME الخاصة بك غير متوفرة نظرًا لعدم وجود سعة ذاكرة مجمعة كافية في مجموعة MME لعدد استدعاءات النماذج الفريدة ، مما يؤدي إلى إلغاء تحميل النماذج بشكل متكرر من الذاكرة.

دروس من الميدان واستراتيجيات لتحسين MME

لقد رأينا التوصيات التالية من بعض الاستخدامات واسعة النطاق لـ MME عبر عدد من العملاء.

القياس الأفقي مع مثيلات أصغر أفضل من القياس الرأسي مع مثيلات أكبر

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

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

تجنب الضرب هو مسؤولية مشتركة

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

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

لا تكن عدوانيًا مع حاوية تقوم بتعبئة عدد كبير جدًا من الطرز في حالات ذاكرة أقل وأكبر

الذاكرة ليست هي المورد الوحيد في المثيل الذي يجب أن تكون على دراية به. يمكن أن تكون الموارد الأخرى مثل وحدة المعالجة المركزية عاملاً مقيدًا ، كما هو موضح في نتائج اختبار الحمل التالية. في بعض الحالات الأخرى ، لاحظنا أيضًا أن موارد kernel الأخرى مثل معرّفات العملية يتم استنفادها في مثيل ، بسبب مجموعة من العديد من النماذج التي يتم تحميلها وإطار عمل ML الأساسي (مثل TensorFlow) الذي يتكاثر في كل نموذج والذي كان بمثابة مضاعفات متوفرة vCPUs.

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

قم بتشغيل الاستدلال متعدد النماذج وتحسينه باستخدام نقاط النهاية متعددة النماذج من Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

زمن انتقال نموذج نقطة النهاية بمثيل واحد

قم بتشغيل الاستدلال متعدد النماذج وتحسينه باستخدام نقاط النهاية متعددة النماذج من Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

استخدام وحدة المعالجة المركزية والذاكرة لنقطة نهاية واحدة

قم بتشغيل الاستدلال متعدد النماذج وتحسينه باستخدام نقاط النهاية متعددة النماذج من Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

أربعة مثيلات زمن الوصول لنموذج نقطة النهاية

قم بتشغيل الاستدلال متعدد النماذج وتحسينه باستخدام نقاط النهاية متعددة النماذج من Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

أربعة استخدام وحدة المعالجة المركزية نقطة النهاية والذاكرة

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

النموذج العقلي لتحسين MME

هناك أربعة مقاييس أساسية يجب عليك دائمًا وضعها في الاعتبار عند تحديد الحجم المناسب لـ MME:

  • عدد النماذج وحجمها
  • عدد النماذج الفريدة التي تم استدعاؤها في وقت معين
  • نوع المثيل وحجمه
  • عدد المثيل خلف نقطة النهاية

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

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

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

نبذة عامة

في هذا المنشور ، حصلت على فهم أعمق لمنصة MME. لقد تعرفت على حالات الاستخدام التقني المناسبة لـ MME وراجعت بنية منصة MME. لقد اكتسبت فهمًا أعمق لدور كل مكون داخل بنية MME والمكونات التي يمكنك التأثير بشكل مباشر على أداءها. أخيرًا ، ألقيت نظرة أعمق على معلمات التكوين التي يمكنك تعديلها لتحسين MME لحالة الاستخدام الخاصة بك والمقاييس التي يجب مراقبتها للحفاظ على الأداء الأمثل.

لتبدأ مع MME ، راجع نقاط نهاية Amazon SageMaker متعددة النماذج باستخدام XGBoost و استضف عدة نماذج في حاوية واحدة خلف نقطة نهاية واحدة.


عن المؤلف

قم بتشغيل الاستدلال متعدد النماذج وتحسينه باستخدام نقاط النهاية متعددة النماذج من Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.سيد جفري هو مهندس حلول رئيسي مع AWS. يعمل مع مجموعة من الشركات من المؤسسات متوسطة الحجم والشركات الكبيرة والخدمات المالية وموردي البرامج المستقلين لمساعدتهم على بناء وتشغيل تطبيقات AI / ML فعالة من حيث التكلفة وقابلة للتطوير في السحابة.

قم بتشغيل الاستدلال متعدد النماذج وتحسينه باستخدام نقاط النهاية متعددة النماذج من Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.سوراب تريكاندي هو مدير أول للمنتجات في Amazon SageMaker Inference. إنه متحمس للعمل مع العملاء وتحفزه هدف إضفاء الطابع الديمقراطي على التعلم الآلي. يركز على التحديات الأساسية المتعلقة بنشر تطبيقات ML المعقدة ، ونماذج ML متعددة المستأجرين ، وتحسين التكلفة ، وجعل نشر نماذج التعلم العميق أكثر سهولة. في أوقات فراغه ، يستمتع سوراب بالمشي لمسافات طويلة والتعرف على التقنيات المبتكرة واتباع TechCrunch وقضاء الوقت مع عائلته.

الطابع الزمني:

اكثر من التعلم الآلي من AWS