عند نشر نماذج التعلم العميق على نطاق واسع، من الضروري استخدام الأجهزة الأساسية بشكل فعال لتحقيق أقصى قدر من الأداء وفوائد التكلفة. بالنسبة لأحمال عمل الإنتاج التي تتطلب إنتاجية عالية وزمن وصول منخفض، يتم اختيار الأمازون الحوسبة المرنة السحابية يعد مثيل (EC2) ومكدس تقديم النموذج وبنية النشر أمرًا مهمًا للغاية. يمكن أن تؤدي البنية غير الفعالة إلى الاستخدام غير الأمثل للمسرعات وارتفاع تكلفة الإنتاج بشكل غير ضروري.
في هذا المنشور ، نوجهك خلال عملية نشر خوادم نموذج FastAPI على أجهزة AWS Inferentia (الموجودة في Amazon EC2 INF1 وأمازون إي سي INF2 الحالات). نوضح أيضًا استضافة نموذج نموذجي يتم نشره بالتوازي عبر جميع NeuronCores لتحقيق أقصى استفادة من الأجهزة.
حل نظرة عامة
FastAPI هو إطار ويب مفتوح المصدر لخدمة تطبيقات Python وهو أسرع بكثير من الأطر التقليدية مثل Flask وDjango. يستخدم واجهة بوابة الخادم غير المتزامنة (ASGI) بدلاً من المستخدم على نطاق واسع واجهة بوابة خادم الويب (وسجي). يقوم ASGI بمعالجة الطلبات الواردة بشكل غير متزامن على عكس WSGI الذي يعالج الطلبات بشكل تسلسلي. وهذا يجعل FastAPI الخيار الأمثل للتعامل مع الطلبات الحساسة لزمن الوصول. يمكنك استخدام FastAPI لنشر خادم يستضيف نقطة نهاية على مثيلات Inferentia (Inf1/Inf2) التي تستمع إلى طلبات العميل من خلال منفذ معين.
هدفنا هو تحقيق أعلى أداء بأقل تكلفة من خلال الاستفادة القصوى من الأجهزة. هذا يسمح لنا بمعالجة المزيد من طلبات الاستدلال بمسرعات أقل. يحتوي كل جهاز AWS Inferentia1 على أربعة NeuronCores-v1 ويحتوي كل جهاز AWS Inferentia2 على جهازي NeuronCores-v2. ال AWS نيورون يتيح لنا SDK استخدام كل من NeuronCores بالتوازي، مما يمنحنا المزيد من التحكم في تحميل واستنتاج أربعة نماذج أو أكثر بالتوازي دون التضحية بالإنتاجية.
مع FastAPI، لديك اختيارك لخادم الويب Python (Gunicorn, يوفيكورن, هايبركورن, غار). توفر خوادم الويب هذه طبقة تجريد أعلى نموذج التعلم الآلي (ML) الأساسي. يتمتع العميل الطالب بميزة كونه غافلاً عن النموذج المستضاف. لا يحتاج العميل إلى معرفة اسم النموذج أو الإصدار الذي تم نشره ضمن الخادم؛ أصبح اسم نقطة النهاية الآن مجرد وكيل لوظيفة تقوم بتحميل النموذج وتشغيله. في المقابل، في أداة العرض الخاصة بإطار عمل معين، مثل TensorFlow Serving، يعد اسم النموذج وإصداره جزءًا من اسم نقطة النهاية. إذا تغير النموذج من جانب الخادم، فيجب على العميل معرفة استدعاء API الخاص به وتغييره إلى نقطة النهاية الجديدة وفقًا لذلك. لذلك، إذا كنت تعمل باستمرار على تطوير نماذج الإصدار، كما هو الحال في اختبار A/B، فإن استخدام خادم ويب Python عام مع FastAPI يعد طريقة ملائمة لخدمة النماذج، لأن اسم نقطة النهاية ثابت.
يتمثل دور خادم ASGI في إنتاج عدد محدد من العمال الذين يستمعون لطلبات العميل ويقومون بتشغيل رمز الاستدلال. إحدى الإمكانيات المهمة للخادم هي التأكد من أن العدد المطلوب من العمال متاح ونشط. في حالة مقتل عامل، يجب على الخادم تشغيل عامل جديد. في هذا السياق ، يمكن تحديد الخادم والعاملين من خلال معرّف عملية Unix (PID). في هذا المنشور ، نستخدم ملف هايبركورن server، وهو خيار شائع لخوادم ويب Python.
في هذا المنشور، نشارك أفضل الممارسات لنشر نماذج التعلم العميق باستخدام FastAPI على AWS Inferentia NeuronCores. نوضح أنه يمكنك نشر نماذج متعددة على NeuronCores منفصلة يمكن استدعاؤها بشكل متزامن. يعمل هذا الإعداد على زيادة الإنتاجية لأنه يمكن استنتاج نماذج متعددة بشكل متزامن ويتم تحسين استخدام NeuronCore بالكامل. يمكن العثور على الكود على جيثب ريبو. يوضح الشكل التالي بنية كيفية إعداد الحل على مثيل EC2 Inf2.
تنطبق نفس البنية على نوع مثيل EC2 Inf1 باستثناء أنه يحتوي على أربعة مراكز. وهذا يغير مخطط الهندسة المعمارية قليلاً.
AWS Inferentia NeuronCores
دعنا نتعمق قليلاً في الأدوات التي توفرها AWS Neuron للتفاعل مع NeuronCores. توضح الجداول التالية عدد NeuronCores في كل نوع مثيل Inf1 و Inf2. تتم مشاركة vCPUs المضيفة وذاكرة النظام عبر جميع NeuronCores المتوفرة.
حجم المثيل | # مسرعات الاستدلال | # نيورون كور-v1 | وحدات المعالجة المركزية الافتراضية | الذاكرة (جيجابايت) |
Inf1.xlarge | 1 | 4 | 4 | 8 |
Inf1.2xlarge | 1 | 4 | 8 | 16 |
Inf1.6xlarge | 4 | 16 | 24 | 48 |
Inf1.24xlarge | 16 | 64 | 96 | 192 |
حجم المثيل | # مسرعات الاستدلال | # نيورون كور-v2 | وحدات المعالجة المركزية الافتراضية | الذاكرة (جيجابايت) |
Inf2.xlarge | 1 | 2 | 4 | 32 |
Inf2.8xlarge | 1 | 2 | 32 | 32 |
Inf2.24xlarge | 6 | 12 | 96 | 192 |
Inf2.48xlarge | 12 | 24 | 192 | 384 |
تحتوي مثيلات Inf2 على NeuronCores-v2 الجديد مقارنةً بـ NeuronCore-v1 في مثيلات Inf1. على الرغم من عدد النوى الأقل، إلا أنها قادرة على تقديم إنتاجية أعلى بمقدار 4 مرات وزمن وصول أقل بمقدار 10 مرات مقارنة بمثيلات Inf1. تعتبر مثيلات Inf2 مثالية لأحمال عمل التعلم العميق مثل الذكاء الاصطناعي التوليدي ونماذج اللغات الكبيرة (LLM) في عائلة OPT/GPT ومحولات الرؤية مثل Stable Diffusion.
يعد Neuron Runtime مسؤولاً عن تشغيل النماذج على أجهزة Neuron. تحدد Neuron Runtime أي من NeuronCore سيشغل النموذج وكيفية تشغيله. يتم التحكم في تكوين Neuron Runtime من خلال استخدام متغيرات البيئة على مستوى العملية. بشكل افتراضي ، ستهتم امتدادات إطار عمل Neuron بتكوين Neuron Runtime نيابة عن المستخدم ؛ ومع ذلك ، فإن التكوينات الصريحة ممكنة أيضًا لتحقيق سلوك محسن أكثر.
هناك متغيران شائعان للبيئة NEURON_RT_NUM_CORES
و NEURON_RT_VISIBLE_CORES
. باستخدام متغيرات البيئة هذه، يمكن ربط عمليات بايثون بـ NeuronCore. مع NEURON_RT_NUM_CORES
، يمكن حجز عدد محدد من النوى لعملية ما NEURON_RT_VISIBLE_CORES
، يمكن حجز مجموعة من NeuronCores. على سبيل المثال، NEURON_RT_NUM_CORES=2 myapp.py
سوف نحتفظ اثنين من النوى و NEURON_RT_VISIBLE_CORES=’0-2’ myapp.py
سوف نحتفظ بصفر وواحد واثنين من النوى myapp.py
. يمكنك حجز NeuronCores عبر الأجهزة (شرائح AWS Inferentia) أيضًا. لذا، NEURON_RT_VISIBLE_CORES=’0-5’ myapp.py
سوف نحتفظ النوى الأربعة الأولى على device1
ونواة واحدة على device2
في نوع مثيل Ec2 Inf1. وبالمثل ، في نوع مثيل EC2 Inf2 ، سيحجز هذا التكوين محورين عبر device1
و device2
ونواة واحدة على device3
. ويلخص الجدول التالي تكوين هذه المتغيرات.
الاسم | الوصف | النوع | القيم المتوقعة | القيمة الافتراضية | نسخة RT |
NEURON_RT_VISIBLE_CORES |
مجموعة من النوى العصبية المحددة التي تحتاجها العملية | نطاق عدد صحيح (مثل 1-3) | أي قيمة أو نطاق بين 0 إلى Max NeuronCore في النظام | بدون اضاءة | +2.0 |
NEURON_RT_NUM_CORES |
عدد الخلايا العصبية التي تتطلبها العملية | عدد صحيح | قيمة من 1 إلى Max NeuronCore في النظام | 0، والذي يتم تفسيره على أنه "الكل" | +2.0 |
للحصول على قائمة بجميع متغيرات البيئة، راجع تكوين وقت تشغيل الخلايا العصبية.
افتراضيًا، عند تحميل النماذج، يتم تحميل النماذج على NeuronCore 0 ثم NeuronCore 1 ما لم يتم النص صراحةً على ذلك بواسطة متغيرات البيئة السابقة. كما هو محدد سابقًا، تقوم NeuronCores بمشاركة وحدات المعالجة المركزية الافتراضية المضيفة المتوفرة وذاكرة النظام. ولذلك، فإن النماذج المنشورة في كل NeuronCore سوف تتنافس على الموارد المتاحة. لن تكون هذه مشكلة إذا كان النموذج يستخدم NeuronCores إلى حد كبير. ولكن إذا كان النموذج يعمل جزئيًا فقط على NeuronCores والباقي على وحدات المعالجة المركزية الافتراضية المضيفة، فإن مراعاة توفر وحدة المعالجة المركزية لكل NeuronCore يصبح أمرًا مهمًا. وهذا يؤثر على اختيار المثيل أيضًا.
يعرض الجدول التالي عدد وحدات المعالجة المركزية الافتراضية (vCPU) المضيفة وذاكرة النظام المتاحة لكل نموذج إذا تم نشر نموذج واحد على كل NeuronCore. اعتمادًا على استخدام NeuronCore لتطبيقك ووحدة المعالجة المركزية الافتراضية واستخدام الذاكرة، يوصى بإجراء اختبارات لمعرفة التكوين الأكثر أداءً لتطبيقك. ال أداة Neuron Top يمكن أن يساعد في تصور الاستخدام الأساسي واستخدام ذاكرة الجهاز والمضيف. وبناء على هذه المقاييس يمكن اتخاذ قرار مستنير. نعرض استخدام Neuron Top في نهاية هذه المدونة.
حجم المثيل | # مسرعات الاستدلال | # عارضات ازياء | وحدات المعالجة المركزية الافتراضية/النموذج | الذاكرة / الموديل (جيجابايت) |
Inf1.xlarge | 1 | 4 | 1 | 2 |
Inf1.2xlarge | 1 | 4 | 2 | 4 |
Inf1.6xlarge | 4 | 16 | 1.5 | 3 |
Inf1.24xlarge | 16 | 64 | 1.5 | 3 |
حجم المثيل | # مسرعات الاستدلال | # عارضات ازياء | وحدات المعالجة المركزية الافتراضية/النموذج | الذاكرة / الموديل (جيجابايت) |
Inf2.xlarge | 1 | 2 | 2 | 8 |
Inf2.8xlarge | 1 | 2 | 16 | 64 |
Inf2.24xlarge | 6 | 12 | 8 | 32 |
Inf2.48xlarge | 12 | 24 | 8 | 32 |
لاختبار ميزات Neuron SDK بنفسك ، تحقق من الأحدث قدرات الخلايا العصبية لPyTorch.
إعداد النظام
فيما يلي إعداد النظام المستخدم لهذا الحل:
جهز الحل
هناك بعض الأشياء التي يتعين علينا القيام بها لإعداد الحل. ابدأ بإنشاء دور IAM الذي سيفترضه مثيل EC2 الخاص بك والذي سيسمح له بالدفع والسحب منه سجل الأمازون المرنة للحاويات.
الخطوة 1: إعداد دور IAM
- ابدأ بتسجيل الدخول إلى وحدة التحكم والوصول إلى IAM > الأدوار > إنشاء دور
- حدد نوع الكيان الموثوق به
AWS Service
- حدد EC2 كخدمة ضمن حالة الاستخدام
- انقر التالى وستتمكن من رؤية جميع السياسات المتاحة
- ولأغراض هذا الحل، سنمنح مثيل EC2 الخاص بنا حق الوصول الكامل إلى ECR. تصفية ل AmazonEC2ContainerRegistryFullAccess وحددها.
- اضغط على التالي وقم بتسمية الدور
inf-ecr-access
ملاحظة: السياسة التي أرفقناها تمنح مثيل EC2 حق الوصول الكامل إلى Amazon ECR. نوصي بشدة باتباع صاحب الامتياز الأقل لأحمال العمل الإنتاجية.
الخطوة 2: إعداد AWS CLI
إذا كنت تستخدم Deep Learning AMI المذكورة أعلاه، فهي تأتي مع تثبيت AWS CLI. إذا كنت تستخدم AMI مختلفًا (Amazon Linux 2023 وBase Ubuntu وما إلى ذلك)، فقم بتثبيت أدوات CLI باتباع ما يلي هذا دليل.
بمجرد تثبيت أدوات CLI، قم بتكوين CLI باستخدام الأمر aws configure
. إذا كانت لديك مفاتيح وصول، فيمكنك إضافتها هنا ولكن لا تحتاج إليها بالضرورة للتفاعل مع خدمات AWS. نحن نعتمد على أدوار IAM للقيام بذلك.
ملاحظات: نحتاج إلى إدخال قيمة واحدة على الأقل (المنطقة الافتراضية أو التنسيق الافتراضي) لإنشاء ملف التعريف الافتراضي. على سبيل المثال، نحن نذهب مع us-east-2
كمنطقة و json
كمخرج افتراضي.
استنساخ مستودع جيثب
• جيثب ريبو يوفر جميع البرامج النصية اللازمة لنشر النماذج باستخدام FastAPI على NeuronCores على مثيلات AWS Inferentia. يستخدم هذا المثال حاويات Docker لضمان قدرتنا على إنشاء حلول قابلة لإعادة الاستخدام. المدرجة في هذا المثال هو ما يلي config.properties ملف للمستخدمين لتقديم المدخلات.
يحتاج ملف التكوين إلى بادئات اسم محددة من قبل المستخدم لصورة Docker وحاويات Docker. ال build.sh
النصي في fastapi
و trace-model
تستخدم المجلدات هذا لإنشاء صور Docker.
تجميع نموذج على AWS Inferentia
سنبدأ بتتبع النموذج وإنتاج ملف PyTorch Torchscript .pt. ابدأ بالوصول trace-model
الدليل وتعديل ملف .env. اعتمادًا على نوع المثيل الذي اخترته، قم بتعديل CHIP_TYPE
في حدود .env
ملف. على سبيل المثال، سوف نختار Inf2 كدليل. تنطبق نفس الخطوات على عملية النشر لـ Inf1.
قم بعد ذلك بتعيين المنطقة الافتراضية في نفس الملف. سيتم استخدام هذه المنطقة لإنشاء مستودع ECR وسيتم دفع صور Docker إلى هذا المستودع. وفي هذا المجلد أيضًا، نقدم جميع البرامج النصية اللازمة لتتبع ملف bert-base-uncased
نموذج على AWS Inferentia. يمكن استخدام هذا البرنامج النصي لمعظم الطرز المتوفرة على وجه يعانق. Dockerfile لديه كل التبعيات لتشغيل النماذج باستخدام Neuron ويقوم بتشغيل تتبع model.py رمز كنقطة الدخول.
وأوضح تجميع الخلايا العصبية
تشبه واجهة برمجة تطبيقات Neuron SDK إلى حد كبير واجهة برمجة تطبيقات PyTorch Python. ال torch.jit.trace()
من PyTorch يأخذ موتر النموذج وعينة الإدخال كوسائط. يتم تغذية مدخلات العينة إلى النموذج ويتم تسجيل العمليات التي يتم استدعاؤها حيث يشق هذا الإدخال طريقه عبر طبقات النموذج على أنها تورتشسكريبت. لمعرفة المزيد حول تتبع JIT في PyTorch ، راجع ما يلي توثيق.
تماما مثل torch.jit.trace()
، يمكنك التحقق لمعرفة ما إذا كان من الممكن تجميع النموذج الخاص بك على AWS Inferentia باستخدام الكود التالي لمثيلات inf1.
بالنسبة لـ inf2، يتم استدعاء المكتبة torch_neuronx
. إليك كيفية اختبار تجميع النموذج الخاص بك مقابل مثيلات inf2.
بعد إنشاء نسخة التتبع، يمكننا تمرير مثال إدخال الموتر كما يلي:
وأخيرًا احفظ مخرجات TorchScript الناتجة على القرص المحلي
كما هو موضح في الكود السابق ، يمكنك استخدام compiler_args
و optimizations
لتحسين النشر. للحصول على قائمة مفصلة من الحجج ل torch.neuron.trace
API ، الرجوع إلى PyTorch-Neuron تتبع واجهة برمجة تطبيقات بايثون.
ضع النقاط المهمة التالية في الاعتبار:
- لا يدعم Neuron SDK أشكال الموتر الديناميكي حتى كتابة هذه السطور. لذلك ، يجب تجميع النموذج بشكل منفصل لأشكال الإدخال المختلفة. لمزيد من المعلومات حول تشغيل الاستدلال على أشكال الإدخال المتغيرة باستخدام المجموعات ، ارجع إلى تشغيل الاستدلال على أشكال الإدخال المتغيرة باستخدام المستودع.
- إذا واجهت مشاكل نفاد الذاكرة عند تجميع نموذج، فحاول تجميع النموذج على مثيل AWS Inferentia مع المزيد من وحدات المعالجة المركزية الافتراضية أو الذاكرة، أو حتى مثيل c6i أو r6i كبير لأن التجميع يستخدم وحدات المعالجة المركزية فقط. بمجرد تجميع النموذج الذي تم تتبعه، من المحتمل أن يتم تشغيله على أحجام مثيلات AWS Inferentia الأصغر.
شرح عملية البناء
الآن سوف نقوم ببناء هذه الحاوية عن طريق التشغيل build.sh. ينشئ ملف البرنامج النصي للبناء صورة Docker ببساطة عن طريق سحب صورة حاوية التعلم العميق الأساسية وتثبيت HuggingFace transformers
طَرد. على أساس CHIP_TYPE
المحدد في .env
ملف docker.properties
الملف يقرر المناسب BASE_IMAGE
. هذا BASE_IMAGE
يشير إلى صورة حاوية التعلم العميق لوقت تشغيل الخلايا العصبية المقدمة من AWS.
وهي متاحة من خلال مستودع ECR خاص. قبل أن نتمكن من سحب الصورة، نحتاج إلى تسجيل الدخول والحصول على بيانات اعتماد AWS المؤقتة.
ملاحظات: نحتاج إلى استبدال المنطقة المدرجة في الأمر المحدد بواسطة علامة المنطقة وداخل URI الخاص بالمستودع بالمنطقة التي نضعها في .env ملف.
ولتسهيل هذه العملية يمكننا استخدام fetch-credentials.sh
ملف. سيتم أخذ المنطقة من ملف .env تلقائيًا.
بعد ذلك، سنقوم بدفع الصورة باستخدام البرنامج النصي دفع. ينشئ برنامج الدفع النصي مستودعًا لك في Amazon ECR ويدفع صورة الحاوية.
أخيرًا ، عندما يتم إنشاء الصورة ودفعها ، يمكننا تشغيلها كحاوية عن طريق التشغيل run.sh وسجلات التشغيل الذيل مع logs.sh. في سجلات المترجم (انظر لقطة الشاشة التالية)، سترى النسبة المئوية للعوامل الحسابية التي تم تجميعها على Neuron والنسبة المئوية للرسوم البيانية الفرعية النموذجية التي تم تجميعها بنجاح على Neuron. تعرض لقطة الشاشة سجلات المترجم لـ bert-base-uncased-squad2
نموذج. تُظهر السجلات أنه تم تجميع 95.64٪ من العوامل الحسابية ، كما أنها تقدم قائمة بالعوامل التي تم تجميعها على Neuron وتلك غير المدعومة.
هنا قائمة من جميع المشغلين المدعومين في أحدث حزمة PyTorch Neuron. بصورة مماثلة، هنا القائمة من جميع المشغلين المدعومين في أحدث حزمة PyTorch Neuronx.
نشر النماذج باستخدام FastAPI
بعد تجميع النماذج، سيكون النموذج الذي تم تتبعه موجودًا في الملف trace-model
مجلد. في هذا المثال، قمنا بوضع النموذج الذي تم تتبعه لحجم دفعة يبلغ 1. ونحن نعتبر حجم دفعة يبلغ 1 هنا لمراعاة حالات الاستخدام تلك حيث يكون حجم الدُفعة الأعلى غير ممكن أو مطلوب. بالنسبة لحالات الاستخدام التي تتطلب أحجام دفعات أعلى ، فإن ملف torch.neuron.Data متوازي (لـ Inf1) أو torch.neuronx.DataParallel (لـ Inf2) قد تكون واجهة برمجة التطبيقات (API) مفيدة أيضًا.
• سريع API يوفر المجلد جميع البرامج النصية اللازمة لنشر النماذج باستخدام FastAPI. لنشر النماذج دون أي تغييرات ، ما عليك سوى تشغيل ملف نشر سيقوم البرنامج النصي بإنشاء صورة حاوية FastAPI، وتشغيل الحاويات على العدد المحدد من النوى، ونشر العدد المحدد من النماذج لكل خادم في كل خادم نموذج FastAPI. يحتوي هذا المجلد أيضًا على .env
الملف، قم بتعديله ليعكس الصحيح CHIP_TYPE
و AWS_DEFAULT_REGION
.
ملاحظات: تعتمد نصوص FastAPI على نفس متغيرات البيئة المستخدمة لإنشاء الصور ودفعها وتشغيلها كحاويات. ستستخدم البرامج النصية لنشر FastAPI آخر القيم المعروفة من هذه المتغيرات. لذلك، إذا قمت بتتبع نموذج نوع مثيل Inf1 أخيرًا، فسيتم نشر هذا النموذج من خلال هذه البرامج النصية.
• fastapi-server.py الملف المسؤول عن استضافة السيرفر وإرسال الطلبات للنموذج يقوم بما يلي:
- يقرأ عدد النماذج لكل خادم وموقع النموذج المترجم من ملف الخصائص
- يضبط NeuronCores المرئية كمتغيرات بيئة لحاوية Docker ويقرأ متغيرات البيئة لتحديد NeuronCores المطلوب استخدامه
- يوفر واجهة برمجة تطبيقات الاستدلال لـ
bert-base-uncased-squad2
نموذج - بدافع
jit.load()
، يقوم بتحميل عدد النماذج لكل خادم كما هو محدد في التكوين ويخزن النماذج والرموز المميزة المطلوبة في القواميس العالمية
باستخدام هذا الإعداد، سيكون من السهل نسبيًا إعداد واجهات برمجة التطبيقات التي تسرد النماذج وعدد النماذج المخزنة في كل NeuronCore. وبالمثل، يمكن كتابة واجهات برمجة التطبيقات لحذف النماذج من NeuronCores محددة.
• Dockerfile لبناء حاويات FastAPI مبنية على صورة Docker التي أنشأناها لتتبع النماذج. ولهذا السبب docker.properties يحدد الملف مسار ECR إلى صورة Docker لتتبع النماذج. في إعدادنا، تتشابه حاويات Docker في جميع NeuronCores، لذا يمكننا إنشاء صورة واحدة وتشغيل حاويات متعددة من صورة واحدة. لتجنب أي أخطاء في نقطة الدخول، نحدد ENTRYPOINT ["/usr/bin/env"]
في ملف Dockerfile قبل تشغيل ملف startup.sh
البرنامج النصي، الذي يبدو hypercorn fastapi-server:app -b 0.0.0.0:8080
. هذا البرنامج النصي لبدء التشغيل هو نفسه بالنسبة لجميع الحاويات. إذا كنت تستخدم نفس الصورة الأساسية المستخدمة في نماذج التتبع، فيمكنك إنشاء هذه الحاوية ببساطة عن طريق تشغيل البرنامج النصي build.sh. ال push.sh
يبقى البرنامج النصي كما كان من قبل لنماذج التتبع. يتم توفير صورة Docker المعدلة واسم الحاوية بواسطة ملف docker.properties
ملف.
• run.sh file
يقوم بما يلي:
- يقرأ صورة Docker واسم الحاوية من ملف HAS الملف، والذي بدوره يقرأ ملف
config.properties
الملف الذي يحتوي على ملفnum_cores
إعداد المستخدم - تبدأ حلقة من 0 إلى
num_cores
ولكل جوهر:- يضبط رقم المنفذ ورقم الجهاز
- يضبط
NEURON_RT_VISIBLE_CORES
متغيرات البيئة - يحدد جبل الحجم
- يقوم بتشغيل حاوية Docker
للتوضيح، سيبدو أمر Docker run للنشر في NeuronCore 0 لـ Inf1 مثل الكود التالي:
سيبدو أمر التشغيل للنشر في NeuronCore 5 بالشكل التالي:
بعد نشر الحاويات، نستخدم run_apis.py البرنامج النصي ، الذي يستدعي واجهات برمجة التطبيقات في سلاسل متوازية. تم إعداد الكود لاستدعاء ستة نماذج تم نشرها ، واحد على كل NeuronCore ، ولكن يمكن تغييره بسهولة إلى إعداد مختلف. نسمي واجهات برمجة التطبيقات من جانب العميل على النحو التالي:
مراقبة NeuronCore
بعد نشر الخوادم النموذجية، لمراقبة استخدام NeuronCore، قد نستخدم neuron-top
لمراقبة نسبة الاستخدام لكل NeuronCore في الوقت الفعلي. قمة الخلايا العصبية هي أداة CLI في Neuron SDK لتوفير معلومات مثل NeuronCore وvCPU واستخدام الذاكرة. في محطة منفصلة، أدخل الأمر التالي:
يجب أن يكون الإخراج الخاص بك مشابهاً للشكل التالي. في هذا السيناريو، حددنا استخدام اثنين من NeuronCores ونموذجين لكل خادم على مثيل Inf2.xlarge. توضح لقطة الشاشة التالية أنه تم تحميل نموذجين بحجم 287.8 ميجابايت لكل منهما على اثنين من NeuronCores. مع تحميل إجمالي 4 نماذج، يمكنك رؤية أن ذاكرة الجهاز المستخدمة تبلغ 1.3 جيجابايت. استخدم مفاتيح الأسهم للتنقل بين NeuronCores على الأجهزة المختلفة
وبالمثل، في نوع مثيل Inf1.16xlarge، نرى إجمالي 12 نموذجًا (نموذجان لكل نواة على 2 مراكز) محملة. يتم استهلاك إجمالي ذاكرة يبلغ 6 جيجابايت ويبلغ حجم كل طراز 2.1 ميجابايت.
بعد تشغيل ملف run_apis.py البرنامج النصي ، يمكنك رؤية النسبة المئوية لاستخدام كل من NeuronCores الستة (انظر لقطة الشاشة التالية). يمكنك أيضًا رؤية استخدام النظام vCPU واستخدام وقت التشغيل vCPU.
توضح لقطة الشاشة التالية نسبة الاستخدام الأساسي لمثيل Inf2.
وبالمثل، تعرض لقطة الشاشة هذه الاستخدام الأساسي في نوع مثيل inf1.6xlarge.
تنظيف
لتنظيف جميع حاويات Docker التي قمت بإنشائها، نوفر لك ملفًا cleanupsh البرنامج النصي الذي يزيل جميع الحاويات قيد التشغيل والمتوقفة. سيزيل هذا البرنامج النصي جميع الحاويات ، لذا لا تستخدمه إذا كنت تريد الاحتفاظ ببعض الحاويات قيد التشغيل.
وفي الختام
غالبًا ما تتسم أحمال عمل الإنتاج بإنتاجية عالية وزمن وصول منخفض ومتطلبات تكلفة. قد تؤدي البنى غير الفعالة التي تستخدم المسرعات بشكل دون المستوى الأمثل إلى ارتفاع تكاليف الإنتاج بشكل غير ضروري. في هذا المنشور، أظهرنا كيفية الاستخدام الأمثل لـ NeuronCores مع FastAPI لزيادة الإنتاجية إلى أقصى حد بأقل زمن وصول. لقد نشرنا التعليمات على موقعنا جيثب ريبو. باستخدام بنية الحل هذه، يمكنك نشر نماذج متعددة في كل NeuronCore وتشغيل نماذج متعددة بالتوازي على NeuronCores مختلفة دون فقدان الأداء. لمزيد من المعلومات حول كيفية نشر النماذج على نطاق واسع مع خدمات مثل خدمة أمازون مطاطا Kubernetes (Amazon EKS) ، راجع يمكنك تقديم 3,000 نموذج للتعلم العميق على Amazon EKS باستخدام AWS Inferentia مقابل أقل من 50 دولارًا في الساعة.
عن المؤلفين
أنكور سريفاستافا مهندس حلول في فريق ML Frameworks. يركز على مساعدة العملاء من خلال التدريب والاستدلال الموزع المُدار ذاتيًا على نطاق واسع على AWS. تشمل خبرته الصيانة التنبؤية الصناعية والتوائم الرقمية وتحسين التصميم الاحتمالي وأكمل دراسات الدكتوراه من الهندسة الميكانيكية في جامعة رايس وأبحاث ما بعد الدكتوراه من معهد ماساتشوستس للتكنولوجيا.
كيه سي تونغ هو مهندس حلول أول في مختبرات AWS Annapurna. إنه متخصص في التدريب على نموذج التعلم العميق الكبير ونشره على نطاق واسع في السحابة. حاصل على دكتوراه. في الفيزياء الحيوية الجزيئية من جامعة تكساس ساوثويسترن ميديكال سنتر في دالاس. لقد تحدث في AWS Summit و AWS Reinvent. واليوم يساعد العملاء على تدريب ونشر نماذج PyTorch و TensorFlow الكبيرة في سحابة AWS. له كتابان: تعلم TensorFlow Enterprise و مرجع الجيب TensorFlow 2.
برونوي شوبرا هو أحد كبار مهندسي الحلول في فريق Startups Geneative AI في AWS. وهو متخصص في هندسة وتطوير حلول إنترنت الأشياء والتعلم الآلي. لقد شارك في تأسيس شركتين ناشئتين في الماضي ويستمتع بالتدريب العملي على المشاريع في مجالات إنترنت الأشياء والذكاء الاصطناعي/تعلم الآلة والمجال بدون خادم.
- محتوى مدعوم من تحسين محركات البحث وتوزيع العلاقات العامة. تضخيم اليوم.
- PlatoData.Network Vertical Generative Ai. تمكين نفسك. الوصول هنا.
- أفلاطونايستريم. ذكاء Web3. تضخيم المعرفة. الوصول هنا.
- أفلاطون السيارات / المركبات الكهربائية ، كربون، كلينتك ، الطاقة، بيئة، شمسي، إدارة المخلفات. الوصول هنا.
- BlockOffsets. تحديث ملكية الأوفست البيئية. الوصول هنا.
- المصدر https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- :لديها
- :يكون
- :ليس
- :أين
- $ UP
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- 15%
- 2023
- 7
- 8
- 91
- a
- ماهرون
- من نحن
- فوق
- التجريد
- المعجلات
- الوصول
- الوصول
- وفقا لذلك
- حسابي
- التأهيل
- في
- نشط
- تضيف
- ضد
- AI
- AI / ML
- الكل
- السماح
- يسمح
- أيضا
- أمازون
- Amazon EC2
- أمازون ويب سيرفيسز
- an
- و
- أي وقت
- API
- واجهات برمجة التطبيقات
- التطبيق
- تطبيق
- التطبيقات
- التقديم
- مناسب
- هندسة معمارية
- هي
- الحجج
- AS
- افترض
- At
- المؤلفة
- تلقائيا
- توفر
- متاح
- تجنب
- AWS
- استدلال AWS
- قاعدة
- على أساس
- BE
- لان
- أصبح
- كان
- قبل
- باسمى او لاجلى
- سلوك
- يجري
- تستفيد
- الفوائد
- أفضل
- أفضل الممارسات
- ما بين
- فيزياء حيوية
- قطعة
- المدونة
- كُتُب
- نساعدك في بناء
- ابني
- بنيت
- لكن
- by
- دعوة
- تسمى
- دعوات
- CAN
- قدرات
- قدرة
- يهمني
- حقيبة
- الحالات
- مركز
- تغيير
- غير
- التغييرات
- التحقق
- شيبس
- خيار
- اختار
- اختار
- وضوح
- زبون
- عن كثب
- سحابة
- الكود
- يأتي
- مقارنة
- تنافس
- الطلب مكتمل
- إحصاء
- الاعداد
- نظر
- النظر
- كنسولات
- مستهلك
- تحتوي على
- وعاء
- حاويات
- يحتوي
- سياق الكلام
- بشكل متواصل
- تباين
- مراقبة
- ذو شاهد
- مناسب
- جوهر
- تصحيح
- التكلفة
- التكاليف
- استطاع
- زوجان
- خلق
- خلق
- يخلق
- خلق
- أوراق اعتماد
- حاسم
- العملاء
- دالاس
- القرار
- عميق
- التعلم العميق
- أعمق
- الترتيب
- شرح
- اعتمادا
- نشر
- نشر
- نشر
- نشر
- تصميم
- محدد
- على الرغم من
- مفصلة
- يحدد
- تطوير
- جهاز
- الأجهزة
- مختلف
- التوزيع
- DIG
- رقمي
- التوائم الرقمية
- وزعت
- التدريب الموزع
- جانغو
- do
- عامل في حوض السفن
- هل
- لا
- نطاق
- لا
- ديناميكي
- كل
- في وقت سابق
- أسهل
- بسهولة
- سهل
- EC
- على نحو فعال
- النهاية
- نقطة النهاية
- جذب
- الهندسة
- ضمان
- أدخل
- كيان
- دخول
- البيئة
- أخطاء
- إلخ
- حتى
- كل
- المتطورة
- مثال
- إلا
- الخبره في مجال الغطس
- اضافات المتصفح
- الوجه
- للعائلات
- أسرع
- قابليه
- المميزات
- بنك الاحتياطي الفيدرالي
- أقل
- الشكل
- قم بتقديم
- تصفية
- أخيرا
- الاسم الأول
- ويركز
- متابعيك
- متابعات
- في حالة
- شكل
- وجدت
- أربعة
- الإطار
- الأطر
- تبدأ من
- بالإضافة إلى
- تماما
- وظيفة
- بوابة
- توليدي
- الذكاء الاصطناعي التوليدي
- دولار فقط واحصل على خصم XNUMX% على جميع
- GitHub جيثب:
- منح
- يعطي
- العالمية
- الذهاب
- توجيه
- مقبض
- تشابك الايدى
- أجهزة التبخير
- يملك
- he
- مساعدة
- مساعدة
- يساعد
- هنا
- مرتفع
- أعلى
- أعلى
- له
- مضيف
- استضافت
- استضافة
- المضيفين
- كيفية
- كيفية
- لكن
- HTML
- HTTP
- HTTPS
- تعانق الوجه
- ID
- المثالي
- محدد
- if
- صورة
- صور
- استيراد
- أهمية
- in
- شامل
- يشمل
- الوارد
- الزيادات
- صناعي
- غير فعال
- معلومات
- وأبلغ
- إدخال
- المدخلات
- تثبيت
- تثبيت
- تركيب
- مثل
- بدلًا من ذلك
- معهد
- تعليمات
- تفاعل
- إلى
- التذرع
- قام المحفل
- قضية
- مسائل
- IT
- انها
- JIT
- JPG
- م
- احتفظ
- مفاتيح
- علم
- معروف
- مختبرات
- لغة
- كبير
- اسم العائلة
- كمون
- آخر
- إطلاق
- طبقة
- طبقات
- قيادة
- تعلم
- تعلم
- مستوى
- المكتبة
- مثل
- لينكس
- قائمة
- المدرج
- القليل
- أعمق قليلا
- LLM
- جار التحميل
- الأحمال
- محلي
- موقع
- تسجيل
- تسجيل الدخول
- بحث
- يبدو مثل
- تبدو
- فقدان
- منخفض
- خفض
- أدنى
- آلة
- آلة التعلم
- صنع
- صيانة
- جعل
- يصنع
- القيام ب
- كثير
- ماساتشوستس
- معهد ماساتشوستس للتكنولوجيا
- ماكس
- تعظيم
- أقصى
- مايو..
- ميكانيكي
- طبي
- مكبر الصوت : يدعم، مع دعم ميكروفون مدمج لمنع الضوضاء
- المقاييس
- مانع
- الحد الأدنى
- ML
- نموذج
- عارضات ازياء
- تم التعديل
- تعديل
- جزيئي
- مراقبة
- الأكثر من ذلك
- أكثر
- خطوة
- كثيرا
- متعدد
- يجب
- الاسم
- بالضرورة
- ضروري
- حاجة
- بحاجة
- إحتياجات
- جديد
- التالي
- الآن
- عدد
- موضوعي
- رصد
- of
- عرض
- غالبا
- on
- مرة
- ONE
- فقط
- على
- المصدر المفتوح
- طريقة التوسع
- عمليات
- مشغلي
- معارض
- التحسين
- الأمثل
- الأمثل
- or
- لنا
- خارج
- الناتج
- على مدى
- صفقة
- موازية
- جزء
- pass
- الماضي
- مسار
- إلى
- نسبة مئوية
- أداء
- أفلاطون
- الذكاء افلاطون البيانات
- أفلاطون داتا
- البوينت
- نقاط
- سياسات الخصوصية والبيع
- سياسة
- الرائج
- ممكن
- منشور
- الممارسات
- يقدم
- خاص
- المحتمل
- عملية المعالجة
- العمليات
- إنتاج
- الإنتــاج
- ملفي الشخصي
- مشروع ناجح
- HAS
- تزود
- المقدمة
- ويوفر
- الوكيل
- نشرت
- سحب
- غرض
- دفع
- دفع
- يدفع
- وضع
- بايثون
- pytorch
- نطاق
- حقيقي
- في الوقت الحقيقي
- نوصي
- موصى به
- مسجل
- تعكس
- منطقة
- نسبيا
- اعتمد
- الاعتماد
- بقايا
- إزالة
- يحل محل
- مستودع
- طلبات
- مطلوب
- المتطلبات الأساسية
- بحث
- يشبه
- حجز
- محفوظة
- الموارد
- استجابة
- مسؤول
- REST
- مما أدى
- قابلة لإعادة الاستخدام
- أرز
- النوع
- الأدوار
- يجري
- تشغيل
- يدير
- التضحية
- نفسه
- حفظ
- حجم
- سيناريو
- مخطوطات
- الإستراحة
- انظر تعريف
- اختيار
- إرسال
- كبير
- حساس
- مستقل
- Serverless
- خوادم
- الخدمة
- خدماتنا
- خدمة
- طقم
- ضبط
- الإعداد
- الأشكال
- مشاركة
- شاركت
- ينبغي
- إظهار
- أظهرت
- أظهرت
- يظهر
- جانب
- مماثل
- وبالمثل
- ببساطة
- SIX
- المقاس
- الأحجام
- الأصغر
- So
- حل
- الحلول
- بعض
- تتخصص
- محدد
- محدد
- تحدث
- مستقر
- كومة
- بداية
- بدء التشغيل
- البدء
- ذكر
- خطوات
- توقف
- تخزين
- فروعنا
- بقوة
- دراسات
- بنجاح
- هذه
- القمم
- الدعم
- مدعومة
- بالتأكيد
- نظام
- جدول
- أخذ
- اتخذت
- يأخذ
- فريق
- تكنولوجيا
- مؤقت
- tensorflow
- محطة
- تجربه بالعربي
- الاختبار
- اختبارات
- تكساس
- من
- أن
- •
- من مشاركة
- منهم
- then
- وبالتالي
- تشبه
- هم
- الأشياء
- هؤلاء
- عبر
- الإنتاجية
- مربوط
- الوقت
- إلى
- اليوم
- أداة
- أدوات
- تيشرت
- شعلة
- الإجمالي
- أثر
- البحث عن المفقودين
- تقليدي
- قطار
- قادة الإيمان
- محولات
- افضل
- محاولة
- منعطف أو دور
- توأمان
- اثنان
- نوع
- أوبونتو
- مع
- التي تقوم عليها
- جامعة
- يونيكس
- بلا داعى
- بناء على
- us
- الأستعمال
- تستخدم
- مستعمل
- مستخدم
- المستخدمين
- يستخدم
- استخدام
- الاستفادة من
- يستخدم
- استخدام
- قيمنا
- القيم
- الإصدار
- جدا
- مرئي
- رؤيتنا
- حجم
- تريد
- وكان
- طريق..
- we
- الويب
- خادم الويب
- خدمات ويب
- حسن
- كان
- متى
- التي
- لماذا
- على نحو واسع
- سوف
- مع
- في غضون
- بدون
- عامل
- العمال
- سوف
- جاري الكتابة
- مكتوب
- أنت
- حل متجر العقارات الشامل الخاص بك في جورجيا
- نفسك
- زفيرنت
- صفر