شعار زيفيرنت

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

التاريخ:

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

تعد طاقة الرياح من أكثر مصادر الطاقة المتجددة شيوعًا. وفقًا للمجلس العالمي لطاقة الرياح ، تم تركيب 22,893،2019 توربينًا للرياح على مستوى العالم في عام 33 ، تم إنتاجها من 63 موردًا وتمثل أكثر من XNUMX جيجاوات من طاقة الرياح. مع هذا الحجم ، تحتاج شركات الطاقة إلى منصة فعالة لإدارة وصيانة أساطيل توربينات الرياح ، ونماذج ML التي تعمل على الأجهزة. تبلغ تكلفة توربينات الرياح التجارية حوالي 3-4 ملايين دولار. إذا كان التوربين خارج الخدمة ، فإنه يكلف 800 - 1,600 دولار في اليوم وينتج عنه خسارة إجمالية قدرها 7.5 ميجاوات ، وهو ما يكفي من الطاقة لتشغيل ما يقرب من 2,500 منزل.

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

مدير حافة أمازون SageMaker يمكن أن تساعدك في الإجابة على هذا السؤال. تتيح لك الخدمة تحسين نماذج ML وتأمينها ومراقبتها وصيانتها على أساطيل من الكاميرات الذكية والروبوتات وأجهزة الكمبيوتر الشخصية والمعدات الصناعية والأجهزة المحمولة والمزيد. باستخدام Edge Manager ، يمكنك إدارة دورة حياة كل طراز ML على كل جهاز في أساطيل أجهزتك لما يصل إلى آلاف أو ملايين الأجهزة. توفر الخدمة وكيل برمجيات يعمل على الأجهزة المتطورة وواجهة إدارة على وحدة تحكم إدارة AWS.

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

تغطي الأقسام التالية المواضيع التالية:

  • مواصفات مزرعة توربينات الرياح
  • كيفية تكوين كل Jetson Nano
  • كيفية بناء نموذج كشف الشذوذ باستخدام SageMaker
  • كيف تدير مزرعة توربينات الرياح الصغيرة الخاصة بك

مزرعة توربينات الرياح

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

توربينات الرياح المصغرة

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

يحتوي كل توربين على مولد جهد واحد (محرك صغير) وسبعة مستشعرات مختلفة:

  • الاهتزاز (MPU6050: مقياس تسارع / جيروسكوب 6 محاور)
  • مشفر دوران الأشعة تحت الحمراء (دوران في الثانية)
  • درجة حرارة علبة التروس (MPU6050)
  • درجة الحرارة المحيطة (BME680)
  • الضغط الجوي (BME680)
  • رطوبة الهواء (BME680)
  • جودة الهواء (BME680)

An اردويني ميني برو مسؤول عن التفاعل مع أجهزة الاستشعار هذه وجمع البيانات منها. يتم دفق هذه البيانات من خلال المسامير التسلسلية (TX ، RX). ان جهاز FTDI الذي يحول هذه الإشارة التسلسلية إلى USB هو الجسر بين Arduino و Jetson Nano. يتلقى تطبيق Python الذي يتم تشغيله على Jetson Nano البيانات الأولية من المستشعرات عبر هذا الجسر.

تم تعديل المؤازرة الصغيرة وتحويلها إلى مولد جهد كهربائي. يعمل صندوق التروس الداخلي على زيادة سرعة المولد (المحرك) بمقدار خمس مرات لإنتاج جهد (منخفض) بين 0-3.3 فولت. هذا المولد متصل أيضًا بـ Arduino من خلال دبوس إدخال تناظري. يتم إرسال هذه المعلومات أيضًا مع قراءات المستشعر.

يعتمد تكرار جمع البيانات على المستشعر. يتم جمع كل الإشارات من BME650 كل 150 مللي ثانية ، ومشفِّر الدوران كل ثانية واحدة ، ومولد الجهد ومستشعر الاهتزاز كل 1 مللي ثانية.

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

جهاز الحافة

كل جيتسون نانو يحتوي على وحدة معالجة رسومات مدمجة مع 128 نواة من NVIDIA Maxwell ™ ووحدة معالجة مركزية رباعية النواة ARM® A57 تعمل بسرعة 1.43 جيجاهرتز. هذا الجهاز يكفي لتشغيل تطبيق Python الذي يجمع البيانات وينسقها من مستشعرات التوربين ثم يستدعي وكيل مدير الحافة API للحصول على التوقعات. يقارن هذا التطبيق التنبؤ بالعتبة للتحقق من وجود حالات شاذة في البيانات. يتم استدعاء النموذج في الوقت الفعلي.

متى سيجماكر نيو يجمع نموذج ML لـ Jetson Nano ، وقت التشغيل (DLR) مُحسَّن لهذا الجهاز المستهدف في حزمة النشر. يكتشف وقت التشغيل هذا تلقائيًا أنه يعمل على Jetson Nano ويقوم بتحميل النموذج مباشرة في وحدة معالجة الرسومات الخاصة بالجهاز لتحقيق أقصى أداء.

يتم توزيع وكيل Edge Manager أيضًا كتطبيق Linux (arm64) الذي يمكن تشغيله كعملية خلفية (خفي) على Jetson Nano. يستخدم وقت التشغيل الذي يتضمنه SageMaker Neo في حزمة الترجمة للتفاعل مع النموذج المحسن وفضحه كواجهة برمجة تطبيقات محددة جيدًا. تم دمج واجهة برمجة التطبيقات هذه مع التطبيق المحلي من خلال بروتوكول زمن الوصول المنخفض (grpc + unix socket).

الخدمات السحابية

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

باختصار ، المكونات المطلوبة لهذا المشروع هي:

  • أسطول من الأجهزة (Edge Manager) ، الذي ينظم ويتحكم في جهاز واحد أو أكثر من الأجهزة المسجلة من خلال الوكيل (يعمل على كل جهاز)
  • واحد شيء إنترنت الأشياء لكل جهاز و مجموعة إنترنت الأشياءوالذي تستخدمه آلية OTA للتواصل مع الأجهزة عبر MQTT
  • AWS IoT القواعد ، و AWS لامدا وظيفة للحصول على سجلات التطبيق وتصفيتها واستيعابها فيها خدمة Amazon Elasticsearch (أمازون إي إس)
  • وظيفة Lambda لتحليل مقاييس النموذج التي تم التقاطها بواسطة الوكيل في استيعابها في Amazon ES
  • خادم Elasticsearch مع Kibana، والتي تحتوي على لوحات تحكم لرصد الحالات الشاذة (اختياري)
  • SageMaker لبناء نموذج ML وتجميعه وحزمه

يوضح الرسم البياني التالي هذه العمارة.

وضع كل شيء معًا

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

يوضح الرسم البياني التالي جميع الخطوات المتضمنة في العملية.

يتكون الحل من الخطوات التالية:

  1. يستكشف عالم البيانات مجموعة البيانات ويصمم نموذجًا لاكتشاف الشذوذ (المشفر التلقائي) مع PyTorch ، باستخدام استوديو SageMaker.
  2. يتم تدريب النموذج بوظيفة تدريب SageMaker.
  3. مع Neo ، تم تحسين النموذج (مترجم) إلى Jetson Nano.
  4. ينشئ Edge Manager حزمة نشر مع النموذج المترجم.
  5. ينشئ عالم البيانات وظيفة إنترنت الأشياء التي ترسل إشعارًا بالنموذج الجديد المتاح للأجهزة المتطورة.
  6. يقوم التطبيق الذي يعمل على Jetson Nano بما يلي:
    1. يتلقى هذا الإخطار ويقوم بتنزيل حزمة النموذج من خدمة تخزين أمازون البسيطة دلو (أمازون S3).
    2. تفريغ النموذج وتحميله باستخدام وكيل Edge Manager API (LoadModel).
    3. يقرأ المستشعرات من توربينات الرياح ، ويعد البيانات ، ويستدعي نموذج ML ، ويلتقط بعض مقاييس النموذج باستخدام وكيل Edge Manager API.
    4. يقارن التنبؤ بخط الأساس لاكتشاف الانحرافات المحتملة.
    5. يرسل بيانات المستشعر الأولية إلى موضوع AWS IoT.
  7. من خلال القاعدة ، تقرأ AWS IoT موضوع سجلات التطبيق وتقوم بتصدير البيانات إلى Amazon ES.
  8. تقوم دالة Lambda بالتقاط مقاييس النموذج (متوسط ​​الخطأ المتوسط) التي تم تصديرها بواسطة الوكيل واستيعاب البيانات في Amazon ES.
  9. يستخدم عامل التشغيل لوحة تحكم Kibana للتحقق من أي حالات شاذة.

تكوين جهاز الحافة الخاص بك

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

إنشاء موارد المتطلبات الأساسية

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

  • دلو S3 لتخزين البيانات الملتقطة
  • An إدارة الهوية والوصول AWS (IAM) لأجهزتك
  • شيء إنترنت الأشياء لتعيينه إلى جهاز Edge Manager الخاص بك
  • سياسة إنترنت الأشياء للتحكم في أذونات بيانات الاعتماد المؤقتة لجهاز الحافة
  1. قم بإنشاء دلو جديد للحل.

في كل مرة تقوم فيها باستدعاء CaptureData في وكيل API ، فإنه يقوم بتحميل الموترات (المدخلات والتنبؤات) في هذه المجموعة.

بعد ذلك ، تقوم بإنشاء دور IAM الخاص بك.

  1. في وحدة تحكم IAM ، قم بإنشاء دور يسمى WindTurbineFarm حتى تتمكن الأجهزة من الوصول إلى الموارد في حسابك.
  2. أضف أذونات لهذا الدور لتحميل الملفات إلى حاوية S3 التي أنشأتها.
  3. أضف الكيانات الموثوقة التالية إلى الدور:
    1. amazonaws.com
    2. iot.amazonaws.com
    3. amazonaws.com

استخدم الكود التالي (أدخل اسم حاوية S3 وحساب AWS والمنطقة):

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::<<S3_BUCKET_NAME>>", "arn:aws:s3:::<<S3_BUCKET_NAME>>/*" ], "Effect": "Allow" }, { "Action": [ "iot:CreateRoleAlias", "iot:DescribeRoleAlias", "iot:UpdateRoleAlias", "iot:TagResource", "iot:ListTagsForResource" ], "Resource": [ "arn:aws:iot:<<REGION>>:<<AWS_ACCOUNT_ID>>:rolealias/SageMakerEdge*" ], "Effect": "Allow" }, { "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": [ "arn:aws:iam::<<AWS_ACCOUNT_ID>>:role/*SageMaker*", "arn:aws:iam::<<AWS_ACCOUNT_ID>>:role/*Sagemaker*", "arn:aws:iam::<<AWS_ACCOUNT_ID>>:role/*sagemaker*", "arn:aws:iam::<<AWS_ACCOUNT_ID>>:role/WindTurbineFarm" ], "Effect": "Allow" }, { "Action": [ "sagemaker:GetDeviceRegistration", "sagemaker:SendHeartbeat", "iot:DescribeEndpoint", "s3:ListAllMyBuckets” ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "sagemaker:DescribeDevice" ], "Resource": [ "arn:aws:sagemaker:<<REGION>>:<<AWS_ACCOUNT_ID>>:device-fleet/windturbinefarm*" ], "Effect": "Allow" }, { "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:<<REGION>>:<<AWS_ACCOUNT_ID>>:topic/wind-turbine/*" ], "Effect": "Allow" } ]
}

أنت الآن جاهز لإنشاء شيء إنترنت الأشياء الخاص بك ، والذي قمت بتعيينه لاحقًا لجهاز Edge Manager الخاص بك.

  1. في وحدة تحكم AWS IoT Core ، تحت إدارة، اختر الأشياء
  2. اختار إنشاء.
  3. قم بتسمية جهازك (لهذا المنشور ، edge-device-0).
  4. أنشئ مجموعة جديدة أو اختر مجموعة موجودة (لهذا المنشور ، WindTurbineFarm).
  5. قم بإنشاء شهادة.
  6. قم بتنزيل الشهادات ، بما في ذلك المرجع المصدق الجذر.
  7. تفعيل الشهادة.

يمكنك الآن إنشاء سياستك ، والتي تتحكم في أذونات بيانات الاعتماد المؤقتة لجهاز الحافة.

  1. في وحدة تحكم AWS IoT Core ، تحت آمنة، اختر السياسات.
  2. اختار إنشاء.
  3. قم بتسمية السياسة (لهذا المنشور ، WindTurbine).
  4. اختار الوضع المتقدم.
  5. أدخل السياسة التالية ، مع توفير حساب AWS الخاص بك والمنطقة:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "arn:aws:iot:<<REGION>>:<<AWS_ACCOUNT_ID>>:client/*" }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:<<REGION>>:<<AWS_ACCOUNT_ID>>:topic/wind-turbine/*", "arn:aws:iot:<<REGION>>:<<AWS_ACCOUNT_ID>>:topic/$aws/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:<<REGION>>:<<AWS_ACCOUNT_ID>>:topicfilter/wind-turbine/*", "arn:aws:iot:<<REGION>>:<<AWS_ACCOUNT_ID>>:topicfilter/$aws/*", "arn:aws:iot:<<REGION>>:<<AWS_ACCOUNT_ID>>:topic/$aws/*" ] }, { "Effect": "Allow", "Action": [ "iot:UpdateThingShadow" ], "Resource": [ "arn:aws:iot:<<REGION>>:<<AWS_ACCOUNT_ID>>:topicfilter/wind-turbine/*", "arn:aws:iot:<<REGION>>:<<AWS_ACCOUNT_ID>>:thing/edge-device-*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot: <<REGION>>:<<AWS_ACCOUNT_ID>>:rolealias/SageMakerEdge-WindTurbineFarm" } ]
}

  1. اختار إنشاء.

أخيرًا ، تقوم بإرفاق السياسة بالشهادة.

  1. في وحدة تحكم AWS IoT Core ، تحت آمنة، اختر الشهادات.
  2. حدد الشهادة التي قمت بإنشائها.
  3. على الإجراءات القائمة، اختر إرفاق السياسة.
  4. حدد سياسة WindTurbine.
  5. اختار تعلق.

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

قم بإنشاء أسطول الحافة

لإنشاء أسطول الحافة الخاص بك ، أكمل الخطوات التالية:

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

  1. أدخل اسمًا للجهاز (لهذه المشاركة ، WindTurbineFarm).
  2. أدخل ARN لدور IAM الذي استخدمته في الخطوات السابقة (arn:aws:iam::<<AWS_ACCOUNT_ID>>:role/WindTurbineFarm).
  3. أدخل عنوان URI لحاوية الإخراج S3 (s3://<<NAME_OF_YOUR_BUCKET>>/wind_turbine_data/).
  4. اختار تقدم.

أنت الآن بحاجة إلى إضافة جهاز جديد إلى الأسطول.

  1. على وحدة تحكم SageMaker ، تحت استدلال الحافة، اختر أجهزة الحافة.
  2. اختار تسجيل الأجهزة.

  1. في حالة خصائص الجهاز، أدخل اسم مجموعة الأجهزة التي أنشأتها (WindTurbineFarm).
  2. اختار التالى.
  3. في حالة اسم الجهاز، أدخل أي اسم فريد لجهازك (بالنسبة إلى هذا المنشور ، نستخدم نفس اسم عنصر إنترنت الأشياء الخاص بنا ، edge-device-wind-turbine-00000000000).
  4. في حالة اسم إنترنت الأشياء، أدخل اسم الشيء الذي أنشأته سابقًا (edge-device-0).
  5. اختار تقدم.

كرر عملية التسجيل لجميع أجهزتك الأخرى. يمكنك الآن SSH على Jetson Nano وإكمال تكوين جهازك.

تحضير جهاز الحافة

قبل أن تبدأ في تكوين Jetson Nano الخاص بك ، تحتاج إلى التثبيت جيتباك 4.4.1 في النانو الخاص بك. هذا هو الإصدار الذي تستخدمه لإنشاء هذا العرض التوضيحي وتشغيله واختباره.

تعتبر عملية إعداد النموذج لجهازك المستهدف حساسة للغاية فيما يتعلق بإصدارات المكتبات المثبتة في جهازك. على سبيل المثال ، نظرًا لأن الجهاز المستهدف هو Jetson Nano ، يقوم Neo بتحسين النموذج ووقت التشغيل لإصدار معين من TensorRT و CUDA. وقت التشغيل (libdlr.so) فعليًا بالإصدارات التي تحددها في وظيفة الترجمة. هذا يعني أنك إذا جمعت نموذجك باستخدام Neo for JetPack 4.4.1 ، فلن يعمل مع JetPack 3.x. والعكس صحيح.

  1. باستخدام JetPack 4.4.1 الذي يعمل على Jetson Nano ، يمكنك البدء في تكوين جهازك باستخدام الأوامر التالية:
echo "export TVM_TENSORRT_MAX_WORKSPACE_SIZE=2147483647" >> ~/.bashrc
echo "export SM_EDGE_AGENT_HOME=/home/${USER}/agent" >> ~/.bashrc # Also export the variables for the current session
export TVM_TENSORRT_MAX_WORKSPACE_SIZE=2147483647
export SM_EDGE_AGENT_HOME=/home/${USER}/agent sudo apt install -y protobuf-compiler python3-serial sudo apt install -y python3-pip python3-joblib python3-boto3 libssl-dev
sudo apt install -y curl
sudo pip3 install grpcio-tools grpcio PyWavelets paho-mqtt

  1. قم بتنزيل إصدار Linux ARMv8 من وكيل Edge Manager.
  2. انسخ الحزمة إلى Jetson Nano (scp). أنشئ مجلدًا للوكيل وافك ضغط الحزمة في دليلك الرئيسي:
mkdir -p ~/agent/certificates/iot
mkdir -p ~/agent/certificates/root
tar -xzvf <<agent_package>>.tgz -C ~/agent

  1. انسخ شهادات AWS IoT Core التي قدمتها لأشياءك في القسم السابق إلى الدليل ~/agent/certificates/iot في جيتسون نانو الخاص بك.

يجب أن تشاهد الملفات التالية في هذا الدليل:

  • بيم - جذر CA
  • < > -public.pem.key - المفتاح العمومي
  • < > -private.pem.key - مفتاح سري
  • < > -certificate.pem.crt - شهادة
  1. احصل على شهادة الجذر المستخدمة لتوقيع حزمة النشر التي أنشأها Edge Manager. يستخدم الوكيل هذا للتحقق من صحة النموذج.
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-armv8/Certificates/<<AWS_REGION>>/<<AWS_REGION>>.pem .

  1. انسخ هذه الشهادة إلى الدليل ~/agent/certificates/root في جيتسون نانو الخاص بك.

بعد ذلك ، تقوم بإنشاء ملف تكوين وكيل Edge Manager.

  1. افتح ملفًا فارغًا باسم ~ / agent / sagemaker_edge_config.json وأدخل الكود التالي:
{ "sagemaker_edge_core_device_uuid": "<<SAGEMAKER_EDGE_DEVICE_NAME>>", "sagemaker_edge_core_device_fleet_name": "WindTurbineFarm", "sagemaker_edge_core_capture_data_buffer_size": 30, "sagemaker_edge_core_capture_data_batch_size": 10, "sagemaker_edge_core_capture_data_push_period_seconds": 4, "sagemaker_edge_core_folder_prefix": "wind_turbine_data", "sagemaker_edge_core_region": "<<AWS_REGION>>", "sagemaker_edge_core_root_certs_path": "/home/<<LINUX_USER>>/agent/certificates/root", "sagemaker_edge_provider_aws_ca_cert_file": "/home/<<LINUX_USER>>/agent/certificates/iot/AmazonRootCA1.pem", "sagemaker_edge_provider_aws_cert_file": "/home/<<LINUX_USER>>/agent/certificates/iot/<<CERT_PREFIX>>-certificate.pem.crt", "sagemaker_edge_provider_aws_cert_pk_file": "/home/<<LINUX_USER>>/agent/certificates/iot/<<CERT_PREFIX>>-private.pem.key", "sagemaker_edge_provider_aws_iot_cred_endpoint": "https://<<CREDENTIALS_ENDPOINT_HOST>>/role-aliases/SageMakerEdge-WindTurbineFarm/credentials", "sagemaker_edge_provider_provider": "Aws", "sagemaker_edge_provider_s3_bucket_name": "<<S3_BUCKET>>", "sagemaker_edge_core_capture_data_destination": "Cloud"
}

قم بتوفير المعلومات للمصادر التالية:

  • SAGEMAKER_EDGE_DEVICE_NAME - الاسم الفريد لجهازك الذي حددته مسبقًا.
  • AWS_REGION - المنطقة التي أنشأت فيها جهاز الحافة.
  • لينوكس - اسم مستخدم Linux الذي تستخدمه في Jetson Nano.
  • CERT_PREFIX - بادئة ملفات الشهادة التي قمت بإنشائها عندما قمت بتوفير شيء إنترنت الأشياء الخاص بك في القسم السابق.
  • CREDENTIALS_ENDPOINT_HOST - مضيف نقطة النهاية الخاصة بك. يمكنك الحصول على نقطة النهاية هذه من خلال ملف واجهة سطر الأوامر AWS (AWS CLI). (قم بتثبيت AWS CLI إذا لم يكن لديك بالفعل). استخدم بيانات اعتماد نفس الحساب ونفس المنطقة التي استخدمتها في الأقسام السابقة (هذا ليس عنوان URL الظل الخاص بإنترنت الأشياء). ثم قم بتشغيل الأمر التالي لاسترداد مضيف نقطة النهاية:
aws iot describe-endpoint --endpoint-type iot:CredentialProvider

  • S3_BUCKET - اسم حاوية S3 التي استخدمتها لتهيئة أسطول الأجهزة الطرفية في القسم السابق.
  1. احفظ الملف بكل هذه التعديلات.

أنت الآن جاهز لتشغيل وكيل Edge Manager في Jetson Nano.

  1. لاختبار الوكيل ، قم بتشغيل الأوامر التالية:
cd ~/agent
rm -f /tmp/edge_agent
./bin/sagemaker_edge_agent_binary -c sagemaker_edge_config.json -a /tmp/edge_agent &

تظهر لقطة الشاشة التالية مخرجاتك.

الوكيل يعمل الآن. بعد بضع دقائق ، يمكنك رؤية نبضات الجهاز ، تم الإبلاغ عنها على وحدة التحكم. لرؤيته على وحدة تحكم SageMaker ، تحت استدلال الحافة، اختر أجهزة الحافة واختر جهازك.

تكوين التطبيق

حان الوقت الآن لإعداد التطبيق الذي يعمل على جهاز الحافة. هذا التطبيق مسؤول عما يلي:

  • احصل على بيانات الاعتماد المؤقتة باستخدام الشهادة
  • استمع إلى موضوعات تحديث OTA لمعرفة ما إذا كانت حزمة نموذج جديدة جاهزة للنشر
  • انشر حزمة الطراز المتوفرة على جهاز الحافة
  • قم بتحميل النموذج إلى الوكيل إذا لزم الأمر
  • نفذ حلقة لا نهائية:
    • اقرأ بيانات المستشعر
    • تنسيق بيانات الإدخال
    • استدعاء نموذج ML والتقاط بعض مقاييس التنبؤ
    • قارن التنبؤات MAE (متوسط ​​الخطأ) بخط الأساس
    • نشر البيانات الأولية في موضوع إنترنت الأشياء (MQTT)

لتثبيت التطبيق ، احصل أولاً على نقطة نهاية AWS IoT المخصصة. في وحدة تحكم AWS IoT Core ، اختر الإعدادات. انسخ نقطة النهاية واستخدمها في الكود التالي:

cd ~/
git clone https://github.com/aws-samples/amazon-sagemaker-edge-manager-demo wind_turbine
cd wind_turbine/04_EdgeApplication
## by the AWS IoT Endpoint host you just copied and save the file
chmod +x run.py
./run.py &

يُخرج التطبيق شيئًا مثل لقطة الشاشة التالية.

اختياري: قم بتشغيل هذا التطبيق باستخدام المعلمة –test-mode إذا كنت تريد فقط إجراء اختبار بدون توصيل توربينات الرياح بجهاز الحافة.

إذا سارت الأمور على ما يرام ، يستمر التطبيق في انتظار نموذج جديد. حان الوقت لتدريب نموذج جديد ونشره في Jetson Nano.

تدريب ونشر نموذج ML

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

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

لقطة الشاشة التالية عبارة عن عينة من البيانات الأولية التي تم التقاطها بواسطة مستشعرات التوربينات.

تحتوي البيانات على الميزات التالية:

  • nanoId - معرف جهاز الحافة الذي جمع البيانات
  • التوربين - معرف التوربين الذي أنتج هذه البيانات
  • arduino_timestamp - الطابع الزمني للاردوينو الذي كان يشغل هذا التوربين
  • nanoFreemem: مقدار الذاكرة الخالية بالبايت
  • وقت الحدث - الطابع الزمني للصف
  • الديرة - دوران الدوار في الثانية
  • الجهد االكهربى - الجهد الناتج عن المولد بالميليفولت
  • qw ، qx ، qy ، qz - التسارع الزاوي الرباعي
  • gx ، gy ، gz - تسارع الجاذبية
  • الفأس ، ay ، من الألف إلى الياء - التسارع الخطي
  • علبة التروس - درجة الحرارة الداخلية
  • أمبتيمب - درجة حرارة خارجية
  • رطوبة - رطوبة الجو
  • الضغط - ضغط جوي
  • الغاز - جودة الهواء
  • سرعة الرياح_rps - سرعة الرياح بالدوران في الثانية

الميزات المختارة بناءً على أهدافنا هي: qx,qx,qy,qz (التسارع الزاوي)، wind_speed_rps, rpsو voltage. الصورة التالية هي عينة من الميزة qx. البيانات التي ينتجها مقياس التسارع صاخبة جدًا لذا نحتاج إلى تنظيفها أولاً.

يتم تحويل السرعة الزاوية (الرباعي) أولاً إلى زوايا أويلر (لفة ، درجة ، انحراف). ثم نزيل التشويش عن جميع الميزات باستخدام Wavelets (بيويويليتس) ، وتطبيعها. تُظهر لقطة الشاشة التالية الإشارات بعد هذه التحولات.

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

  • موتر - 6 ميزات × 10 خطوات (100 عينة) = 6 × 100
    • خطوة - مجموعة من الخطوات الزمنية
    • خطوة زمنية - مجموعة الفواصل الزمنية (time_step = 20 = ~ 5 ثوانٍ)
    • الفاصلة - مجموعة العينات (الفاصل الزمني = 5 = ~ 250 مللي ثانية)
  • إعادة تشكيل موتر - 6 × 10 × 10

Interval, time step و step هي معلمات فائقة يمكنك ضبطها أثناء التدريب. النتيجة النهائية هي دفق من البيانات ، تم ترميزه على أنه موتر متعدد الأبعاد (يمثل بضع ثوانٍ في الماضي). يحاول المشفر التلقائي المدرب إعادة إنشاء موتر الإدخال باعتباره الإخراج (التنبؤ). من خلال قياس MAE بين المدخلات والمخرجات ومقارنتها مع عتبة محددة مسبقًا ، يمكنك تحديد الحالات الشاذة المحتملة.

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

حان الوقت الآن لإجراء هذه التجربة.

  1. أولا، تحتاج إلى قم بإعداد بيئة الاستوديو الخاصة بك إذا لم يكن لديك واحد حتى الآن.
  2. استنساخ GitHub repo https://github.com/aws-samples/amazon-sagemaker-edge-manager-demo داخل محطة استوديو.

يحتوي المستودع على مجلد باسم 03_Notebooks مع دفتري Jupyter.

  1. اتبع الإرشادات الموجودة في دفتر الملاحظات الأول لإعداد مجموعة البيانات - نظرًا لأن بيانات المسرع عبارة عن إشارة ، فإنها تحتوي على ضوضاء ، لذلك تقوم بتشغيل آلية إزالة الضوضاء لتنظيف البيانات.

تحتوي مجموعة البيانات النهائية على ست ميزات فقط: التدحرج ، والخطوة ، والانعراج (محولة من a رباعي إلى زوايا أويلر) ، wind_speed_rps ، rps (الدورات في الثانية) ، الجهد (الناتج عن المولد).

  1. اتبع الإرشادات الموجودة في دفتر الملاحظات الثاني لتدريب النموذج وحزمه ونشره:
    1. استخدم SageMaker لتدريب برنامج التشفير التلقائي PyTorch الخاص بك (يعتمد على CNN).
    2. قم بتشغيل توقع دفعة لحساب MAE والعتبة التي يستخدمها التطبيق لتحديد ما إذا كان التوقع شذوذًا أم لا.
    3. قم بترجمة النموذج إلى Jetson Nano باستخدام Neo.
    4. قم بإنشاء حزمة نشر باستخدام Edge Manager.
    5. أنشئ وظيفة إنترنت الأشياء التي تنشر مستند JSON إلى موضوع يستمع إليه التطبيق الذي يعمل على Jetson Nano.

يحصل التطبيق على الحزمة ، ويفككها ، ويحمل النموذج في وكيل Edge Manager ، ويفتح حظر تشغيل التطبيق.

كلا الدفتريين مفصلان للغاية ، لذا اتبع الخطوات بعناية ، وبعد ذلك سيكون لديك نموذج اكتشاف الشذوذ لنشره في Jetson Nano.

وظيفة التجميع والنموذج الأمثل

واحدة من أهم خطوات العملية برمتها هي خطوة تحسين النموذج في دفتر الملاحظات الثاني. عندما تقوم بتجميع نموذج باستخدام SageMaker Neo ، فإنه لا يقوم فقط بتحسين النموذج لتحسين أداء التنبؤ في الجهاز المستهدف ، بل يقوم أيضًا بتحويل النموذج الأصلي إلى تمثيل وسيط. بعد هذا التحويل ، لن تحتاج إلى استخدام الإطار الأصلي بعد الآن (PyTorch ، TensorFlow ، MXNet). ثم يتم تفسير هذا التمثيل من خلال وقت تشغيل خفيف (DLR) ، والذي تم تعبئته مع النموذج بواسطة Neo. كل من وقت التشغيل والنموذج الأمثل عبارة عن مكتبات ، تم تجميعها كبرامج أصلية لنظام تشغيلي معين وبنية. في حالة Jetson Nano ، نظام التشغيل هو توزيعة Linux والبنية: ARM8 64bits. وقت التشغيل في هذه الحالة يستخدم TensorRT لأقصى أداء على وحدة معالجة الرسومات Jetson.

عندما تقوم بتشغيل مهمة تجميع على Neo ، فأنت بحاجة إلى تحديد بعض المعلمات المتعلقة بإعداد جهازك المستهدف ، على سبيل المثال:

  • TRT-الإصدار - 7.1.3
  • كودا الاصدار - 10.2
  • كود gpu - sm_53

وحدة معالجة الرسومات Jetson Nano هي NVIDIA Maxwell ، الإصدار الهندسي 53 ، لذا فإن كود gpu-code هو نفسه لجميع وظائف الترجمة. ومع ذلك ، يعتمد trt-ver و cuda-ver على إصدار TensorRT و CUDA المثبت على جهاز Nano الخاص بك. عندما كنت تقوم بإعداد جهاز الحافة الخاص بك ، قمت بإعداد Jetson Nano الخاص بك مع JetPack 4.4.1. هذا يضمن أن النموذج الذي تقوم بتحسينه باستخدام Neo متوافق مع Jetson Nano الخاص بك.

تصور النتائج

إعداد لوحة القيادة خارج نطاق هذا المنشور. لمزيد من المعلومات، راجع قم بتحليل البيانات التي تم إنشاؤها بواسطة الجهاز باستخدام AWS IoT و Amazon Elasticsearch Service.

الآن بعد أن تم نشر النموذج الخاص بك وتشغيله على Jetson Nano ، حان الوقت للنظر في سلوك توربينات الرياح الخاصة بك من خلال لوحة القيادة. يجمع التطبيق الذي قمت بنشره على Jetson Nano بعض السجلات ويرسلها إلى مكانين مختلفين:

  • موضوع IoT MQTT wind-turbine/logs/<<iot_thing_name>> يحتوي على سجلات التطبيق والبيانات الأولية التي تم جمعها من أجهزة استشعار توربينات الرياح
  • دلو S3 s3://<<S3_BUCKET>>/wind_turbine_data يحتوي على مقاييس نموذج ML

يمكنك الحصول على هذه البيانات واستيعابها في Amazon ES أو قاعدة بيانات أخرى. ثم يمكنك استخدام التقارير المفضلة لديك لإعداد لوحات المعلومات.

يُظهر التصور التالي ثلاثة أشياء مختلفة ولكنها مترابطة لكل واحد من التوربينات الخمسة: سرعة الدوران (في RPS) ، والجهد الناتج ، والشذوذ المكتشف للجهد والدوران والاهتزاز.

تم حقن بعض الضوضاء في البيانات الأولية من التوربينات لمحاكاة حالات الفشل.

يُظهر التصور التالي تجميعًا لسرعة التوربينات وحدوث شذوذ في الجهد بمرور الوقت.

وفي الختام

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

لإنشاء حل يلبي احتياجاتك الخاصة ، احصل على الكود والتحف المستخدمة في هذا المشروع من جيثب ريبو. إذا كنت تريد مزيدًا من التدريب على استخدام Edge Manager ، فراجع ملف ورشة عمل شاملة لـ Edge Manager على Studio.


عن المؤلف

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

كوينسمارت. Beste Bitcoin-Börse في أوروبا
المصدر: https://aws.amazon.com/blogs/machine-learning/monitor-and-manage-anomaly-detection-models-on-a-fleet-of-wind-turbines-with-amazon-sagemaker-edge- إدارة/

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة