كيف أنشأت VMware خط أنابيب MLOps من البداية باستخدام GitLab و Amazon MWAA و Amazon SageMaker

كيف أنشأت VMware خط أنابيب MLOps من البداية باستخدام GitLab و Amazon MWAA و Amazon SageMaker

عقدة المصدر: 2009167

تمت كتابة هذا المنشور بالاشتراك مع ماهيما أغاروال ، مهندس التعلم الآلي ، وديباك ميتيم ، مدير الهندسة الأول ، في VMware Carbon Black

VMware الكربون الأسود هو حل أمني مشهور يوفر الحماية ضد مجموعة كاملة من الهجمات الإلكترونية الحديثة. مع تيرابايت من البيانات التي تم إنشاؤها بواسطة المنتج ، يركز فريق التحليلات الأمنية على بناء حلول التعلم الآلي (ML) لسطح الهجمات الحرجة وتسليط الضوء على التهديدات الناشئة من الضوضاء.

من الأهمية بمكان لفريق VMware Carbon Black تصميم وبناء خط أنابيب MLOps مخصص من طرف إلى طرف ينسق وأتمتة تدفقات العمل في دورة حياة ML ويتيح تدريب النموذج والتقييمات وعمليات النشر.

هناك غرضان رئيسيان لبناء خط الأنابيب هذا: دعم علماء البيانات لتطوير نموذج المرحلة المتأخرة ، وتنبؤات النماذج السطحية في المنتج من خلال تقديم النماذج بكميات كبيرة وفي حركة مرور الإنتاج في الوقت الفعلي. لذلك ، اختار VMware Carbon Black و AWS إنشاء خط أنابيب MLOps مخصص باستخدام الأمازون SageMaker لسهولة استخدامه وتعدد استخداماته وبنيته التحتية المدارة بالكامل. نقوم بتنسيق تدريب ML وخطوط أنابيب النشر الخاصة بنا باستخدام تدفقات عمل أمازون المدارة لتدفق أباتشي (Amazon MWAA) ، والتي تمكننا من التركيز أكثر على تأليف تدفقات العمل وخطوط الأنابيب برمجيًا دون الحاجة إلى القلق بشأن التوسع التلقائي أو صيانة البنية التحتية.

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

في هذا المنشور ، يناقش مهندسو VMware Carbon Black و AWS كيفية إنشاء وإدارة تدفقات عمل ML مخصصة باستخدام Gitlabو Amazon MWAA و SageMaker. نناقش ما حققناه حتى الآن ، والمزيد من التحسينات على خط الأنابيب ، والدروس المستفادة على طول الطريق.

حل نظرة عامة

يوضح الرسم البياني التالي بنية منصة ML.

تصميم حل عالي المستوى

تصميم حل عالي المستوى

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

يوضح مخطط البنية التالي سير العمل الشامل والمكونات المشاركة في خط أنابيب MLOps الخاص بنا.

سير العمل الشامل

سير العمل الشامل

يتم تنظيم تدريب نموذج ML وتقييمه وخطوط أنابيب النشر باستخدام Amazon MWAA ، والمشار إليها باسم إخراج الحلقية الرسم البياني (DAG). DAG عبارة عن مجموعة من المهام معًا ، منظمة حسب التبعيات والعلاقات لتوضيح كيفية تشغيلها.

على مستوى عالٍ ، تشتمل بنية الحل على ثلاثة مكونات رئيسية:

  • مستودع كود خط الأنابيب ML
  • تدريب نموذج ML وخط أنابيب التقييم
  • خط أنابيب نشر نموذج ML

دعونا نناقش كيفية إدارة هذه المكونات المختلفة وكيف تتفاعل مع بعضها البعض.

مستودع كود خط الأنابيب ML

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

يدير خط أنابيب MLOps GitLab مجموعة معينة من المراحل. يجري التحقق الأساسي من الكود باستخدام pylint ، ويحزم تدريب النموذج ورمز الاستدلال داخل صورة Docker ، وينشر صورة الحاوية إلى سجل الأمازون المرنة للحاويات (أمازون ECR). Amazon ECR عبارة عن سجل حاويات مُدار بالكامل يوفر استضافة عالية الأداء ، بحيث يمكنك نشر صور التطبيق والتحف بشكل موثوق في أي مكان.

تدريب نموذج ML وخط أنابيب التقييم

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

بعد أن يتم تشغيل خط الأنابيب بنجاح ، فإنه يدير التدريب والتقييم DAG ، والذي بدوره يبدأ تدريب النموذج في SageMaker. في نهاية خط التدريب هذا ، تتلقى مجموعة المستخدمين المحددة إشعارًا بالتدريب ونتائج تقييم النموذج عبر البريد الإلكتروني من خلال خدمة إعلام أمازون البسيطة (Amazon SNS) و Slack. Amazon SNS هي خدمة عامة / فرعية مُدارة بالكامل لمراسلة A2A و ​​A2P.

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

خط أنابيب نشر نموذج ML

لبدء النشر ، يبدأ المستخدم وظيفة GitLab التي تقوم بتشغيل DAG من خلال نفس وظيفة Lambda. بعد تشغيل خط الأنابيب بنجاح ، يقوم بإنشاء أو تحديث نقطة نهاية SageMaker بالنموذج الجديد. يرسل هذا أيضًا إشعارًا بتفاصيل نقطة النهاية عبر البريد الإلكتروني باستخدام Amazon SNS و Slack.

في حالة حدوث عطل في أي من خطوط الأنابيب ، يتم إخطار المستخدمين عبر نفس قنوات الاتصال.

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

في الأقسام التالية ، نتوسع في المكونات المختلفة ونتعمق في التفاصيل.

GitLab: نماذج الحزم وخطوط أنابيب التشغيل

نحن نستخدم GitLab كمستودع رمز خاص بنا ولخط الأنابيب لتعبئة كود النموذج وتشغيل Airflow DAGs المصب.

خط أنابيب متعدد المشاريع

يتم استخدام ميزة خط أنابيب GitLab متعدد المشاريع حيث يكون خط الأنابيب الأصلي (المنبع) عبارة عن نموذج الريبو وخط الأنابيب الفرعي (المصب) هو مستودع MLOps. يحتفظ كل repo بـ .gitlab-ci.yml ، وتؤدي كتلة التعليمات البرمجية التالية الممكّنة في خط أنابيب المنبع إلى تشغيل خط أنابيب MLOps المصب.

trigger: project: path/to/ml-ops branch: main strategy: depend

يرسل خط أنابيب المنبع عبر رمز النموذج إلى خط أنابيب المصب حيث يتم تشغيل وظائف CI التغليف والنشر. يتم الاحتفاظ بالرمز الخاص بحاوية رمز النموذج ونشره في Amazon ECR بواسطة خط أنابيب MLOps. يرسل المتغيرات مثل ACCESS_TOKEN (يمكن إنشاؤها تحت الإعدادات, الوصول للتعاليم) ، JOB_ID (للوصول إلى القطع الأثرية الأولية) ، ومتغيرات $ CI_PROJECT_ID (معرف المشروع لنموذج الريبو) ، بحيث يمكن لخط أنابيب MLOps الوصول إلى ملفات كود النموذج. مع ال المصنوعات الوظيفية من Gitlab ، يصل الريبو المصب إلى القطع الأثرية البعيدة باستخدام الأمر التالي:

curl --output artifacts.zip --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"

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

بعد نشر صورة النموذج على Amazon ECR ، يقوم خط أنابيب MLOps بتشغيل خط أنابيب تدريب Amazon MWAA باستخدام Lambda. بعد موافقة المستخدم ، يتم تشغيل خط أنابيب Amazon MWAA لنشر النموذج أيضًا باستخدام نفس وظيفة Lambda.

تعيين الإصدارات الدلالية وتمرير الإصدارات في اتجاه مجرى النهر

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

إعادة التدريب

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

نحن ندير الجدول اليومي لخط أنابيب إعادة التدريب باستخدام جدول خطوط الأنابيب GitLab.

Terraform: إعداد البنية التحتية

بالإضافة إلى مجموعة Amazon MWAA ومستودعات ECR ووظائف Lambda وموضوع SNS ، يستخدم هذا الحل أيضًا إدارة الهوية والوصول AWS (IAM) الأدوار والمستخدمين والسياسات ؛ خدمة تخزين أمازون البسيطة (Amazon S3) دلاء و الأمازون CloudWatch معيد التوجيه السجل.

لتبسيط إعداد البنية التحتية وصيانتها للخدمات المتضمنة في جميع أنحاء خط الأنابيب لدينا ، نستخدمها Terraform لتنفيذ البنية التحتية كرمز. عندما تكون تحديثات البنية التحتية مطلوبة ، تؤدي تغييرات الكود إلى تشغيل خط أنابيب GitLab CI الذي أنشأناه ، والذي يتحقق من صحة التغييرات وينشرها في بيئات مختلفة (على سبيل المثال ، إضافة إذن إلى سياسة IAM في حسابات dev و stage و prod).

Amazon ECR و Amazon S3 و Lambda: تسهيل خط الأنابيب

نحن نستخدم الخدمات الرئيسية التالية لتسهيل خط الأنابيب لدينا:

  • أمازون ECR - للحفاظ على عمليات الاسترداد الملائمة لصور حاوية النموذج والسماح بها ، نقوم بتمييزها بإصدارات دلالية وتحميلها إلى مستودعات ECR التي تم إعدادها لكل ${project_name}/${model_name} من خلال Terraform. يتيح ذلك طبقة جيدة من العزلة بين النماذج المختلفة ، ويسمح لنا باستخدام خوارزميات مخصصة وتنسيق طلبات الاستدلال والاستجابات لتضمين معلومات بيان النموذج المطلوبة (اسم النموذج والإصدار ومسار بيانات التدريب وما إلى ذلك).
  • الأمازون S3 - نستخدم دلاء S3 لاستمرار بيانات تدريب النموذج ، والتحف النموذجية المدربة لكل نموذج ، و DAGs Airflow ، وغيرها من المعلومات الإضافية التي تتطلبها خطوط الأنابيب.
  • لامدا - نظرًا لنشر مجموعة Airflow الخاصة بنا في VPC منفصل لاعتبارات أمنية ، لا يمكن الوصول إلى DAGs مباشرة. لذلك ، نستخدم وظيفة Lambda ، التي يتم الاحتفاظ بها أيضًا مع Terraform ، لتشغيل أي DAGs محددة بواسطة اسم DAG. مع إعداد IAM المناسب ، تقوم وظيفة GitLab CI بتشغيل وظيفة Lambda ، والتي تمر عبر التكوينات وصولاً إلى التدريب أو النشر DAGs المطلوبة.

Amazon MWAA: خطوط التدريب والنشر

كما ذكرنا سابقًا ، نستخدم Amazon MWAA لتنظيم خطوط أنابيب التدريب والنشر. نحن نستخدم مشغلي SageMaker المتاحين في حزمة مزود أمازون لـ Airflow للتكامل مع SageMaker (لتجنب قالب jinja).

نستخدم المشغلين التاليين في خط أنابيب التدريب هذا (كما هو موضح في مخطط سير العمل التالي):

خط أنابيب التدريب MWAA

خط أنابيب التدريب MWAA

نستخدم المشغلين التاليين في خط أنابيب النشر (كما هو موضح في الرسم التخطيطي لسير العمل التالي):

نموذج خط أنابيب النشر

نموذج خط أنابيب النشر

نستخدم Slack و Amazon SNS لنشر رسائل الخطأ / النجاح ونتائج التقييم في كلا خطي الأنابيب. يوفر Slack مجموعة واسعة من الخيارات لتخصيص الرسائل ، بما في ذلك ما يلي:

  • مشغل SnsPublish - نحن نستخدم مشغل SnsPublish لإرسال إشعارات النجاح / الفشل إلى رسائل البريد الإلكتروني للمستخدم
  • سلاك API - أنشأنا ملف عنوان URL لخطاف الويب الوارد للحصول على إخطارات خط الأنابيب إلى القناة المطلوبة

CloudWatch و VMware Wavefront: المراقبة والتسجيل

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

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

الفوائد التجارية وما هو التالي

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

مع تحويل عبء دورة حياة ML إلى SageMaker ، فقد وفرت بنية تحتية محسّنة وقابلة للتطوير لتدريب النموذج ونشره. ساعدنا النموذج الذي يتم تقديمه مع SageMaker في عمل تنبؤات في الوقت الفعلي مع زمن انتقال وقدرات مراقبة بالمللي ثانية. استخدمنا Terraform لسهولة الإعداد وإدارة البنية التحتية.

تتمثل الخطوات التالية لخط الأنابيب هذا في تعزيز خط أنابيب التدريب النموذجي بقدرات إعادة التدريب سواء كان مجدولًا أو بناءً على اكتشاف الانجراف ، ودعم نشر الظل أو اختبار A / B لنشر النموذج المؤهل والأسرع ، وتتبع سلالة ML. نحن أيضا نخطط للتقييم خطوط أنابيب Amazon SageMaker لأن تكامل GitLab مدعوم الآن.

الدروس المستفادة

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

بعد تسليم النموذج الأول عبر خط الأنابيب ، ظهرت القوالب بشكل طبيعي بناءً على الرؤى من عملنا السابق. لا يمكن لخط الأنابيب أن يفعل كل شيء منذ اليوم الأول.

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

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

وفي الختام

في هذا المنشور ، أظهرنا كيف أنشأنا حل MLOps باستخدام SageMaker و Amazon MWAA الذي أتمتة عملية نشر النماذج في الإنتاج ، مع تدخل يدوي ضئيل من علماء البيانات. نحن نشجعك على تقييم خدمات AWS المتنوعة مثل SageMaker و Amazon MWAA و Amazon S3 و Amazon ECR لبناء حل MLOps كامل.

* تعد Apache و Apache Airflow و Airflow إما علامات تجارية مسجلة أو علامات تجارية لشركة مؤسسة اباتشي للبرمجيات في الولايات المتحدة و / أو دول أخرى.


حول المؤلف

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

ماهيما أغاروال هو مهندس تعلم الآلة في VMware ، وحدة الكربون الأسود.
تعمل على تصميم وبناء وتطوير المكونات الأساسية وهندسة النظام الأساسي للتعلم الآلي لوحدة VMware CB SBU.

فامشي كريشنا إينابوثالا مهندس معماري متخصص في الذكاء الاصطناعي في AWS. يعمل مع عملاء من قطاعات مختلفة لتسريع مبادرات البيانات والتحليلات والتعلم الآلي عالية التأثير. إنه متحمس لأنظمة التوصية ، ومعالجة اللغات الطبيعية ، ومجالات رؤية الكمبيوتر في الذكاء الاصطناعي والتعلم الآلي. خارج العمل ، Vamshi هو متحمس RC ، يبني معدات RC (طائرات ، سيارات ، وطائرات بدون طيار) ، كما أنه يستمتع بالبستنة.

سهل ثابار هو مهندس حلول المشاريع. إنه يعمل مع العملاء لمساعدتهم على إنشاء تطبيقات عالية التوفر وقابلة للتطوير ومرنة على سحابة AWS. يركز حاليًا على الحاويات وحلول التعلم الآلي.

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

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