شارك في كتابة منشور المدونة هذا كل من جوناثان لي ونيلسون ليونج وبول مين وتروي سكويلاتشي من شركة Intel.
In جزء 1 في هذا المنشور ، ناقشنا كيفية تعاون Intel®3DAT معها خدمات AWS الاحترافية للتعلم الآلي (MLPS) لإنشاء تطبيق AI SaaS قابل للتطوير. يستخدم برنامج 3DAT رؤية الكمبيوتر والذكاء الاصطناعي للتعرف على أكثر من 1,000 نقطة بيانات للميكانيكا الحيوية وتتبعها وتحليلها من الفيديو القياسي. يتيح للعملاء إنشاء منتجات غنية وقوية تعتمد على الميكانيكا الحيوية ، مثل تطبيقات الويب والهاتف المحمول مع بيانات أداء مفصلة وتصورات ثلاثية الأبعاد.
في الجزء الثاني من هذا المنشور ، نتعمق أكثر في كل مرحلة من مراحل الهندسة المعمارية. نستكشف خدمات AWS المستخدمة لتلبية متطلبات تصميم 2DAT ، بما في ذلك الأمازون كينسيس دفق البيانات و خدمة أمازون مطاطا Kubernetes (Amazon EKS) ، من أجل النشر المتدرج لنماذج تقدير الوضع الضرورية لهذا البرنامج كتطبيق خدمة (SaaS).
نظرة عامة على العمارة
كان الهدف الأساسي لفريق MLPS هو إنتاج خطوط أنابيب نموذج تقدير الوضع ثنائي الأبعاد وثلاثي الأبعاد وإنشاء تطبيق وظيفي وقابل للتطوير. يوضح الرسم البياني التالي بنية الحل.
يتم تقسيم الهيكل الكامل إلى خمسة مكونات رئيسية:
- طبقات واجهة تطبيق المستخدم
- قاعدة البيانات
- تنسيق سير العمل
- توليد الاستدلال على تقدير تشكل قابلة للتطوير
- مراقبة العمليات
دعنا ندخل في التفاصيل حول كل مكون ، وتفاعلاتهم ، والأساس المنطقي وراء اختيارات التصميم.
طبقات واجهة تطبيق المستخدم
يوضح الرسم البياني التالي طبقات واجهة التطبيق التي توفر وصول المستخدم والتحكم في التطبيق وموارده.
تدعم نقاط الوصول هذه حالات استخدام مختلفة بناءً على شخصيات العملاء المختلفة. على سبيل المثال ، يمكن لمستخدم التطبيق إرسال وظيفة عبر CLI ، بينما يمكن للمطور إنشاء تطبيق باستخدام Python SDK وتضمين ذكاء تقدير الوضع في تطبيقاته. تم إنشاء CLI و SDK كمكونات معيارية — كلتا الطبقتين عبارة عن أغلفة لطبقة API ، والتي تم إنشاؤها باستخدام بوابة أمازون API لحل مكالمات API و AWS Lambda المرتبط وظائف ، والتي تعتني بمنطق الواجهة الخلفية المرتبط بكل استدعاء لواجهة برمجة التطبيقات. كانت هذه الطبقات مكونًا مهمًا لفريق Intel OTG لأنها تفتح قاعدة عريضة من العملاء الذين يمكنهم استخدام تطبيق SaaS هذا بشكل فعال.
طبقة API
يحتوي الحل على مجموعة أساسية من تسعة واجهات برمجة تطبيقات ، والتي تتوافق مع أنواع الكائنات التي تعمل على هذا النظام الأساسي. تحتوي كل واجهة برمجة تطبيقات على ملف Python الذي يحدد إجراءات API التي يمكن تشغيلها. يتم تعيين معرف كائن بشكل تسلسلي عند إنشاء كائنات جديدة. يتم تخزين سمات هذه الكائنات وتعقبها في ملف أمازون أورورا Serverless قاعدة البيانات باستخدام هذا المعرف. لذلك ، ترتبط إجراءات API بالوظائف المحددة في ملف مركزي يحتوي على منطق الواجهة الخلفية للاستعلام عن قاعدة بيانات Aurora. يستخدم منطق الخلفية هذا Boto3 عميل Amazon RDS DataService للوصول إلى قاعدة البيانات العنقودية.
الاستثناء الوحيد هو /job
API ، الذي يحتوي على ملف create_job
الطريقة التي تتعامل مع إرسال الفيديو لإنشاء مهمة معالجة جديدة. تبدأ هذه الطريقة في وظائف خطوة AWS منطق سير العمل لتشغيل الوظيفة. بالمرور في job_id
، تستخدم هذه الطريقة Boto3 عميل وظائف الخطوة لاستدعاء start_execution
طريقة محددة stateMachineARN
(اسم مورد أمازون).
تحتوي واجهات برمجة التطبيقات للكائنات الثمانية على الأساليب ونمط الوصول المماثل كما هو موجز في الجدول التالي.
نوع الطريقة | اسم الوظيفة | الوصف |
للحصول على | list_[object_name]s |
تحديد كافة الكائنات من هذا النوع من قاعدة البيانات وعرضها. |
سأعين | create_[object] |
يُدرج سجل كائن جديد مع المدخلات المطلوبة في قاعدة البيانات. |
للحصول على | get_[object] |
يحدد سمات الكائن بناءً على معرف الكائن من قاعدة البيانات ويعرض. |
ضع | update_[object] |
يحدّث سجل كائن موجود بالمدخلات المطلوبة. |
حذف | delete_[object] |
حذف سجل كائن موجود من قاعدة البيانات بناءً على معرف الكائن. |
تفاصيل واجهات برمجة التطبيقات التسعة هي كما يلي:
- / المستخدم - المستخدم هو هوية الشخص المرخص له بتقديم وظائف لهذا التطبيق. يتطلب إنشاء مستخدم اسم مستخدم وبريد إلكتروني للمستخدم ومعرف المجموعة الذي ينتمي إليه المستخدم.
- / user_group - مجموعة المستخدمين هي مجموعة من المستخدمين. يتم تعيين كل مجموعة مستخدمين إلى مشروع واحد ومجموعة معلمات خط أنابيب واحدة. للحصول على مستويات مختلفة (من حيث موارد البنية التحتية ومعلمات خطوط الأنابيب) ، يتم تقسيم المستخدمين إلى مجموعات مستخدمين. يمكن لكل مستخدم أن ينتمي إلى مجموعة مستخدم واحدة فقط. يتطلب إنشاء مجموعة مستخدمين معرف المشروع ومعرف مجموعة معلمات خط الأنابيب واسم مجموعة المستخدمين ووصف مجموعة المستخدمين. لاحظ أن مجموعات المستخدمين تختلف عن أدوار المستخدم المحددة في حساب AWS. يتم استخدام الأخير لتوفير مستوى وصول مختلف بناءً على أدوار الوصول الخاصة بهم (على سبيل المثال المسؤول).
- /مشروع - يستخدم المشروع لتجميع مجموعات مختلفة من موارد البنية التحتية معًا. يرتبط المشروع بملف واحد
project_cluster_url
(مجموعة Aurora) لتسجيل المستخدمين والوظائف والبيانات الوصفية الأخرى ، أproject_queue_arn
(Kinesis Data Streams ARN) ، وبيئة وقت تشغيل الحوسبة (يتم التحكم فيها حاليًا عبر Cortex) المستخدمة لتشغيل الاستدلال على دفعات الإطارات أو المعالجة اللاحقة على مقاطع الفيديو. ترتبط كل مجموعة مستخدمين بمشروع واحد ، وهذه الآلية هي كيفية تمكين المستويات المختلفة من حيث زمن الوصول وقوة الحوسبة لمجموعات مختلفة من المستخدمين. يتطلب إنشاء المشروع اسم المشروع وعنوان URL الخاص بمجموعة المشروع وقائمة انتظار المشروع ARN. - /خط انابيب - يرتبط خط الأنابيب بتكوين واحد لسلسلة من حاويات المعالجة التي تقوم بمعالجة الفيديو في مجموعة توليد استدلال Amazon EKS المنسقة بواسطة Cortex (راجع القسم الخاص بإنشاء استدلال معالجة الفيديو للحصول على مزيد من التفاصيل). عادة ، يتكون هذا من ثلاث حاويات: المعالجة المسبقة وفك التشفير ، واكتشاف الكائن ، وتقدير الوضع. على سبيل المثال ، تعتبر خطوة فك التشفير وكشف الكائن هي نفسها بالنسبة لخطوط الأنابيب ثنائية وثلاثية الأبعاد ، ولكن تبديل الحاوية الأخيرة باستخدام نتائج HRNet أو 2DMPPE في مجموعة المعلمات لخطوط أنابيب المعالجة ثنائية الأبعاد مقابل ثلاثية الأبعاد. يمكنك إنشاء تكوينات جديدة لتحديد خطوط الأنابيب المحتملة التي يمكن استخدامها للمعالجة ، وتتطلب كمدخل ملف Python جديد في Cortex repo الذي يوضح تسلسل استدعاء نقاط النهاية للنموذج الذي يحدد خط الأنابيب هذا (انظر القسم الخاص بإنشاء استدلال معالجة الفيديو ). نقطة نهاية خط الأنابيب هي نقطة نهاية Cortex التي يتم استدعاؤها لمعالجة إطار واحد. يتطلب إنشاء خط أنابيب اسم خط أنابيب ووصف خط أنابيب ونقطة نهاية خط أنابيب.
- / pipeline_parameter_set - مجموعة معلمات خط الأنابيب عبارة عن مجموعة JSON مرنة من معلمات متعددة (وقت تشغيل تكوين خط الأنابيب) لخط أنابيب معين ، وتتم إضافتها لتوفير المرونة للتخصيص المستقبلي عند الحاجة إلى أوقات تشغيل تكوين خطوط أنابيب متعددة. يمكن ربط مجموعات المستخدمين بمجموعة معينة من معلمات خط الأنابيب ، والغرض منها هو الحصول على مجموعات مختلفة من المعلمات لكل مجموعة مستخدمين ولكل خط أنابيب. كانت هذه إضافة مهمة تطلعية لشركة Intel OTG لبناء التخصيص الذي يدعم قابلية النقل حيث يبدأ العملاء المختلفون ، وخاصة موردي البرامج المستقلين ، في استخدام التطبيق.
- / pipeline_parameters - مجموعة واحدة من معلمات خط الأنابيب هي إنشاء مثيل لمجموعة معلمات خط الأنابيب. هذا يجعله 1: تعيين العديد من معلمات خط الأنابيب إلى معلمات خط الأنابيب. تتطلب واجهة برمجة التطبيقات هذه معرفًا لخط الأنابيب لربطه بمجموعة معلمات خط الأنابيب التي تتيح إنشاء خط أنابيب لتعيين 1: 1 لمعلمات خط الأنابيب إلى خط الأنابيب. المدخلات الأخرى المطلوبة بواسطة واجهة برمجة التطبيقات هذه هي معرف مجموعة معلمات خط الأنابيب ، وقيمة معلمات خط الأنابيب ، واسم معلمات خط الأنابيب.
- /فيديو - يتم استخدام كائن الفيديو لتحديد مقاطع الفيديو الفردية التي تشكل حزمة .zip يتم إرسالها أثناء العمل. يتم تقسيم هذا الملف إلى عدة مقاطع فيديو بعد التقديم. مقطع فيديو مرتبط بـ
job_id
للوظيفة التي يتم فيها إرسال حزمة .zip ، و خدمة تخزين أمازون البسيطة مسارات (Amazon S3) لمواقع مقاطع الفيديو الأولية المنفصلة ونتائج المعالجة اللاحقة لكل مقطع فيديو. يحتوي كائن الفيديو أيضًا على نسبة تقدم الفيديو ، والتي يتم تحديثها باستمرار أثناء معالجة مجموعات الإطارات الفردية لهذا الفيديو ، بالإضافة إلى علامة حالة الفيديو للإكمال أو عدم الاكتمال. يتطلب إنشاء مقطع فيديو معرف الوظيفة ومسار الفيديو ومسار نتائج الفيديو ونسبة تقدم الفيديو وحالة الفيديو. - / frame_batch - A
frame_batch
الكائن عبارة عن مجموعة صغيرة من الإطارات تم إنشاؤها عن طريق أخذ عينات من مقطع فيديو واحد. يوفر فصل الفيديو إلى مجموعات من الإطارات ذات الحجم العادي رافعة لضبط زمن الانتقال وزيادة الموازاة والإنتاجية. هذه هي الوحدة الحبيبية التي يتم تشغيلها من خلال تدفقات بيانات Kinesis للاستدلال. يتطلب إنشاء دُفعة الإطار معرّف الفيديو ، ورقم بدء دُفعة الإطار ، ورقم نهاية دُفعة الإطار ، ومسار إدخال دُفعة الإطار ، ومسار نتائج دُفعة الإطار ، وحالة دُفعة الإطار. - /وظيفة - يتم استخدام واجهة برمجة التطبيقات التفاعلية هذه لتقديم الملف لبدء مهمة المعالجة. تحتوي واجهة برمجة التطبيقات هذه على وظيفة مختلفة عن واجهات برمجة التطبيقات الأخرى للكائنات لأنها المسار المباشر للتفاعل مع تنسيق سير عمل وظائف الخطوة الخلفية لمعالجة الفيديو ومجموعة Amazon EKS. تتطلب واجهة برمجة التطبيقات هذه معرف مستخدم ومعرف المشروع ومعرف خط الأنابيب ومعرف مجموعة معلمات خط الأنابيب ومعلمات الوظيفة وحالة الوظيفة. في معلمات الوظيفة ، يتم تحديد مسار ملف الإدخال ، وهو الموقع في Amazon S3 حيث توجد حزمة .zip لمقاطع الفيديو المراد معالجتها. يتم التعامل مع تحميل الملف بامتداد
upload_handler
الطريقة ، والتي تنشئ عنوان URL S3 محددًا مسبقًا للمستخدم لوضع ملف. WORKFLOW_STATEMACHINE_ARN هو متغير بيئة يتم تمريره إلى ملفcreate_job
API لتحديد مكان إرسال حزمة .zip للفيديو مع مسار ملف الإدخال لبدء العمل.
يلخص الجدول التالي وظائف API.
نوع الطريقة | المسمى الوظيفي | الوصف |
للحصول على | list_jobs |
يختار جميع الوظائف من قاعدة البيانات ويعرض. |
سأعين | create_ job |
يُدرج سجل عمل جديد مع معرف المستخدم ومعرف المشروع ومعرف خط الأنابيب ومعرف مجموعة معلمات خط الأنابيب ومسار نتائج الوظيفة ومعلمات الوظيفة وحالة الوظيفة. |
للحصول على | get_ job |
يختار سمات الوظيفة بناءً على معرّف الوظيفة من قاعدة البيانات ويعرض. |
للحصول على | upload_handler |
يولد عنوان URL S3 محددًا مسبقًا كموقع لتحميل ملف .zip. يتطلب اسم حاوية S3 ويتوقع نوع ملف تطبيق / مضغوط. |
طبقة Python SDK
بناءً على واجهات برمجة التطبيقات ، أنشأ الفريق مكتبة عميل Python SDK كمجمع لتسهيل وصول المطورين إلى طرق API. استخدموا المصدر المفتوح الشعر، الذي يتعامل مع حزم Python وإدارة التبعية. قاموا بإنشاء client.py
الملف الذي يحتوي على وظائف التفاف كل من واجهات برمجة التطبيقات باستخدام Python requests
مكتبة للتعامل مع طلبات واستثناءات API.
للمطورين لإطلاق Intel 3DAT SDK ، فإنهم بحاجة إلى تثبيت وبناء حزمة الشعر. بعد ذلك ، يمكنهم إضافة استيراد Python بسيط لـ intel_3dat_sdk
لأي كود Python.
لاستخدام العميل ، يمكنك إنشاء مثيل للعميل ، مع تحديد نقطة نهاية API:
يمكنك بعد ذلك استخدام العميل لاستدعاء الطرق الفردية مثل create_pipeline
الطريقة (انظر الكود التالي) ، مع الأخذ في الاعتبار الحجج المناسبة مثل اسم خط الأنابيب ووصف خط الأنابيب.
طبقة CLI
وبالمثل ، بنى الفريق على واجهات برمجة التطبيقات لإنشاء واجهة سطر أوامر للمستخدمين الذين يرغبون في الوصول إلى طرق واجهة برمجة التطبيقات بواجهة مباشرة دون الحاجة إلى كتابة كود بايثون. استخدموا حزمة بايثون مفتوحة المصدر انقر (مجموعة إنشاء واجهة سطر الأوامر). تتمثل مزايا إطار العمل هذا في التداخل العشوائي للأوامر وإنشاء صفحة تعليمات تلقائية ودعم التحميل البطيء للأوامر الفرعية في وقت التشغيل. في نفس client.py
ملف كما في SDK ، تم التفاف كل طريقة عميل SDK باستخدام Click وتم تحويل وسيطات الطريقة المطلوبة إلى إشارات سطر أوامر. ثم يتم استخدام مدخلات العلم عند استدعاء الأمر SDK.
لبدء تشغيل CLI ، يمكنك استخدام ملف CLI configure
أمر. ستتم مطالبتك بعنوان URL لنقطة النهاية:
يمكنك الآن استخدام CLI لاستدعاء أوامر مختلفة متعلقة بأساليب واجهة برمجة التطبيقات ، على سبيل المثال:
قاعدة البيانات
كقاعدة بيانات ، يستخدم هذا التطبيق Aurora Serverless لتخزين البيانات الوصفية المرتبطة بكل من واجهات برمجة التطبيقات مع MYSQL كمحرك قاعدة البيانات. يلتزم اختيار خدمة قاعدة بيانات Aurora Serverless بمبدأ التصميم لتقليل عبء البنية التحتية من خلال استخدام خدمات AWS بدون خادم عندما يكون ذلك ممكنًا. الرسم البياني التالي يوضح هذه العمارة.
• وضع المحرك بدون خادم يلبي نمط الاستخدام المتقطع لأن هذا التطبيق يصل إلى عملاء جدد ولا تزال أعباء العمل غير مؤكدة. عند تشغيل نقطة نهاية قاعدة بيانات ، لا يلزم حجم مثيل قاعدة بيانات معين ، فقط الحد الأدنى والأقصى لنطاق سعة الكتلة. يتولى Aurora Serverless التزويد المناسب لأسطول جهاز التوجيه ويوزع عبء العمل بين الموارد. يقوم Aurora Serverless تلقائيًا بالاحتفاظ بالنسخ الاحتياطي لمدة يوم واحد على الأقل حتى 1 يومًا. قام الفريق بتحسين الأمان من خلال تعيين القيمة الافتراضية على القيمة القصوى 35.
بالإضافة إلى ذلك ، استخدم الفريق ملف API البيانات للتعامل مع الوصول إلى مجموعة Aurora Serverless ، والتي لا تتطلب اتصالاً مستمراً ، وبدلاً من ذلك توفر نقطة نهاية HTTP آمنة وتكاملًا مع مجموعات AWS SDK. تستخدم هذه الميزة مدير أسرار AWS لتخزين بيانات اعتماد قاعدة البيانات حتى لا تكون هناك حاجة لتمرير بيانات الاعتماد بشكل صريح. تمت كتابة البرامج النصية لإنشاء جدول في ملفات .sql لكل من الجداول التسعة التي تتوافق مع واجهات برمجة التطبيقات التسعة. نظرًا لاحتواء قاعدة البيانات هذه على جميع البيانات الوصفية وحالة الكائنات في النظام ، تم تشغيل طرق واجهة برمجة التطبيقات باستخدام أوامر SQL المناسبة (على سبيل المثال select * from Job
ل list_jobs
API) وتمريرها إلى execute_statement
طريقة من عميل Amazon RDS في Data API.
تنسيق سير العمل
تمت معالجة العمود الفقري الوظيفي للتطبيق باستخدام وظائف الخطوة لتنسيق سير العمل ، كما هو موضح في الرسم التخطيطي التالي.
تتكون آلة الحالة من سلسلة من أربع وظائف Lambda ، والتي تبدأ عند تقديم وظيفة باستخدام create_job
طريقة من job
API. معرف المستخدم ومعرف المشروع ومعرف خط الأنابيب ومعرف مجموعة معلمة خط الأنابيب ومسار نتائج الوظائف ومعلمات الوظيفة وحالة الوظيفة مطلوبة لإنشاء الوظائف. يمكنك أولاً تحميل حزمة .zip لملفات الفيديو باستخدام امتداد upload_handler
طريقة من واجهة برمجة التطبيقات الخاصة بالوظيفة لإنشاء عنوان URL S3 محدد مسبقًا. أثناء تقديم المهمة ، يتم تمرير مسار ملف الإدخال عبر معلمات الوظيفة لتحديد موقع الملف. يؤدي ذلك إلى بدء تشغيل جهاز حالة سير العمل ، مما يؤدي إلى تشغيل أربع خطوات رئيسية:
- وظيفة مُهيئ Lambda
- وظيفة المرسل Lambda
- فحص الإكمال وظيفة Lambda
- وظيفة جامع لامدا
وظيفة مُهيئ Lambda
تتمثل الوظيفة الرئيسية للمبدئ في فصل حزمة .zip إلى ملفات فيديو فردية وتجهيزها للمرسل. أولاً ، يتم تنزيل ملف .zip ، ثم يتم فك ضغط واستخراج كل ملف فردي ، بما في ذلك ملفات الفيديو. يتم تحميل مقاطع الفيديو ، ويفضل أن تكون بتنسيق .mp4 ، مرة أخرى في دلو S3. باستخدام create_video
طريقة في video
API ، يتم إنشاء كائن فيديو باستخدام مسار الفيديو كمدخل. يؤدي هذا إلى إدراج البيانات الخاصة بكل مقطع فيديو في قاعدة بيانات Aurora. تعتبر أي أنواع ملفات أخرى ، مثل ملفات JSON ، بيانات وصفية ويتم تحميلها بالمثل ، ولكن لا يتم إنشاء كائن فيديو. يتم تمرير قائمة بأسماء الملفات وملفات الفيديو المستخرجة إلى الخطوة التالية.
وظيفة المرسل Lambda
تأخذ وظيفة المرسل ملفات الفيديو التي تم استخلاصها بواسطة المبدئ وتقوم بإنشاء مجموعات صغيرة من إطارات الفيديو كصور. تم تدريب معظم نماذج رؤية الكمبيوتر الحالية في الإنتاج على الصور ، لذا حتى عند معالجة الفيديو ، يتم فصلها أولاً إلى إطارات صور قبل استدلال النموذج. لا يختلف هذا الحل الحالي الذي يستخدم أحدث نموذج لتقدير الوضع - يتم تمرير دفعات الإطار من المرسل إلى Kinesis Data Streams لبدء خطوة إنشاء الاستدلال.
أولاً ، يتم تنزيل ملف الفيديو بواسطة وظيفة Lambda. يتم حساب معدل الإطارات وعدد الإطارات باستخدام امتداد FileVideoStream
وحدة من imutils.video
مكتبة المعالجة. يتم استخراج الإطارات وتجميعها وفقًا لحجم دفعة صغيرة محدد ، والذي يعد أحد المعلمات الرئيسية القابلة للضبط لخط الأنابيب هذا. باستخدام مكتبة Python pickle ، يتم تسلسل البيانات وتحميلها إلى Amazon S3. بعد ذلك ، يتم إنشاء كائن دفعة إطار وإنشاء إدخال بيانات التعريف في قاعدة بيانات Aurora. تم إنشاء وظيفة Lambda هذه باستخدام Dockerfile مع التبعيات عليه opencv-python
, numpy
و imutils
المكتبات.
فحص الإكمال وظيفة Lambda
تستمر وظيفة فحص الإكمال في الاستعلام عن قاعدة بيانات Aurora لترى ، بالنسبة لكل مقطع فيديو في حزمة .zip لهذه المهمة الحالية ، عدد مجموعات الإطارات في حالة "مكتمل". عند اكتمال جميع مجموعات الإطارات لجميع مقاطع الفيديو ، تكون عملية التحقق هذه قد اكتملت.
وظيفة جامع لامدا
تأخذ وظيفة المجمّع مخرجات الاستدلالات التي تم إجراؤها على كل إطار أثناء مرحلة المستهلك وتجمعها عبر مجموعة إطار وعبر مقطع فيديو. يتم بعد ذلك تحميل البيانات المدمجة المدمجة إلى حاوية S3. تستدعي الوظيفة بعد ذلك واجهة برمجة تطبيقات المعالجة اللاحقة لـ Cortex لخط أنابيب ML معين من أجل إجراء أي حسابات معالجة لاحقة ، وتضيف النتائج المجمعة بالفيديو إلى حاوية الإخراج. يتم حساب العديد من هذه المقاييس عبر الإطارات ، مثل السرعة والتسارع وزاوية المفصل ، لذلك يجب إجراء هذا الحساب على البيانات المجمعة. تتضمن المخرجات الرئيسية بيانات نقاط أساسية للجسم (مجمعة في تنسيق CSV) وحسابات BMA (مثل التسارع) والتراكب المرئي للنقاط الرئيسية المضافة إلى كل إطار في ملف صورة.
توليد الاستدلال على تقدير تشكل قابلة للتطوير
يحدث محرك المعالجة الذي يدعم قياس استدلال ML في هذه المرحلة. إنها تتضمن ثلاث قطع رئيسية ، لكل منها روافع التزامن الخاصة بها والتي يمكن ضبطها لمقايضات زمن الانتقال (انظر الرسم البياني التالي).
تسمح هذه البنية بإجراء التجارب في اختبار مكاسب زمن الوصول ، فضلاً عن المرونة للمستقبل عندما تتغير أعباء العمل بمزيج مختلف من شرائح المستخدم النهائي التي تصل إلى التطبيق.
تيارات بيانات Kinesis
اختار الفريق Kinesis Data Streams لأنه يُستخدم عادةً لمعالجة تدفق البيانات ، وفي هذه الحالة يكون مناسبًا جيدًا لأنه يمكنه التعامل مع دفعات الإطارات بطريقة مماثلة لتوفير قابلية التوسع والتوازي. في وظيفة مقدم Lambda ، يتم استخدام عميل Kinesis Boto3 ، مع ملف put_record
طريقة تمرير البيانات الوصفية المرتبطة بدفعة إطار واحد ، مثل معرف دفعة الإطار ، وإطار بدء دفعة الإطار ، وإطار نهاية دفعة الإطار ، وشكل الصورة ، ومعدل الإطارات ، ومعرف الفيديو.
لقد حددنا قوائم انتظار الوظائف المختلفة وتكوينات تدفق بيانات Kinesis لتعيين مستويات الإنتاجية التي ترتبط بمستوى الأولوية لمجموعات المستخدمين المختلفة. يرتبط الوصول إلى مستويات مختلفة من قوة المعالجة عن طريق تمرير قائمة انتظار المشروع ARN عند إنشاء مشروع جديد باستخدام project
API. ثم يتم ربط كل مجموعة مستخدمين بمشروع معين أثناء إنشاء مجموعة المستخدمين. تم تحديد ثلاثة تكوينات دفق افتراضية في ملف نموذج تطبيق AWS Serverless (AWS SAM) قالب البنية التحتية:
- المجموعة الأساسية
-
JobStreamShardCount
- درجة الأهمية -
PriorityJobStreamShardCount
- ذا أهيمة عليا -
HighPriorityJobStreamShardCount
استخدم الفريق عدة روافع مختلفة للتمييز بين قوة المعالجة لكل تيار أو ضبط زمن انتقال النظام ، كما هو مُلخص في الجدول التالي.
رافعة | الوصف | القيمة الافتراضية |
قشرة | القشرة هي موطنها الأصلي لتدفقات بيانات Kinesis ؛ إنها الوحدة الأساسية للإنتاجية للابتلاع. الافتراضي هو 1 ميغا بايت / ثانية ، وهو ما يعادل 1,000 سجل بيانات في الثانية. | 2 |
KinesisBatchSize |
الحد الأقصى لعدد السجلات التي يستردها Kinesis Data Streams في دفعة واحدة قبل استدعاء وظيفة Lambda للمستهلك. | 1 |
KinesisParallelizationFactor |
عدد الدُفعات المطلوب معالجتها من كل جزء في نفس الوقت. | 1 |
مروحة محسنة | يتمتع مستهلكو البيانات الذين قاموا بتحسين نشر التوزيع بإنتاجية استيعابية مخصصة لكل مستهلك (مثل الافتراضي 1 ميجابايت / ثانية) بدلاً من مشاركة الإنتاجية عبر المستهلكين. | خصم |
وظيفة المستهلك لامدا
من منظور Kinesis Data Streams ، فإن مستهلك البيانات هو خدمة AWS تسترد البيانات من جزء دفق البيانات أثناء إنشاء البيانات في التدفق. يستخدم هذا التطبيق وظيفة Consumer Lambda ، والتي يتم استدعاؤها عند تمرير الرسائل من قوائم انتظار دفق البيانات. تعالج كل وظيفة من وظائف المستهلك دفعة إطار واحدة عن طريق تنفيذ الخطوات التالية. أولاً ، يتم إجراء مكالمة إلى واجهة برمجة تطبيقات معالج Cortex بشكل متزامن ، وهي نقطة النهاية التي تستضيف خط أنابيب استدلال النموذج (راجع القسم التالي بخصوص Amazon EKS مع Cortex لمزيد من التفاصيل). يتم تخزين النتائج في Amazon S3 ، ويتم إجراء تحديث لقاعدة البيانات عن طريق تغيير حالة مجموعة الإطارات التي تمت معالجتها إلى Complete
. تم دمج معالجة الأخطاء لإدارة استدعاء Cortex API مع حلقة إعادة المحاولة لمعالجة أي أخطاء 504 من مجموعة Cortex ، مع تعيين عدد مرات إعادة المحاولة على 5.
Amazon EKS مع Cortex لاستدلال ML
استخدم الفريق Amazon EKS ، وهي خدمة Kubernetes مُدارة في AWS ، كمحرك الحوسبة لاستدلال ML. تم إجراء اختيار تصميم لاستخدام Amazon EKS لاستضافة نقاط نهاية ML ، مما يمنح المرونة في تشغيل Kubernetes المنبع مع خيار المجموعات المُدارة بالكامل في AWS عبر AWS فارجيت، أو الأجهزة المحلية عبر Amazon EKS في أي مكان. كانت هذه قطعة مهمة من الوظائف التي أرادتها Intel OTG ، والتي وفرت خيار ربط هذا التطبيق بالأجهزة المحلية المتخصصة ، على سبيل المثال.
كانت نماذج ML الثلاثة التي كانت اللبنات الأساسية لإنشاء خطوط أنابيب الاستدلال هي نموذج Yolo المخصص (لاكتشاف الكائن) ، ونموذج HRNet المخصص (لتقدير الوضع ثنائي الأبعاد) ، ونموذج 2DMPPE (لتقدير الوضع ثلاثي الأبعاد) (انظر السابق) قسم ML لمزيد من التفاصيل). استخدموا المصدر المفتوح قشرة مكتبة للتعامل مع نشر وإدارة نقاط نهاية خطوط أنابيب استدلال التعلم الآلي ، وإطلاق مجموعات Amazon EKS ونشرها. تم حزم كل من هذه النماذج في حاويات Docker — تم تخزين ملفات النماذج في Amazon S3 وتم تخزين صور النموذج في سجل الأمازون المرنة للحاويات (Amazon ECR) - وتم نشره كواجهات برمجة تطبيقات Cortex Realtime. تم إنشاء إصدارات حاويات النموذج التي تعمل على وحدة المعالجة المركزية ووحدة معالجة الرسومات لتوفير المرونة لنوع أجهزة الحوسبة. في المستقبل ، إذا كانت هناك حاجة إلى إضافة نماذج إضافية أو خطوط أنابيب نموذجية ، فيمكنهم ببساطة إنشاء واجهات برمجة تطبيقات Cortex Realtime إضافية.
ثم قاموا ببناء خطوط أنابيب الاستدلال عن طريق تكوين واجهات برمجة التطبيقات الخاصة بنموذج Cortex Realtime معًا في واجهات برمجة تطبيقات خط أنابيب Cortex Realtime. تتألف واجهة برمجة تطبيقات خط أنابيب Realtime واحدة من استدعاء سلسلة من واجهات برمجة تطبيقات نموذج Realtime. تم التعامل مع وظائف Consumer Lambda أ pipeline
API كصندوق أسود ، باستخدام استدعاء API واحد لاسترداد ناتج الاستدلال النهائي لصورة. تم إنشاء خطي أنابيب: خط أنابيب ثنائي الأبعاد وخط أنابيب ثلاثي الأبعاد.
يجمع خط الأنابيب ثنائي الأبعاد بين خطوة المعالجة المسبقة لفك التشفير ، واكتشاف الكائن باستخدام نموذج Yolo المخصص لتحديد موقع الرياضي وإنتاج الصناديق المحيطة ، وأخيرًا نموذج HRNet مخصص لإنشاء نقاط رئيسية ثنائية الأبعاد لتقدير الوضع.
يجمع خط الأنابيب ثلاثي الأبعاد بين خطوة المعالجة المسبقة لفك التشفير ، واكتشاف الكائن باستخدام نموذج Yolo المخصص لتحديد موقع الرياضي وإنتاج الصناديق المحيطة ، وأخيرًا نموذج 3DMPPE لإنشاء نقاط رئيسية ثلاثية الأبعاد لتقدير الوضع.
بعد إنشاء الاستدلالات على مجموعة من الإطارات ، يشتمل كل خط أنابيب أيضًا على نقطة نهاية Realtime Cortex منفصلة للمعالجة اللاحقة والتي تولد ثلاثة مخرجات رئيسية:
- بيانات النقاط الرئيسية للجسم المجمعة في ملف CSV واحد
- حسابات BMA (مثل التسارع)
- تراكب مرئي للنقاط الرئيسية المضافة إلى كل إطار في ملف الصورة
ترسل وظيفة Collector Lambda البيانات الوصفية المناسبة المرتبطة بفيديو معين ، مثل معرّفات الإطارات ومواقع S3 لمخرجات استنتاج الوضع ، إلى نقطة النهاية لإنشاء مخرجات المعالجة اللاحقة هذه.
تم تصميم Cortex ليتم دمجه مع Amazon EKS ، ولا يتطلب سوى ملف تكوين مجموعة وأمر بسيط لتشغيل مجموعة Kubernetes:
كانت الرافعة الأخرى لضبط الأداء هي تكوين المثيل لمجموعات الحوسبة. تم إنشاء ثلاث طبقات بمزيج متنوع من مثيلات M5 و G4dn ، تم ترميزها كملفات .yaml بمواصفات مثل اسم المجموعة والمنطقة وتكوين المثيل ومزجها. مثيلات M5 تعتمد على وحدة المعالجة المركزية منخفضة التكلفة و G4dn تعتمد على وحدة معالجة الرسومات (GPU) بتكلفة أعلى لتوفير بعض مقايضات التكلفة / الأداء.
مراقبة العمليات
للحفاظ على معايير التسجيل التشغيلية ، تتضمن جميع وظائف Lambda رمزًا لتسجيل السجلات واستيعابها عبرها أمازون كينسيس داتا فايرهاوس. على سبيل المثال ، يتم تسجيل كل دفعة إطار تمت معالجتها من وظيفة Submitter Lambda بالطابع الزمني واسم الإجراء واستجابة وظيفة Lambda JSON وحفظها في Amazon S3. يوضح الرسم البياني التالي هذه الخطوة في العمارة.
قابل للفتح
تتم معالجة النشر باستخدام AWS SAM ، وهو إطار عمل مفتوح المصدر لبناء تطبيقات بدون خادم في AWS. يتيح AWS SAM تصميم البنية التحتية ، بما في ذلك الوظائف وواجهات برمجة التطبيقات وقواعد البيانات وتعيينات مصدر الأحداث ليتم ترميزها ونشرها بسهولة في بيئات AWS الجديدة. أثناء النشر ، تتم ترجمة بناء جملة AWS SAM إلى تكوين سحابة AWS للتعامل مع توفير البنية التحتية.
A template.yaml
يحتوي الملف على مواصفات البنية التحتية جنبًا إلى جنب مع المعلمات القابلة للضبط ، مثل أدوات زمن انتقال Kinesis Data Streams المفصلة في الأقسام السابقة. أ samconfig.toml
يحتوي الملف على معلمات النشر مثل اسم المكدس واسم حاوية S3 حيث يتم تخزين ملفات التطبيق مثل رمز وظيفة Lambda وعلامات الموارد لتتبع التكلفة. كل ما هو مطلوب لبناء القالب بالكامل ونشره هو برنامج shell.
تدفق عمل المستخدم
للتلخيص ، بعد نشر البنية التحتية ، يمكنك متابعة سير العمل هذا للبدء:
- قم بإنشاء عميل Intel 3DAT باستخدام مكتبة العميل.
- استخدم API لإنشاء مثيل جديد لخط أنابيب يتوافق مع نوع المعالجة المطلوبة ، مثل مثيل لتقدير الوضع ثلاثي الأبعاد.
- قم بإنشاء مثيل جديد للمشروع ، مروراً بمجموعة ARN و Kinesis queue ARN.
- إنشاء مثيل جديد لمجموعة معلمات خط الأنابيب.
- قم بإنشاء مثيل جديد لمعلمات خط الأنابيب التي يتم تعيينها إلى مجموعة معلمات خط الأنابيب.
- قم بإنشاء مجموعة مستخدم جديدة مرتبطة بمعرف المشروع ومعرف مجموعة معلمات خط الأنابيب.
- قم بإنشاء مستخدم جديد مرتبط بمجموعة المستخدمين.
- قم بتحميل ملف .zip لمقاطع الفيديو إلى Amazon S3 باستخدام عنوان URL الخاص بخدمة S3 الذي تم إنشاؤه بواسطة وظيفة التحميل في واجهة برمجة تطبيقات الوظيفة.
- يقدم
create_job
استدعاء API ، مع معلمات الوظيفة التي تحدد موقع ملفات الفيديو. هذا يبدأ مهمة المعالجة.
وفي الختام
التطبيق الآن مباشر وجاهز للاختبار مع الرياضيين والمدربين على حد سواء. إن Intel OTG متحمسة لتقديم تقنية مبتكرة لتقدير الوضعية باستخدام رؤية الكمبيوتر التي يمكن الوصول إليها لمجموعة متنوعة من المستخدمين ، من المطورين إلى الرياضيين إلى شركاء بائعي البرامج.
إن فريق AWS متحمس لمساعدة العملاء مثل Intel OTG على تسريع رحلة ML الخاصة بهم ، من مرحلة التفكير والاكتشاف مع ML Solutions Lab إلى مرحلة التصلب والنشر باستخدام AWS ML ProServe. سنراقب جميعًا عن كثب في أولمبياد طوكيو 2021 هذا الصيف لتصور كل التقدم الذي يمكن أن يفتحه ML في الرياضة.
ابدأ اليوم! استكشف حالة الاستخدام الخاصة بك مع الخدمات المذكورة في هذا المنشور والعديد من الخدمات الأخرى الموجودة على وحدة تحكم إدارة AWS.
حول المؤلف
هان مان هو مدير أول - التعلم الآلي والذكاء الاصطناعي في AWS ومقرها سان دييغو ، كاليفورنيا. حصل على درجة الدكتوراه في الهندسة من جامعة نورث وسترن ولديه عدة سنوات من الخبرة كمستشار إداري يقدم المشورة للعملاء في مجالات التصنيع والخدمات المالية والطاقة. يعمل اليوم بشغف مع عملاء من مجموعة متنوعة من الصناعات لتطوير حلول التعلم الآلي والذكاء الاصطناعي وتنفيذها على AWS. إنه يستمتع بمتابعة الدوري الاميركي للمحترفين ولعب كرة السلة في أوقات فراغه.
إيمان قميابي هو مهندس ML مع خدمات AWS الاحترافية. لقد عمل مع مجموعة واسعة من عملاء AWS لدعم أفضل الممارسات في إعداد خطوط أنابيب ML قابلة للتكرار وموثوق بها.
جوناثان لي هو مدير تقنية الأداء الرياضي ، Olympic Technology Group في Intel. درس تطبيق التعلم الآلي على الصحة كطالب جامعي في جامعة كاليفورنيا وأثناء تخرجه في جامعة أكسفورد. ركزت حياته المهنية على الخوارزمية وتطوير أجهزة الاستشعار من أجل الصحة والأداء البشري. يقود الآن مشروع 3D Athlete Tracking في Intel.
نيلسون ليونج هو مهندس المنصات في مركز التميز للأداء الرياضي في إنتل ، حيث يقوم بتعريف البنية الشاملة للمنتجات المتطورة التي تعزز أداء الرياضيين. كما أنه يقود تنفيذ ونشر وإنتاج هذه حلول التعلم الآلي على نطاق واسع لشركاء إنتل المختلفين.
تروي سكويلاتشي هو مهندس DecSecOps في Intel حيث يقدم حلول برمجية احترافية للعملاء من خلال أفضل ممارسات DevOps. إنه يستمتع بدمج حلول الذكاء الاصطناعي في منصات قابلة للتطوير في مجموعة متنوعة من المجالات.
بول مين هو مهندس حلول مشارك متدرب في Amazon Web Services (AWS) ، حيث يساعد العملاء عبر قطاعات الصناعة المختلفة على تعزيز مهمتهم وتسريع اعتمادهم على السحابة. عمل سابقًا في Intel كمتدرب في هندسة البرمجيات للمساعدة في تطوير 3D Athlete Tracking Cloud SDK. خارج العمل ، يستمتع Paul بلعب الجولف ويمكن سماعه وهو يغني.
- كوينسمارت. أفضل بورصة للبيتكوين والعملات المشفرة في أوروبا.
- بلاتوبلوكشين. Web3 Metaverse Intelligence. تضخيم المعرفة. دخول مجاني.
- كريبتوهوك. الرادار. تجربة مجانية.
- المصدر: https://aws.amazon.com/blogs/machine-learning/the-intel3d-athlete-tracking-3dat-scalable-architecture-deploys-pose-estimation-models-using-amazon-kinesis-data-streams- و-amazon-eks /
- "
- &
- 000
- 100
- 2021
- 3d
- من نحن
- تسريع
- الوصول
- يمكن الوصول
- وفقا
- حسابي
- في
- اكشن
- الإجراءات
- إضافة
- إضافي
- مشرف
- تبني
- AI
- خوارزمية
- الكل
- أمازون
- أمازون ويب سيرفيسز
- وسط
- API
- واجهات برمجة التطبيقات
- تطبيق
- التطبيقات
- مناسب
- هندسة معمارية
- الحجج
- تعيين
- محام
- الرياضيين
- سمات
- أوتوماتيك
- AWS
- دعم
- كره السلة
- قبل
- الفوائد
- أفضل
- أفضل الممارسات
- اسود
- المدونة
- الجسدي
- صندوق
- نساعدك في بناء
- ابني
- دعوة
- الطاقة الإنتاجية
- يهمني
- التوظيف
- الحالات
- مركزي
- بطل
- تغيير
- الخيارات
- عميل
- سحابة
- الكود
- مجموعة شتاء XNUMX
- جامع
- الجمع بين
- عنصر
- إحصاء
- الكمبيوتر
- الاعداد
- صلة
- consultants
- مستهلك
- المستهلكين
- وعاء
- حاويات
- يحتوي
- تواصل
- مراقبة
- رابطة
- جوهر
- المقابلة
- خلق
- خلق
- يخلق
- خلق
- خلق
- أوراق اعتماد
- حرج
- حاسم
- حالياًّ
- حاليا
- على
- زبون
- العملاء
- المتطور والحديث
- البيانات
- قاعدة البيانات
- قواعد البيانات
- يوم
- مخصصة
- أعمق
- يسلم
- نشر
- نشر
- نشر
- ينشر
- تصميم
- تصميم
- التفاصيل
- مفصلة
- تفاصيل
- كشف
- تطوير
- المطور
- المطورين
- التطوير التجاري
- مختلف
- تميز
- مباشرة
- مدير المدارس
- اكتشاف
- يعرض
- عامل في حوض السفن
- لا
- المجالات
- إلى أسفل
- أثناء
- بسهولة
- البريد الإلكتروني
- نقطة النهاية
- طاقة
- محرك
- مهندس
- الهندسة
- البيئة
- الحدث/الفعالية
- مثال
- متحمس
- القائمة
- تتوقع
- الخبره في مجال الغطس
- اكتشف
- الميزات
- أخيرا
- مالي
- الخدمات المالية
- الاسم الأول
- تناسب
- سريع
- مرونة
- مرن
- ركز
- اتباع
- متابعيك
- متابعات
- شكل
- تطلعي
- FRAME
- الإطار
- وظيفة
- وظيفي
- وظيفة
- وظائف
- مستقبل
- توليد
- توليد
- جيل
- إعطاء
- هدف
- خير
- وحدة معالجة الرسوميات:
- خريج
- تجمع
- مجموعات
- مقبض
- معالجة
- أجهزة التبخير
- صحة الإنسان
- سمعت
- مساعدة
- مساعدة
- يساعد
- هنا
- أعلى
- كيفية
- HTTPS
- الانسان
- هوية
- صورة
- تنفيذ
- التنفيذ
- أهمية
- تتضمن
- يشمل
- بما فيه
- فرد
- الصناعات
- العالمية
- البنية التحتية
- مبتكرة
- إدخال
- إدراج
- تثبيت
- المتكاملة
- التكامل
- إنتل
- رؤيتنا
- تفاعل
- السطح البيني
- IT
- وظيفة
- المشــاريــع
- رحلة
- القفل
- مختبر
- إطلاق
- إطلاق
- يؤدي
- تعلم
- مستوى
- المكتبة
- خط
- قائمة
- جار التحميل
- موقع
- المواقع
- آلة
- آلة التعلم
- صنع
- المحافظة
- رائد
- يصنع
- رجل
- إدارة
- تمكن
- إدارة
- تصنيع
- رسم خريطة
- رسم الخرائط
- المذكورة
- طرق
- المقاييس
- الحد الأدنى
- الرسالة
- ML
- الجوال
- تطبيقات الجوال
- نموذج
- عارضات ازياء
- وحدات
- الأكثر من ذلك
- أكثر
- متعدد
- أسماء
- NBA
- ضروري
- إحتياجات
- عدد
- الألعاب الأولمبية
- يفتح
- طريقة التوسع
- الأمثل
- خيار
- طلب
- أخرى
- الخاصة
- أكسفورد
- صفقة
- جزء
- خاص
- خاصة
- شركاء
- مرور
- عاطفي
- نمط
- نسبة مئوية
- أداء
- أداء
- منظور
- قطعة
- المنصة
- منصات التداول
- لعب
- الشعر
- نقاط
- ممكن
- قوة
- قوي
- إعداد
- سابق
- ابتدائي
- مبدأ
- الأولوية
- عملية المعالجة
- العمليات
- معالجة
- المعالج
- إنتاج
- الإنتــاج
- المنتجات
- محترف
- تنفيذ المشاريع
- تزود
- ويوفر
- غرض
- نطاق
- الخام
- في الوقت الحالى
- الاعتراف
- سجل
- تسجيل
- بخصوص
- الخدمة الموثوقة
- طلبات
- تطلب
- مطلوب
- المتطلبات الأساسية
- يتطلب
- مورد
- الموارد
- استجابة
- النتائج
- يجري
- تشغيل
- السلامة
- سان
- التدرجية
- تحجيم
- حجم
- التحجيم
- الإستراحة
- تأمين
- شرائح
- Serverless
- الخدمة
- خدمات
- طقم
- ضبط
- الشكل
- مشاركة
- قذيفة
- أظهرت
- مماثل
- وبالمثل
- الاشارات
- مقاس
- So
- تطبيقات الكمبيوتر
- البرمجيات كخدمة
- هندسة البرمجيات
- حل
- الحلول
- بعض
- شخص ما
- متخصص
- مواصفات
- سرعة
- رياضة
- كومة
- المسرح
- معيار
- المعايير
- بداية
- بدأت
- يبدأ
- الولايه او المحافظه
- دولة من بين الفن
- الحالة
- تخزين
- متجر
- مجرى
- متدفق
- المقدمة
- بعد ذلك
- الصيف
- الدعم
- الدعم
- نظام
- مع الأخذ
- فريق
- تكنولوجيا
- الاختبار
- وبالتالي
- عبر
- رابطة عنق
- الوقت
- اليوم
- سويا
- طوكيو
- مسار
- تتبع الشحنة
- أنواع
- عادة
- في جامعة كاليفورنيا
- جامعة
- جامعة أكسفورد
- فتح
- تحديث
- تستخدم
- المستخدمين
- استخدام
- قيمنا
- تشكيلة
- مختلف
- القطاعات
- فيديو
- مقاطع فيديو
- رؤيتنا
- الويب
- خدمات ويب
- من الذى
- بدون
- للعمل
- عمل
- عامل
- سنوات