إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
متوفر في كل من السحابة وAzure IoT Edge، ويوفر Azure Stream Analytics قدرات مدمجة لاكتشاف الشذوذات القائمة على التعلم الآلي يمكنك استخدامها لمراقبة أكثر الشذوذين شيوعا: مؤقتا ومستمرا. باستخدام وظائف AnomalyDetection_SpikeAndDipو AnomalyDetection_ChangePoint ، يمكنك إجراء اكتشاف الشذوذ مباشرة في وظيفة تحليلات التدفق الخاصة بك.
تفترض نماذج التعلم الآلي سلسلة زمنية موحدة العينات. إذا لم تكن السلسلة الزمنية متجانسة، أدخل خطوة تجميع مع نافذة متقلبة قبل استدعاء اكتشاف الشذوذ.
عمليات التعلم الآلي لا تدعم اتجاهات الموسمية أو الترابطات متعددة المتغيرات في الوقت الحالي.
اكتشاف الشذوذات باستخدام التعلم الآلي في Azure Stream Analytics
يوضح الفيديو التالي كيفية اكتشاف الشذوذ في الوقت الحقيقي باستخدام وظائف تعلم الآلة في Azure Stream Analytics.
سلوك النموذج
بشكل عام ، تتحسن دقة النموذج مع المزيد من البيانات في النافذة المنزلقة. يتم التعامل مع البيانات في النافذة المنزلقة المحددة كجزء من نطاقها الطبيعي لقيمها لهذا الإطار الزمني. يأخذ النموذج في الاعتبار فقط سجل الأحداث عبر النافذة المنزلقة للتحقق مما إذا كان الحدث الحالي شاذا. عندما تتحرك النافذة المنزلقة ، يتم طرد القيم القديمة من تدريب النموذج.
تعمل الوظائف من خلال إنشاء وضع طبيعي معين بناء على ما رأوه حتى الآن. يتم تحديد القيم المتطرفة من خلال المقارنة مع الوضع الطبيعي المعمول به ، ضمن مستوى الثقة. يجب أن يعتمد حجم النافذة على الحد الأدنى من الأحداث المطلوبة لتدريب النموذج على السلوك الطبيعي بحيث يكون قادرا على التعرف عليه عند حدوث شذوذ.
يزداد وقت استجابة النموذج مع حجم السجل لأنه يحتاج إلى المقارنة مع عدد أكبر من الأحداث السابقة. للحصول على أداء أفضل، قم بتضمين العدد اللازم فقط من الفعاليات.
يمكن أن تحدث فجوات في السلسلة الزمنية عندما لا يستقبل النموذج أحداثا في نقاط زمنية معينة. تتعامل Stream Analytics مع هذه الحالة باستخدام منطق النسبة. يستخدم حجم التاريخ، ومدة الوقت لنفس النافذة المنزلقة، لحساب متوسط معدل حدوث الأحداث المتوقعة.
يمكنك استخدام مولد anomaly لتغذية IoT Hub ببيانات تحتوي على أنماط شذوذات مختلفة. يمكنك إعداد وظيفة Azure Stream Analytics باستخدام هذه الوظائف لاكتشاف الشذوذات للقراءة من هذا IoT Hub واكتشاف الشذوذات.
سبايك وتراجع
تعرف الحالات الشاذة المؤقتة في دفق أحداث السلسلة الزمنية باسم الارتفاعات والانخفاضات. يمكنك مراقبة الارتفاعات والانخفاضات باستخدام المشغل المعتمد على التعلم الآلي AnomalyDetection_SpikeAndDip.
في نفس نافذة الانزلاق، إذا كانت الضربة الثانية أصغر من الأولى، فقد لا تكون الدرجة المحسوبة للضربة الأصغر كافية مقارنة بدرجة الضربة الأولى ضمن مستوى الثقة المحدد. يمكنك محاولة تقليل مستوى ثقة النموذج لاكتشاف مثل هذه الحالات الشاذة. ومع ذلك، إذا بدأت تتلقى الكثير من التنبيهات، استخدم فترة ثقة أعلى.
يفترض الاستعلام المثال التالي معدل إدخال موحد لحدث واحد في الثانية في نافذة منزلقة مدتها دقيقتان مع محفوظات 120 حدثا. تستخرج عبارة SELECT النهائية وتخرج النتيجة وحالة الشذوذ بمستوى ثقة 95%.
WITH AnomalyDetectionStep AS
(
SELECT
EVENTENQUEUEDUTCTIME AS time,
CAST(temperature AS float) AS temp,
AnomalyDetection_SpikeAndDip(CAST(temperature AS float), 95, 120, 'spikesanddips')
OVER(LIMIT DURATION(second, 120)) AS SpikeAndDipScores
FROM input
)
SELECT
time,
temp,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'Score') AS float) AS
SpikeAndDipScore,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'IsAnomaly') AS bigint) AS
IsSpikeAndDipAnomaly
INTO output
FROM AnomalyDetectionStep
نقطة التغيير
الحالات الشاذة المستمرة في دفق أحداث السلاسل الزمنية هي تغييرات في توزيع القيم في دفق الأحداث، مثل تغييرات المستوى والاتجاهات. في تحليل التدفق، يكتشف مشغل AnomalyDetection_ChangePoint القائم على التعلم الآلي هذه الشذوذات.
تستمر التغييرات المستمرة لفترة أطول بكثير من الارتفاعات والانخفاضات ويمكن أن تشير إلى أحداث كارثية. التغيرات المستمرة عادة لا تكون مرئية بالعين المجردة، لكن مشغل AnomalyDetection_ChangePoint يمكنه اكتشافها.
الصورة التالية هي مثال على تغيير المستوى:
الصورة التالية هي مثال على تغيير الاتجاه:
يفترض الاستعلام المثال التالي معدل إدخال موحد لحدث واحد في الثانية في نافذة منزلقة مدتها 20 دقيقة بحجم محفوظات يبلغ 1,200 حدث. تستخرج عبارة SELECT النهائية وتخرج النتيجة وحالة الشذوذ بمستوى ثقة 80%.
WITH AnomalyDetectionStep AS
(
SELECT
EVENTENQUEUEDUTCTIME AS time,
CAST(temperature AS float) AS temp,
AnomalyDetection_ChangePoint(CAST(temperature AS float), 80, 1200)
OVER(LIMIT DURATION(minute, 20)) AS ChangePointScores
FROM input
)
SELECT
time,
temp,
CAST(GetRecordPropertyValue(ChangePointScores, 'Score') AS float) AS
ChangePointScore,
CAST(GetRecordPropertyValue(ChangePointScores, 'IsAnomaly') AS bigint) AS
IsChangePointAnomaly
INTO output
FROM AnomalyDetectionStep
الخصائص المتعلقة بالأداء
يعتمد أداء هذه النماذج على حجم المحفوظات ومدة النافذة وحمل الحدث وما إذا كان يتم استخدام تقسيم مستوى الوظيفة. يناقش هذا القسم هذه التكوينات ويوفر عينات لكيفية الحفاظ على معدلات الابتلاع 1 كلفن، 5 كلفن، و10 آلاف في الثانية.
- حجم التاريخ - هذه النماذج تعمل بشكل خطي مع حجم التاريخ. كلما زاد حجم السجل ، كلما استغرقت النماذج وقتا أطول لتسجيل حدث جديد. تقارن النماذج الحدث الجديد مع كل حدث سابق في مخزن التاريخ.
- مدة النافذة - يجب أن تعكس مدة النافذة المدة التي يستغرقها استقبال عدد كاف من الأحداث حسب حجم التاريخ. بدون هذا العدد الكبير من الأحداث في النافذة، كان Azure Stream Analytics سيحدد القيم المفقودة. ومن ثم ، فإن استهلاك وحدة المعالجة المركزية هو دالة لحجم التاريخ.
- حمل الأحداث - كلما زاد حمل الحدث، زادت كمية العمل التي تقوم بها النماذج، مما يؤثر على استهلاك وحدة المعالجة المركزية. يمكنك توسيع المهمة بجعلها متوازية بشكل محرج، بافتراض أن منطق الأعمال يستخدم المزيد من أقسام الإدخال.
-
تقسيم مستوى الوظائف - يستخدم
PARTITION BYضمن استدعاء دالة كشف الشذوذ لأداء تقسيم مستوى الدالة. هذا النوع من التقسيم يضيف عبئا إضافيا، حيث يحتاج الوظيفة للحفاظ على الحالة لعدة نماذج في نفس الوقت. استخدم تقسيم مستوى الوظائف في سيناريوهات مثل تقسيم مستوى الجهاز.
العلاقة
يرتبط حجم المحفوظات ومدة النافذة وإجمالي حمل الحدث بالطريقة التالية:
windowDuration (بالمللي ثانية) = 1000 * historySize / (إجمالي أحداث الإدخال في الثانية / عدد أقسام الإدخال)
عند تقسيم الدالة حسب deviceId، أضف "PARTITION BY deviceId" إلى استدعاء دالة الكشف عن الشذوذ.
الملاحظات
يوضح الجدول التالي ملاحظات معدل النقل لعقدة واحدة (ستة وحدات SU) للحالة غير المقسمة:
| حجم السجل (الأحداث) | مدة النافذة (مللي ثانية) | إجمالي أحداث الإدخال في الثانية |
|---|---|---|
| 60 | 55 | 2,200 |
| 600 | 728 | 1,650 |
| 6,000 | 10,910 | 1,100 |
يوضح الجدول التالي ملاحظات معدل النقل لعقدة واحدة (ستة وحدات SU) للحالة المقسمة:
| حجم السجل (الأحداث) | مدة النافذة (مللي ثانية) | إجمالي أحداث الإدخال في الثانية | عدد الأجهزة |
|---|---|---|---|
| 60 | 1091 | 1,100 | 10 |
| 600 | 10,910 | 1,100 | 10 |
| 6,000 | 218,182 | <550 | 10 |
| 60 | 21,819 | 550 | 100 |
| 600 | 218,182 | 550 | 100 |
| 6,000 | 2,181,819 | <550 | 100 |
يمكنك العثور على كود نموذجي لتشغيل التكوينات غير المقسمة في Streaming At Scale repos من Azure Samples. ينشئ الكود وظيفة تحليلات التدفق بدون تقسيم على مستوى الوظائف، والتي تستخدم مراكز الأحداث كمدخل ومخرجات. يقوم عملاء الاختبار بتوليد حمل الإدخال. كل حدث إدخال هو مستند JSON بحجم 1 كيلوبايت. تحاكي هذه الأحداث جهاز إنترنت الأشياء الذي يرسل بيانات JSON (لما يصل إلى 1 كيلوبايت جهاز). يختلف حجم التاريخ، مدة النافذة، وإجمالي حمل الأحداث عبر قسمين من الإدخال.
ملاحظة
للحصول على تقدير أكثر دقة، قم بتخصيص العينات لتناسب السيناريو الخاص بك.
تحديد الاختناقات
لتحديد عنق الزجاجة في خط الأنابيب الخاص بك، استخدم لوحة المقاييس في وظيفتك في Azure Stream Analytics. راجع أحداث الإدخال/الإخراج من حيث معدل النقل و "تأخير العلامات المائية" أو الأحداث المتراكمة لترى ما إذا كانت المهمة تواكب معدل الإدخال. بالنسبة لمقاييس Event Hubs، ابحث عن الطلبات المخنونة وقم بضبط وحدات العتبة وفقا لذلك. بالنسبة Azure Cosmos DB المقاييس، راجع Max استهلاك RU/s لكل نطاق مفتاح تقسيم تحت معدل النقل لضمان استهلاك نطاقات مفاتيح التقسيم بشكل متساو. بالنسبة لقاعدة بيانات Azure SQL، راقب Log IO و CPU.