مع انتشار التعلم الآلي (ML) وانتشاره على نطاق أوسع، أصبحت تطبيقات الاستدلال التي تعتمد على التعلم الآلي شائعة بشكل متزايد لحل مجموعة من مشاكل الأعمال المعقدة. غالبًا ما يتطلب حل مشكلات الأعمال المعقدة هذه استخدام نماذج وخطوات متعددة لتعلم الآلة. يوضح لك هذا المنشور كيفية إنشاء تطبيق ML واستضافته باستخدام حاويات مخصصة الأمازون SageMaker.
عروض أمازون سيج ميكر خوارزميات مدمجة و SageMaker المبني مسبقًا صور عامل الإرساء لنشر النموذج. ولكن، إذا كانت هذه لا تناسب احتياجاتك، فيمكنك إحضار الحاويات الخاصة بك (BYOC) للاستضافة على Amazon SageMaker.
هناك العديد من حالات الاستخدام التي قد يحتاج فيها المستخدمون إلى BYOC للاستضافة على Amazon SageMaker.
- أطر عمل أو مكتبات تعلم الآلة المخصصة: إذا كنت تخطط لاستخدام إطار عمل أو مكتبات تعلم الآلة التي لا تدعمها خوارزميات Amazon SageMaker المضمنة أو الحاويات المعدة مسبقًا، فستحتاج إلى إنشاء حاوية مخصصة.
- النماذج المتخصصة: بالنسبة لبعض المجالات أو الصناعات، قد تحتاج إلى تصميمات نماذج محددة أو خطوات معالجة مسبقة مخصصة غير متوفرة في عروض Amazon SageMaker المضمنة.
- خوارزميات الملكية: إذا قمت بتطوير خوارزميات الملكية الخاصة بك داخليًا، فستحتاج إلى حاوية مخصصة لنشرها على Amazon SageMaker.
- خطوط أنابيب الاستدلال المعقدة: إذا كان سير عمل استدلال ML الخاص بك يتضمن منطق عمل مخصص - سلسلة من الخطوات المعقدة التي يجب تنفيذها بترتيب معين - فيمكن أن يساعدك BYOC في إدارة هذه الخطوات وتنسيقها بشكل أكثر كفاءة.
حل نظرة عامة
في هذا الحل، نعرض كيفية استضافة تطبيق استدلال تسلسلي لتعلم الآلة على Amazon SageMaker مع نقاط نهاية في الوقت الفعلي باستخدام حاويتي استدلال مخصصتين بأحدث scikit-learn
و xgboost
الحزم.
تستخدم الحاوية الأولى أ scikit-learn
نموذج لتحويل البيانات الأولية إلى أعمدة مميزة. ينطبق مقياس قياسي للأعمدة الرقمية و OneHotEncoder إلى تلك الفئوية.
الحاوية الثانية تستضيف مدربين مسبقا XGboost
النموذج (أي المتنبئ). يقبل نموذج التوقع تنبؤات المدخلات والمخرجات المميزة.
أخيرًا، نقوم بنشر ميزات و المتنبئ في مسار الاستدلال التسلسلي إلى نقطة نهاية Amazon SageMaker في الوقت الفعلي.
فيما يلي بعض الاعتبارات المختلفة حول سبب رغبتك في الحصول على حاويات منفصلة داخل تطبيق الاستدلال الخاص بك.
- فصل - الخطوات المختلفة لخط الأنابيب لها غرض محدد بوضوح ويجب تشغيلها على حاويات منفصلة بسبب التبعيات الأساسية المعنية. يساعد هذا أيضًا في الحفاظ على تنظيم خط الأنابيب جيدًا.
- أُطر الأعمال - تستخدم الخطوات المختلفة لخط الأنابيب إطارات عمل محددة مناسبة للغرض (مثل scikit أو Spark ML) وبالتالي يلزم تشغيلها في حاويات منفصلة.
- عزل الموارد - الخطوات المختلفة لخط الأنابيب لها متطلبات متفاوتة لاستهلاك الموارد ، وبالتالي تحتاج إلى تشغيلها على حاويات منفصلة لمزيد من المرونة والتحكم.
- الصيانة والتحديثات – من الناحية التشغيلية، يؤدي ذلك إلى تعزيز العزلة الوظيفية ويمكنك الاستمرار في ترقية الخطوات الفردية أو تعديلها بسهولة أكبر، دون التأثير على النماذج الأخرى.
بالإضافة إلى ذلك، يساعد البناء المحلي للحاويات الفردية في العملية التكرارية للتطوير والاختبار باستخدام الأدوات المفضلة وبيئات التطوير المتكاملة (IDEs). بمجرد أن تصبح الحاويات جاهزة، يمكنك استخدام نشرها على سحابة AWS للاستدلال باستخدام نقاط نهاية Amazon SageMaker.
التنفيذ الكامل، بما في ذلك مقتطفات التعليمات البرمجية، متاح في مستودع Github هذا هنا.
المتطلبات الأساسية المسبقة
نظرًا لأننا نختبر هذه الحاويات المخصصة محليًا أولاً، فسنحتاج إلى تثبيت docker Desktop على جهاز الكمبيوتر المحلي لديك. يجب أن تكون على دراية ببناء حاويات الإرساء.
ستحتاج أيضًا إلى حساب AWS يتمتع بإمكانية الوصول إلى Amazon SageMaker وAmazon ECR وAmazon S3 لاختبار هذا التطبيق بشكل شامل.
تأكد من حصولك على أحدث إصدار من Boto3
وتثبيت حزم Amazon SageMaker Python:
تجول الحل
إنشاء حاوية ميزات مخصصة
لبناء الحاوية الأولى، حاوية المميزات، نقوم بتدريب أ scikit-learn
نموذج لمعالجة الميزات الخام في أذن البحر dataset. يستخدم البرنامج النصي للمعالجة المسبقة SimpleImputer لمعالجة القيم المفقودة، مقياس قياسي لتطبيع الأعمدة الرقمية، و OneHotEncoder لتحويل الأعمدة الفئوية. بعد تركيب المحول نقوم بحفظ النموذج فيه الوظيفة شكل. نقوم بعد ذلك بضغط وتحميل هذا النموذج المحفوظ إلى Amazon Simple Storage Service (الأمازون S3) دلو.
فيما يلي نموذج لمقتطف التعليمات البرمجية الذي يوضح ذلك. تشير إلى featurizer.ipynb للتنفيذ الكامل:
بعد ذلك، لإنشاء حاوية استدلال مخصصة لنموذج المميزات، قمنا ببناء صورة Docker باستخدام حزم nginx وgunicorn وflask، بالإضافة إلى التبعيات الأخرى المطلوبة لنموذج المميزات.
سيكون تطبيق Nginx وgunicorn وتطبيق Flask بمثابة حزمة تقديم النماذج على نقاط نهاية Amazon SageMaker في الوقت الفعلي.
عند إحضار حاويات مخصصة للاستضافة على Amazon SageMaker، نحتاج إلى التأكد من أن البرنامج النصي للاستدلال يؤدي المهام التالية بعد إطلاقه داخل الحاوية:
- تحميل النموذج: نص الاستدلال (
preprocessing.py
) ينبغي الرجوع إليها/opt/ml/model
الدليل لتحميل النموذج في الحاوية. سيتم تنزيل العناصر النموذجية في Amazon S3 وتثبيتها على الحاوية الموجودة في المسار/opt/ml/model
. - متغيرات البيئة: لتمرير متغيرات البيئة المخصصة إلى الحاوية، يجب عليك تحديدها أثناء عملية الموديل خطوة الخلق أو أثناء نقطة النهاية الخلق من وظيفة التدريب.
- متطلبات واجهة برمجة التطبيقات: يجب أن يقوم البرنامج النصي للاستدلال بتنفيذ كليهما
/ping
و/invocations
طرق كتطبيق قارورة. ال/ping
يتم استخدام واجهة برمجة التطبيقات (API) لإجراء فحوصات السلامة، بينما يتم استخدام/invocations
تتعامل واجهة برمجة التطبيقات (API) مع طلبات الاستدلال. - تسجيل: يجب كتابة سجلات الإخراج في البرنامج النصي للاستدلال إلى الإخراج القياسي (المعياري) والخطأ القياسي (ستدير) تيارات. ثم يتم تدفق هذه السجلات إلى الأمازون CloudWatch بواسطة أمازون سيج ميكر.
إليك مقتطف من preprocessing.py
التي تظهر تنفيذ /ping
و /invocations
.
الرجوع إلى ما قبل المعالجة ضمن مجلد المميزات للتنفيذ الكامل.
قم ببناء صورة Docker باستخدام الميزات ومكدس تقديم النموذج
لنقم الآن بإنشاء ملف Dockerfile باستخدام صورة أساسية مخصصة وتثبيت التبعيات المطلوبة.
لهذا نستخدم python:3.9-slim-buster
كصورة أساسية. يمكنك تغيير هذه الصورة الأساسية الأخرى ذات الصلة بحالة الاستخدام الخاصة بك.
نقوم بعد ذلك بنسخ تكوين nginx وملف بوابة خادم الويب الخاص بـ gunicorn والنص البرمجي للاستدلال إلى الحاوية. نقوم أيضًا بإنشاء برنامج نصي بلغة بايثون يسمى "serve" الذي يطلق عمليات nginx وgunicorn في الخلفية ويعين نص الاستدلال (أي تطبيق preprocessing.py Flask) كنقطة دخول للحاوية.
فيما يلي مقتطف من ملف Dockerfile لاستضافة نموذج المميزات. للتنفيذ الكامل الرجوع إلى Dockerfile مع ميزات المجلد.
اختبار صورة الاستدلال المخصصة باستخدام المميزات محليًا
الآن، قم ببناء واختبار حاوية الاستدلال المخصصة باستخدام الميزات محليًا باستخدام Amazon الوضع المحلي SageMaker. يعد الوضع المحلي مثاليًا لاختبار البرامج النصية للمعالجة والتدريب والاستدلال دون تشغيل أي وظائف على Amazon SageMaker. بعد التأكد من نتائج اختباراتك المحلية، يمكنك بسهولة تكييف البرامج النصية للتدريب والاستدلال للنشر على Amazon SageMaker بأقل قدر من التغييرات.
لاختبار الصورة المخصصة للمميزات محليًا، قم أولاً ببناء الصورة باستخدام ما تم تحديده مسبقًا Dockerfile. بعد ذلك، قم بتشغيل الحاوية عن طريق تثبيت الدليل الذي يحتوي على نموذج المميزات (preprocess.joblib
) إلى /opt/ml/model
الدليل داخل الحاوية. بالإضافة إلى ذلك، قم بتعيين المنفذ 8080 من الحاوية إلى المضيف.
بمجرد إطلاقه، يمكنك إرسال طلبات الاستدلال إلى http://localhost:8080/invocations.
لإنشاء الحاوية وتشغيلها، افتح الوحدة الطرفية وقم بتشغيل الأوامر التالية.
لاحظ أنه يجب عليك استبدال <IMAGE_NAME>
، كما هو موضح في الكود التالي، مع اسم الصورة للحاوية الخاصة بك.
يفترض الأمر التالي أيضًا أن المدربين scikit-learn
نموذج (preprocess.joblib
) موجود ضمن دليل يسمى models
.
بعد تشغيل الحاوية، يمكننا اختبار كل من / بينغ و /الدعوات الطرق باستخدام أوامر الضفيرة.
قم بتشغيل الأوامر أدناه من المحطة
عندما يتم إرسال البيانات الأولية (غير المحولة) إلى http://localhost:8080/invocations، تستجيب نقطة النهاية بالبيانات المحولة.
يجب أن ترى ردًا مشابهًا لما يلي:
نقوم الآن بإنهاء الحاوية قيد التشغيل، ثم نضع علامة على الصورة المخصصة المحلية وندفعها إلى سجل Amazon Elastic Container Registry الخاص (أمازون ECR) مخزن.
راجع الأوامر التالية لتسجيل الدخول إلى Amazon ECR، الذي يقوم بوضع علامة على الصورة المحلية بمسار صورة Amazon ECR الكامل ثم دفع الصورة إلى Amazon ECR. تأكد من استبدال region
و account
المتغيرات لتتناسب مع البيئة الخاصة بك.
الرجوع إلى إنشاء مستودع و ادفع الصورة إلى Amazon ECR واجهة سطر أوامر AWS (AWS CLI) أوامر لمزيد من المعلومات.
خطوة اختيارية
اختياريًا، يمكنك إجراء اختبار مباشر من خلال نشر نموذج الميزات إلى نقطة نهاية في الوقت الفعلي باستخدام صورة عامل الإرساء المخصصة في Amazon ECR. تشير إلى featurizer.ipynb دفتر ملاحظات للتنفيذ الكامل لإنشاء الصورة المخصصة واختبارها ودفعها إلى Amazon ECR.
يقوم Amazon SageMaker بتهيئة نقطة نهاية الاستدلال ونسخ عناصر النموذج إلى ملف /opt/ml/model
الدليل داخل الحاوية. يرى كيف يقوم SageMaker بتحميل عناصر النموذج الخاصة بك.
قم ببناء حاوية توقع XGBoost مخصصة
لبناء حاوية الاستدلال XGBoost، نتبع خطوات مماثلة كما فعلنا أثناء بناء الصورة لحاوية المميزات:
- تحميل المدربين مسبقا
XGBoost
الموديل من أمازون S3. - إنشاء
inference.py
البرنامج النصي الذي يقوم بتحميل ما تم تدريبه مسبقًاXGBoost
نموذج، يحول بيانات الإدخال المحولة الواردة من الميزة، ويحولها إلىXGBoost.DMatrix
الشكل، يعملpredict
على الداعم، وإرجاع التنبؤات بتنسيق json. - البرامج النصية وملفات التكوين التي تشكل مكدس خدمة النموذج (على سبيل المثال،
nginx.conf
,wsgi.py
وserve
تبقى كما هي ولا تحتاج إلى تعديل. - نستخدم
Ubuntu:18.04
كصورة أساسية لملف Dockerfile. وهذا ليس شرطا مسبقا. نستخدم صورة أوبونتو الأساسية لتوضيح أنه يمكن بناء الحاويات باستخدام أي صورة أساسية. - تظل خطوات إنشاء صورة عامل الإرساء للعميل واختبار الصورة محليًا ودفع الصورة التي تم اختبارها إلى Amazon ECR كما هي من قبل.
للإختصار، فالخطوات متشابهة كما هو موضح سابقاً؛ ومع ذلك، فإننا نعرض فقط الترميز الذي تم تغييره فيما يلي.
أولا، inference.py
النصي. إليك مقتطف يوضح تنفيذ /ping
و /invocations
. تشير إلى الاستدلال.py تحت المتنبئ مجلد للتنفيذ الكامل لهذا الملف.
فيما يلي مقتطف من ملف Dockerfile لاستضافة نموذج التوقع. للتنفيذ الكامل الرجوع إلى Dockerfile ضمن مجلد التوقع.
نواصل بعد ذلك إنشاء صورة التوقع المخصصة هذه واختبارها ودفعها إلى مستودع خاص في Amazon ECR. تشير إلى Predictor.ipynb دفتر ملاحظات للتنفيذ الكامل لبناء الصورة المخصصة واختبارها ودفعها إلى Amazon ECR.
نشر خط أنابيب الاستدلال التسلسلي
بعد أن قمنا باختبار كل من صور الميزات والتنبؤ ودفعها إلى Amazon ECR، نقوم الآن بتحميل عناصر النموذج الخاصة بنا إلى حاوية Amazon S3.
بعد ذلك، نقوم بإنشاء كائنين نموذجيين: أحدهما لـ featurizer
(أي، preprocess.joblib
) وغيرها من أجل predictor
(أي، xgboost-model
) عن طريق تحديد عنوان uri للصورة المخصصة التي قمنا بإنشائها مسبقًا.
إليك مقتطف يوضح ذلك. تشير إلى الاستدلال التسلسلي خط الأنابيب.ipynb للتنفيذ الكامل.
الآن، لنشر هذه الحاويات بطريقة تسلسلية، نقوم أولاً بإنشاء ملف نموذج كائن وتمرير featurizer
نموذج و predictor
نموذج لكائن قائمة بايثون بنفس الترتيب.
ثم ندعو .deploy()
طريقة على نموذج تحديد نوع المثيل وعدد المثيلات.
في هذه المرحلة، ينشر Amazon SageMaker مسار الاستدلال التسلسلي إلى نقطة نهاية في الوقت الفعلي. وننتظر أن تكون نقطة النهاية InService
.
يمكننا الآن اختبار نقطة النهاية عن طريق إرسال بعض طلبات الاستدلال إلى نقطة النهاية المباشرة هذه.
الرجوع إلى الاستدلال التسلسلي خط الأنابيب.ipynb للتنفيذ الكامل.
تنظيف
بعد الانتهاء من الاختبار، يرجى اتباع الإرشادات الموجودة في قسم التنظيف في دفتر الملاحظات لحذف الموارد المتوفرة في هذا المنشور لتجنب الرسوم غير الضرورية. تشير إلى الأمازون SageMaker التسعير للحصول على تفاصيل حول تكلفة مثيلات الاستدلال.
وفي الختام
في هذا المنشور، أوضحت كيف يمكننا إنشاء تطبيق استدلال ML تسلسلي ونشره باستخدام حاويات الاستدلال المخصصة لنقاط النهاية في الوقت الفعلي على Amazon SageMaker.
يوضح هذا الحل كيف يمكن للعملاء إحضار حاوياتهم المخصصة للاستضافة على Amazon SageMaker بطريقة فعالة من حيث التكلفة. باستخدام خيار BYOC، يمكن للعملاء إنشاء تطبيقات ML الخاصة بهم وتكييفها بسرعة لنشرها على Amazon SageMaker.
نحن نشجعك على تجربة هذا الحل باستخدام مجموعة بيانات ذات صلة بمؤشرات الأداء الرئيسية (KPIs) لأعمالك. يمكنك الرجوع إلى الحل بأكمله في هذا مستودع جيثب.
مراجع حسابات
عن المؤلف
برافين شامارثي هو أخصائي أول في الذكاء الاصطناعي / تعلم الآلة مع Amazon Web Services. إنه متحمس للذكاء الاصطناعي / تعلم الآلة وكل ما يتعلق بـ AWS. يساعد العملاء في جميع أنحاء الأمريكتين على توسيع نطاق أعباء عمل ML وابتكارها وتشغيلها بكفاءة على AWS. في أوقات فراغه ، يحب برافين القراءة ويستمتع بأفلام الخيال العلمي.
- محتوى مدعوم من تحسين محركات البحث وتوزيع العلاقات العامة. تضخيم اليوم.
- PlatoData.Network Vertical Generative Ai. تمكين نفسك. الوصول هنا.
- أفلاطونايستريم. ذكاء Web3. تضخيم المعرفة. الوصول هنا.
- أفلاطون كربون، كلينتك ، الطاقة، بيئة، شمسي، إدارة المخلفات. الوصول هنا.
- أفلاطون هيلث. التكنولوجيا الحيوية وذكاء التجارب السريرية. الوصول هنا.
- المصدر https://aws.amazon.com/blogs/machine-learning/build-and-deploy-ml-inference-applications-from-scratch-using-amazon-sagemaker/