تمكين CI / CD لنقاط نهاية Amazon SageMaker متعددة المناطق ذكاء بيانات PlatoBlockchain. البحث العمودي. عاي.

قم بتمكين CI / CD لنقاط نهاية Amazon SageMaker متعددة المناطق

الأمازون SageMaker و استدلال نقاط نهاية SageMaker توفير القدرة على التدريب ونشر أحمال عمل الذكاء الاصطناعي والتعلم الآلي (ML). باستخدام نقاط نهاية الاستدلال ، يمكنك نشر النماذج الخاصة بك في الوقت الفعلي أو الاستدلال الجماعي. تدعم نقاط النهاية أنواعًا مختلفة من نماذج ML المستضافة باستخدام حاويات AWS Deep Learning أو حاوياتك الخاصة باستخدام خوارزميات AI / ML المخصصة. عندما تقوم بتشغيل نقاط نهاية الاستدلال من SageMaker مع مثيلات متعددة ، يوزع SageMaker الطبعات عبر مناطق توافر خدمات متعددة (في منطقة واحدة) للإتاحة العالية.

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

مشاريع SageMaker تنفذ مجموعة من قوالب MLOps سابقة الإنشاء والتي يمكن أن تساعد في إدارة عمليات نشر نقطة النهاية. في هذا المنشور ، نوضح كيف يمكنك تمديد خط أنابيب MLOps SageMaker Projects لتمكين النشر متعدد المناطق لنقاط نهاية الاستدلال AI / ML الخاصة بك.

حل نظرة عامة

تنشر SageMaker Projects كلاً من التدريب والنشر لخطوط أنابيب MLOPs ؛ يمكنك استخدام هذه لتدريب نموذج ونشره باستخدام نقطة نهاية الاستدلال. لتقليل التعقيد وتكلفة الحل متعدد المناطق ، نفترض أنك تدرب النموذج في منطقة واحدة وتنشر نقاط نهاية الاستدلال في منطقتين أو أكثر.

يقدم هذا المنشور حلاً يعمل على تعديل قالب مشروع SageMaker بشكل طفيف لدعم النشر متعدد المناطق. لتوضيح التغييرات بشكل أفضل ، يعرض الشكل التالي كلاً من خط أنابيب MLOps القياسي الذي تم إنشاؤه تلقائيًا بواسطة SageMaker (الخطوات 1-5) بالإضافة إلى التغييرات المطلوبة لتوسيعه إلى منطقة ثانوية (الخطوات 6-11).

ينشر قالب مشاريع SageMaker تلقائيًا حل MLOps المعياري ، والذي يتضمن المكونات التالية:

  1. أمازون إيفينت بريدج شاشات كود AWS مستودعات للتغييرات ويبدأ تشغيل خط أنابيب AWS إذا تم الكشف عن رمز الالتزام.
  2. إذا كان هناك تغيير في الرمز ، AWS كود البناء ينسق التدريب النموذجي باستخدام وظائف تدريب SageMaker.
  3. بعد انتهاء مهمة التدريب ، يقوم برنامج سجل نموذج SageMaker يسجل النموذج المدرب ويفهرسه.
  4. للتحضير لمرحلة النشر ، يقوم CodeBuild بتوسيع الافتراضي تكوين سحابة AWS ملفات تكوين النموذج مع معلمات نموذج معتمد من سجل النموذج.
  5. أخيرًا ، يقوم CodePipeline بتشغيل قوالب CloudFormation لنشر النموذج المعتمد على نقاط نهاية الاستدلال المرحلي والإنتاج.

تعدل الخطوات الإضافية التالية نموذج مشاريع MLOps لتمكين نشر نموذج AI / ML في المنطقة الثانوية:

  1. نسخة طبق الأصل من ملف خدمة تخزين أمازون البسيطة حاوية (Amazon S3) في المنطقة الأولية لنماذج التخزين مطلوبة في المنطقة الثانوية.
  2. يتم تمديد قالب CodePipeline بمزيد من المراحل لتشغيل نشر عبر المنطقة للنموذج المعتمد.
  3. كجزء من عملية النشر عبر المناطق ، يستخدم قالب CodePipeline قالب CloudFormation جديدًا لنشر نقطة نهاية الاستنتاج في منطقة ثانوية. ينشر قالب CloudFormation النموذج من عناصر النموذج من حاوية النسخة المتماثلة S3 التي تم إنشاؤها في الخطوة 6.

9-11 اختياريًا ، أنشئ موارد بتنسيق الأمازون الطريق 53, بوابة أمازون APIو AWS لامدا لتوجيه حركة مرور التطبيق إلى نقاط نهاية الاستدلال في المنطقة الثانوية.

المتطلبات الأساسية المسبقة

قم بإنشاء مشروع SageMaker في منطقتك الأساسية (us-east-2 في هذا المنشور). أكمل الخطوات في إنشاء مهام سير عمل تعلم الآلة وأتمتتها وإدارتها وتوسيع نطاقها باستخدام Amazon SageMaker Pipelines حتى المقطع تعديل نموذج التعليمات البرمجية لحالة استخدام مخصصة.

قم بتحديث خط الأنابيب الخاص بك في CodePipeline

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

  1. في وحدة التحكم CodePipeline في منطقتك الأساسية ، ابحث عن خط الأنابيب الذي يحتوي على اسم مشروعك وحدده وينتهي بالنشر. تم بالفعل إنشاء خط الأنابيب هذا لك بواسطة SageMaker Projects. يمكنك تعديل خط الأنابيب هذا لإضافة مراحل نشر نقطة نهاية AI / ML للمنطقة الثانوية.
  2. اختار تعديل.
  3. اختار أضف مرحلة.
  4. في حالة اسم المرحلة، أدخل SecondaryRegionDeployment.
  5. اختار أضف مرحلة.
  6. في مجلة SecondaryRegionDeployment المرحلة ، اختر أضف مجموعة العملفي مجموعة الإجراءات هذه ، تقوم بإضافة خطوة موافقة يدوية لنشر النموذج في المنطقة الثانوية.
  7. في حالة اسم الإجراء، أدخل ManualApprovaltoDeploytoSecondaryRegion.
  8. في حالة مزود العمل، اختر الموافقة اليدوية.
  9. اترك جميع الإعدادات الأخرى في الإعدادات الافتراضية واختر تم. .
  10. في مجلة SecondaryRegionDeployment المرحلة ، اختر أضف مجموعة العمل (بعد ManualApprovaltoDeploytoSecondaryRegionفي مجموعة العمل هذه ، يمكنك إضافة خطوة نشر AWS CloudFormation عبر المناطق. تقوم بتحديد أسماء عناصر البناء التي تقوم بإنشائها لاحقًا في هذا المنشور.
  11. في حالة اسم الإجراء، أدخل DeploytoSecondaryRegion.
  12. في حالة مزود العمل، اختر تكوين سحابة AWS.
  13. في حالة بلد المنشأ، أدخل اسم المنطقة الثانوي الخاص بك (على سبيل المثال ، us-west-2).
  14. في حالة القطع الأثرية المدخلة، أدخل BuildArtifact.
  15. في حالة وضع الإجراء، أدخل CreateorUpdateStack.
  16. في حالة اسم المكدس، أدخل DeploytoSecondaryRegion.
  17. تحت قالب، ل اسم الأداة، حدد BuildArtifact.
  18. تحت قالب، ل اسم الملف، أدخل template-export-secondary-region.yml.
  19. تحول استخدم ملف التكوين على.
  20. تحت قالب، ل اسم الأداة، حدد BuildArtifact.
  21. تحت قالب، ل اسم الملف، أدخل secondary-region-config-export.json.
  22. تحت قدرات، اختر CAPABILITY_NAMED_IAM.
  23. في حالة النوع، اختر AmazonSageMakerServiceCatalogProductsUseRole تم إنشاؤها بواسطة مشاريع SageMaker.
  24. اختار تم. .
  25. اختار حفظ.
  26. إذا كان حفظ تغييرات خط الأنابيب يظهر مربع الحوار ، اختر حفظ مرة أخرى.

تعديل دور IAM

نحتاج إلى إضافة أذونات إضافية إلى إدارة الهوية والوصول AWS (IAM) AmazonSageMakerServiceCatalogProductsUseRole التي أنشأتها كتالوج خدمة AWS لتمكين الوصول إلى حاوية CodePipeline و S3 للنشر عبر المناطق.

  1. في وحدة تحكم IAM ، اختر الأدوار في جزء التنقل.
  2. ابحث عن واختر AmazonSageMakerServiceCatalogProductsUseRole.
  3. اختر سياسة IAM ضمن اسم السياسة: AmazonSageMakerServiceCatalogProductsUseRole-XXXXXXXXX.
  4. اختار تحرير النهج وثم JSON.
  5. قم بتعديل أذونات AWS CloudFormation للسماح لـ CodePipeline بمزامنة حاوية S3 في المنطقة الثانوية. يمكنك استبدال سياسة IAM الحالية بالسياسة المحدثة مما يلي جيثب ريبو (انظر السطور: 16-18 ، 198 ، 213)
  6. اختار سياسة المراجعة.
  7. اختار حفظ التغييرات.

أضف قالب النشر للمنطقة الثانوية

لتدوير نقطة نهاية للاستدلال في المنطقة الثانوية ، فإن ملف SecondaryRegionDeployment تحتاج المرحلة إلى نموذج CloudFormation (لـ endpoint-config-template-secondary-region.yml) وملف التكوين (secondary-region-config.json).

يتم تكوين قالب CloudFormation بالكامل من خلال المعلمات ؛ يمكنك تعديله ليناسب احتياجاتك. وبالمثل ، يمكنك استخدام ملف التكوين لتحديد معلمات تكوين تشغيل نقطة النهاية ، مثل نوع المثيل وعدد المثيلات:

{
  "Parameters": {
    "StageName": "secondary-prod",
    "EndpointInstanceCount": "1",
    "EndpointInstanceType": "ml.m5.large",
    "SamplingPercentage": "100",
    "EnableDataCapture": "true"
  }

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

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

لقطة شاشة لملفات التكوين

قم بتعديل ملف بناء بايثون

بعد ذلك ، نحتاج إلى تعديل النشر build.py لتمكين نشر نقطة نهاية SageMaker في المنطقة الثانوية للقيام بما يلي:

  • استرجع موقع القطع الأثرية للنموذج و سجل الأمازون المرنة للحاويات (Amazon ECR) عنوان URI لصورة النموذج في المنطقة الثانوية
  • قم بإعداد ملف معلمة يتم استخدامه لتمرير الوسائط الخاصة بالنموذج إلى قالب CloudFormation الذي ينشر النموذج في المنطقة الثانوية

يمكنك تحميل التحديث build.py ملف واستبدال الملف الموجود في مجلدك. في الاستوديو ، اختر متصفح الملفات ثم المجلد الذي يحتوي على اسم مشروعك وينتهي بـ modeldeploy. حدد موقع ملف build.py واستبدله بالملف الذي قمت بتنزيله.

يستخدم قالب CloudFormation عناصر النموذج المخزنة في حاوية S3 ومسار صورة Amazon ECR لنشر نقطة نهاية الاستدلال في المنطقة الثانوية. هذا يختلف عن النشر من سجل النموذج في المنطقة الأساسية ، لأنك لست بحاجة إلى أن يكون لديك سجل نموذج في المنطقة الثانوية.

لقطة شاشة لمعلمات البيئة الأولية والثانوية

قم بتعديل ملف buildspec

buildspec.yml يحتوي على تعليمات تديرها CodeBuild. نقوم بتعديل هذا الملف للقيام بما يلي:

  • قم بتثبيت مكتبة SageMaker Python اللازمة لدعم تشغيل الكود
  • قم بالتمرير من خلال المنطقة الثانوية والمعلمات الخاصة بالنموذج إلى build.py
  • أضف مزامنة محتوى حاوية S3 من المناطق الأساسية إلى المناطق الثانوية
  • قم بتصدير قالب Region CloudFormation الثانوي وملف المعلمة المرتبط به كعناصر أثرية لخطوة CodeBuild

فتح buildspec.yml ملف من مجلد نشر النموذج وقم بإجراء التعديلات المميزة كما هو موضح في لقطة الشاشة التالية.

لقطة من بناء ملف yaml

بدلاً من ذلك ، يمكنك تنزيل ما يلي buildspec.yml ملف لاستبدال الملف الافتراضي.

أضف متغيرات بيئة CodeBuild

في هذه الخطوة ، تقوم بإضافة معلمات التكوين المطلوبة لـ CodeBuild لإنشاء ملفات تكوين نشر النموذج في المنطقة الثانوية.

  1. في وحدة التحكم CodeBuild في المنطقة الأساسية ، ابحث عن المشروع الذي يحتوي على اسم مشروعك وينتهي بالنشر. تم بالفعل إنشاء هذا المشروع من أجلك بواسطة SageMaker Projects.

لقطة شاشة لخط أنابيب التعليمات البرمجية

  1. اختر المشروع وعلى تعديل القائمة، اختر البيئة.

لقطة شاشة للتكوينات

  1. في مجلة التكوين المتقدم القسم ، إلغاء التحديد اسمح لـ AWS CodeBuild بتعديل دور الخدمة هذا حتى يمكن استخدامه مع مشروع البناء هذا.
  2. أضف متغيرات البيئة التالية ، وحدد أسماء قوالب CloudFormation الإضافية ، والمنطقة الثانوية ، والمعلمات الخاصة بالنموذج:
    1. EXPORT_TEMPLATE_NAME_SECONDARY_REGION - إلى عن على القيم، أدخل template-export-secondary-region.yml ولل النوع، اختر نص عادي.
    2. EXPORT_TEMPLATE_SECONDARY_REGION_CONFIG - إلى عن على القيم، أدخل secondary-region-config-export.json ولل النوع، اختر نص عادي.
    3. AWS_SECONDARY_REGION - إلى عن على القيم، أدخل لنا-الغرب -2 ولأجل النوع، اختر نص عادي.
    4. الإطار - إلى عن على القيم، أدخل xgboost (استبدل بإطار العمل الخاص بك) ومن أجل النوع، اختر نص عادي.
    5. MODEL_VERSION - إلى عن على القيم، أدخل 1.0-1 (استبدل بإصدار الطراز الخاص بك) وللحصول على النوع، اختر نص عادي.
  3. انسخ قيمة ARTIFACT_BUCKET في برنامج Notepad أو محرر نصوص آخر. أنت بحاجة إلى هذه القيمة في الخطوة التالية.
  4. اختار بيئة التحديث.

أنت بحاجة إلى القيم التي حددتها لتدريب النموذج FRAMEWORK و MODEL_VERSION. على سبيل المثال ، للعثور على هذه القيم لنموذج Abalone المستخدم في نشر MLOps المعياري ، افتح Studio وعلى متصفح الملفات القائمة ، افتح المجلد الذي يحتوي على اسم مشروعك وينتهي بـ modelbuild. انتقل إلى pipelines/abalone وفتح pipeline.py ملف. يبحث عن sagemaker.image_uris.retrieve وانسخ القيم ذات الصلة.

لقطة شاشة لإطار عمل ML

قم بإنشاء حاوية نسخة S3 متماثلة في المنطقة الثانوية

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

  1. في وحدة تحكم Amazon S3 ، اختر إنشاء دلو.
  2. في حالة اسم الدلو، أدخل قيمة ARTEFACT_BUCKET نسخها في الخطوة السابقة وإلحاقها -replica حتى النهاية (على سبيل المثال ، sagemaker-project-X-XXXXXXXX-replica.
  3. في حالة منطقة AWS، أدخل منطقتك الثانوية (us-west-2).
  4. اترك كل القيم الأخرى في وضعها الافتراضي واختر إنشاء دلو.

اعتماد نموذج للنشر

تتطلب مرحلة نشر خط الأنابيب نموذجًا معتمدًا للبدء. هذا مطلوب للنشر في المنطقة الأولية.

  1. في الاستوديو (المنطقة الأساسية) ، اختر موارد SageMaker في جزء التنقل.
  2. في حالة حدد المورد لعرضه، اختر نموذج التسجيل.
  3. اختر اسم مجموعة النموذج بدءًا من اسم مشروعك.
  4. في الجزء الأيسر ، تحقق من إصدار النموذج والمرحلة والحالة.
  5. إذا ظهرت الحالة معلقة ، فاختر إصدار النموذج ثم اختر تحديث الحالة.
  6. تغيير الحالة إلى موافق عليه، ثم اختر تحديث الحالة.

انشر وتحقق من التغييرات

اكتملت الآن جميع التغييرات المطلوبة للنشر متعدد المناطق لنقطة نهاية استنتاج SageMaker الخاصة بك ويمكنك بدء عملية النشر.

  1. في الاستوديو ، احفظ جميع الملفات التي قمت بتحريرها ، واختر بوابة، واختر المستودع الذي يحتوي على اسم مشروعك وينتهي بالنشر.
  2. اختر علامة الجمع لإجراء تغييرات.
  3. تحت تغير، أضف build.py و buildspec.yml.
  4. تحت غير متتبع، أضف endpoint-config-template-secondary-region.yml و secondary-region-config.json.
  5. أدخل تعليقًا في نبذة عامة الحقل واختيار ارتكب.
  6. ادفع التغييرات إلى المستودع عن طريق الاختيار دفع.

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

تأكد من تقديم الموافقة اليدوية للنشر في الإنتاج والمنطقة الثانوية.

يمكنك التحقق من إنشاء نقطة نهاية المنطقة الثانوية على وحدة تحكم SageMaker ، عن طريق الاختيار لوحة المعلومات في جزء التنقل وتأكيد حالة نقطة النهاية في آخر الزوار.

لقطة شاشة للوحة معلومات صانع حكيم

إضافة بوابة API والطريق 53 (اختياري)

يمكنك اختياريًا اتباع التعليمات الموجودة في اتصل بنقطة نهاية نموذج Amazon SageMaker باستخدام Amazon API Gateway و AWS Lambda لفضح نقطة نهاية استدلال SageMaker في المنطقة الثانوية كواجهة برمجة تطبيقات باستخدام بوابة API و Lambda.

تنظيف

لحذف مشروع SageMaker ، راجع احذف مشروع MLOps باستخدام Amazon SageMaker Studio. لضمان إتلاف نقطة نهاية الاستدلال الثانوي ، انتقل إلى وحدة تحكم AWS CloudFormation واحذف الكدسات ذات الصلة في المناطق الأساسية والثانوية ؛ هذا يدمر نقاط نهاية استنتاج SageMaker.

وفي الختام

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

يرجى إخبارنا بتعليقاتك في قسم التعليقات.


حول المؤلف

تمكين CI / CD لنقاط نهاية Amazon SageMaker متعددة المناطق ذكاء بيانات PlatoBlockchain. البحث العمودي. عاي. مهران نجفي ، دكتوراه ، هو مهندس حلول أقدم في AWS ويركز على حلول AI / ML و SaaS في Scale.

تمكين CI / CD لنقاط نهاية Amazon SageMaker متعددة المناطق ذكاء بيانات PlatoBlockchain. البحث العمودي. عاي.ستيفن عليخين هو كبير مهندسي الحلول في AWS ويركز على MLOps في Scale.

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

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