> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/hi/blocks/blocks/advanced-blocks/model-monitoring-inference-aggregator.md).

# मॉडल मॉनिटरिंग इनफ़रेंस एग्रीगेटर

समय-समय पर मेमोरी में प्रेडिक्शनों को एकत्र करके और एक क्यूरेटेड सैंपल की रिपोर्ट करके Roboflow Model Monitoring को, प्रेडिक्शनों को मेमोरी में इकट्ठा करके, वर्ग के अनुसार समूहित करके, प्रत्येक वर्ग के लिए सबसे अधिक confident प्रेडिक्शन का चयन करके, और कॉन्फ़िगर किए जा सकने वाले अंतरालों पर समेकित परिणाम भेजकर, ताकि न्यूनतम प्रदर्शन ओवरहेड के साथ कुशल वीडियो प्रोसेसिंग मॉनिटरिंग, प्रोडक्शन एनालिटिक्स, और मॉडल प्रदर्शन ट्रैकिंग वर्कफ़्लो सक्षम हों।

## यह ब्लॉक कैसे काम करता है

यह ब्लॉक समय के साथ प्रेडिक्शनों को समेकित करता है और नियमित अंतराल पर प्रतिनिधि सैंपल Roboflow Model Monitoring को भेजता है, जिससे API कॉल कम होती हैं और वीडियो प्रोसेसिंग प्रदर्शन बना रहता है। यह ब्लॉक:

1. प्रेडिक्शन और कॉन्फ़िगरेशन प्राप्त करता है:
   * किसी भी समर्थित मॉडल प्रकार (ऑब्जेक्ट डिटेक्शन, इंस्टेंस सेगमेंटेशन, कीपॉइंट डिटेक्शन, या क्लासिफिकेशन) से प्रेडिक्शन लेता है
   * Model Monitoring में पहचान के लिए मॉडल ID प्राप्त करता है
   * रिपोर्टिंग अंतराल को सेकंड में निर्दिष्ट करने वाला frequency पैरामीटर स्वीकार करता है
   * एक्ज़ीक्यूशन मोड फ़्लैग (fire-and-forget) प्राप्त करता है
2. Roboflow API key की पुष्टि करता है:
   * जांचता है कि एक मान्य Roboflow API key उपलब्ध है (API access के लिए आवश्यक)
   * यदि API key गायब हो तो उसे प्राप्त करने के निर्देशों के साथ एक त्रुटि उठाता है
3. प्रेडिक्शनों को मेमोरी में एकत्र करता है:
   * मॉडल ID के अनुसार व्यवस्थित इन-मेमोरी एग्रीगेटर में प्रेडिक्शन संग्रहीत करता है
   * रिपोर्टिंग अंतरालों के बीच प्रेडिक्शन जमा करता है
   * वर्कफ़्लो एक्ज़ीक्यूशन सत्र की अवधि तक स्थिति बनाए रखता है
4. रिपोर्टिंग अंतराल की जांच करता है:
   * अद्वितीय एग्रीगेटर कुंजी के आधार पर अंतिम रिपोर्ट समय को ट्रैक करने के लिए कैश का उपयोग करता है
   * पिछली रिपोर्ट के बाद बीता समय गणना करता है
   * बीते हुए समय की तुलना कॉन्फ़िगर किए गए frequency थ्रेशोल्ड से करता है
   * यदि अंतराल नहीं पहुँचा है तो रिपोर्टिंग छोड़ देता है (स्थिति संदेश लौटाता है)
5. रिपोर्टिंग के समय प्रेडिक्शनों को समेकित करता है:
   * सभी एकत्रित प्रेडिक्शनों को Model Monitoring के लिए प्रारूपित करता है
   * सभी एकत्रित डेटा में प्रेडिक्शनों को class name के अनुसार समूहित करता है
   * प्रत्येक class के लिए, प्रेडिक्शनों को confidence के अनुसार क्रमबद्ध करता है (सबसे अधिक पहले)
   * प्रत्येक class के लिए सबसे अधिक confident प्रेडिक्शन को प्रतिनिधि सैंपल के रूप में चुनता है
   * प्रेडिक्शनों का एक क्यूरेटेड सेट बनाता है (प्रत्येक class के लिए एक, सबसे अधिक confidence के साथ)
6. वर्कस्पेस जानकारी प्राप्त करता है:
   * प्रदान की गई API key का उपयोग करके Roboflow API से workspace ID प्राप्त करता है
   * दोहराए गए API कॉल से बचने के लिए कैशिंग (15 मिनट की समाप्ति) का उपयोग करता है
   * API key के MD5 hash को कैश कुंजी के रूप में उपयोग करके workspace नाम कैश करता है
7. समेकित डेटा Model Monitoring को भेजता है:
   * timestamp, source info, device ID, और server version के साथ inference data payload बनाता है
   * मॉनिटरिंग संदर्भ के लिए सिस्टम जानकारी (यदि उपलब्ध हो) शामिल करता है
   * समेकित प्रेडिक्शनों (प्रत्येक class के लिए एक) को Roboflow Model Monitoring API पर भेजता है
   * भेजने के बाद इन-मेमोरी एग्रीगेटर को फ्लश करता है (नया संग्रह शुरू करता है)
   * कैश में अंतिम रिपोर्ट समय अपडेट करता है
8. सिंक्रोनस या एसिंक्रोनस रूप से निष्पादित करता है:
   * **एसिंक्रोनस मोड (fire\_and\_forget=True)**: कार्य को बैकग्राउंड थ्रेड पूल या FastAPI बैकग्राउंड टास्क में भेजता है, जिससे वर्कफ़्लो API कॉल के पूरा होने की प्रतीक्षा किए बिना जारी रह सकता है
   * **सिंक्रोनस मोड (fire\_and\_forget=False)**: API कॉल के पूरा होने की प्रतीक्षा करता है और तुरंत स्थिति लौटाता है, जो डिबगिंग और त्रुटि हैंडलिंग के लिए उपयोगी है
9. स्थिति जानकारी लौटाता है:
   * सफलता (False) या विफलता (True) दर्शाने वाला error\_status आउटपुट करता है
   * रिपोर्टिंग स्थिति या त्रुटि विवरण वाला संदेश आउटपुट करता है
   * यह फ़ीडबैक देता है कि एग्रीगेशन भेजा गया या छोड़ा गया

यह ब्लॉक वीडियो प्रोसेसिंग वर्कफ़्लो के लिए अनुकूलित है, जहाँ हर प्रेडिक्शन भेजने से अत्यधिक API कॉल होंगी और प्रदर्शन पर असर पड़ेगा। प्रेडिक्शनों को एकत्र करके और प्रतिनिधि सैंपल (प्रत्येक class के लिए सबसे अधिक confident) चुनकर, यह ब्लॉक न्यूनतम ओवरहेड के साथ सार्थक मॉनिटरिंग डेटा प्रदान करता है। अंतराल-आधारित रिपोर्टिंग निरंतर API कॉल के बिना Model Monitoring को नियमित अपडेट सुनिश्चित करती है।

## सामान्य उपयोग के मामले

#### 🔍 इस ब्लॉक का उपयोग क्यों करें?

यह ब्लॉक Workflows में वीडियो प्रोसेसिंग पर निर्भर परियोजनाओं के लिए एक गेम-चेंजर है। अपनी एग्रीगेशन प्रक्रिया के साथ, यह classes के बीच सबसे अधिक confident प्रेडिक्शनों की पहचान करता है और उन्हें छोटे संदेशों में नियमित अंतराल पर Roboflow backend को भेजता है - यह सुनिश्चित करते हुए कि वीडियो प्रोसेसिंग प्रदर्शन पर न्यूनतम प्रभाव पड़े।

के लिए उपयुक्त:

* रीयल-टाइम में उत्पादन लाइन के प्रदर्शन की निगरानी करना 🏭।
* समय के साथ आपके मॉडल के प्रदर्शन को डिबग और सत्यापित करना ⏱️।
* न्यूनतम ओवरहेड के साथ inference workflows से कार्रवाई योग्य अंतर्दृष्टि प्रदान करना 🔧।

#### 🚨 सीमाएँ

* वर्कफ़्लो चलाते समय इस ब्लॉक पर भरोसा नहीं किया जाना चाहिए `inference` सर्वर पर या Roboflow hosted platform को HTTP अनुरोध के माध्यम से, क्योंकि आंतरिक स्थिति ऐसे मेमोरी में स्थायी नहीं रहती जो सर्वर के सभी अनुरोधों के लिए सुलभ हो, जिससे एग्रीगेशन **का दायरा केवल एकल अनुरोध तक रह जाता है**. यदि यह ग्राहकों के लिए एक गंभीर सीमा साबित होती है, तो हम भविष्य के रिलीज़ में उस समस्या का समाधान करेंगे।

## अन्य ब्लॉक्स से कनेक्ट करना

यह ब्लॉक प्रेडिक्शन प्राप्त करता है और स्थिति जानकारी आउटपुट करता है:

* **मॉडल ब्लॉकों के बाद** (ऑब्जेक्ट डिटेक्शन मॉडल, इंस्टेंस सेगमेंटेशन मॉडल, क्लासिफिकेशन मॉडल, कीपॉइंट डिटेक्शन मॉडल) प्रेडिक्शनों को एकत्र और Model Monitoring में रिपोर्ट करने के लिए (उदाहरण के लिए, detection परिणामों को एकत्र करना, classification outputs की रिपोर्ट करना, model predictions की निगरानी करना), जिससे model-to-monitoring workflows सक्षम होते हैं
* **फ़िल्टरिंग या एनालिटिक्स ब्लॉकों के बाद** (DetectionsFilter, ContinueIf, OverlapFilter) मॉनिटरिंग के लिए फ़िल्टर किए गए या विश्लेषित परिणामों को एकत्र करने हेतु (उदाहरण के लिए, फ़िल्टर किए गए detections को एकत्र करना, analytics परिणामों की रिपोर्ट करना, processed predictions की निगरानी करना), जिससे analysis-to-monitoring workflows सक्षम होते हैं
* **वीडियो प्रोसेसिंग workflows में** न्यूनतम प्रदर्शन प्रभाव के साथ वीडियो विश्लेषण की कुशलतापूर्वक निगरानी करने के लिए (उदाहरण के लिए, वीडियो फ्रेम detections को एकत्र करना, वीडियो प्रोसेसिंग परिणामों की रिपोर्ट करना, वीडियो विश्लेषण प्रदर्शन की निगरानी करना), जिससे video monitoring workflows सक्षम होते हैं
* **प्रीप्रोसेसिंग या ट्रांसफ़ॉर्मेशन ब्लॉकों के बाद** रूपांतरित प्रेडिक्शनों की निगरानी करने के लिए (उदाहरण के लिए, रूपांतरित detections को एकत्र करना, processed परिणामों की रिपोर्ट करना, transformation outputs की निगरानी करना), जिससे transformation-to-monitoring workflows सक्षम होते हैं
* **प्रोडक्शन डिप्लॉयमेंट वर्कफ़्लो में** प्रोडक्शन वातावरण में मॉडल प्रदर्शन को ट्रैक करने के लिए (उदाहरण के लिए, production inference की निगरानी करना, deployment performance को ट्रैक करना, production metrics की रिपोर्ट करना), जिससे production monitoring workflows सक्षम होते हैं
* **सिंक ब्लॉक के रूप में** वर्कफ़्लो निष्पादन को अवरुद्ध किए बिना समेकित मॉनिटरिंग डेटा भेजने के लिए (उदाहरण के लिए, बैकग्राउंड मॉनिटरिंग रिपोर्टिंग, non-blocking analytics, कुशल डेटा संग्रह), जिससे sink-to-monitoring workflows सक्षम होते हैं

## आवश्यकताएँ

इस ब्लॉक के लिए वातावरण या वर्कफ़्लो कॉन्फ़िगरेशन में एक मान्य Roboflow API key की आवश्यकता होती है। API key Roboflow API के साथ प्रमाणीकरण करने और Model Monitoring सुविधाओं तक पहुँचने के लिए आवश्यक है। API key प्राप्त करने का तरीका जानने के लिए <https://docs.roboflow.com/reference/authentication/authentication/find-your-roboflow-api-key> देखें। यह ब्लॉक एग्रीगेशन के लिए इन-मेमोरी स्थिति बनाए रखता है, जिसका अर्थ है कि यह लंबे समय तक चलने वाले वर्कफ़्लो (जैसे एक स्थायी WebRTC सत्र में वीडियो प्रोसेसिंग) के लिए सबसे अच्छा काम करता है। inference server में वर्कफ़्लो चलाते समय या Roboflow hosted platform को HTTP अनुरोधों के माध्यम से इस ब्लॉक पर भरोसा नहीं किया जाना चाहिए, क्योंकि आंतरिक स्थिति केवल एकल अनुरोधों के लिए सुलभ होती है और एग्रीगेशन का दायरा केवल एकल अनुरोध निष्पादन तक सीमित होता है। यह ब्लॉक एक ही वीडियो worker process से जुड़े सभी वीडियो feeds के लिए डेटा एकत्र करता है (प्रत्येक video feed के लिए एग्रीगेशन अलग नहीं कर सकता)। frequency पैरामीटर कम से कम 1 सेकंड होना चाहिए। Roboflow पर Model Monitoring के बारे में अधिक जानकारी के लिए, <https://docs.roboflow.com/deploy/model-monitoring> देखें।

### प्रकार पहचानकर्ता

स्टेप में निम्नलिखित पहचानकर्ता का उपयोग करें `"type"` फ़ील्ड: `roboflow_core/model_monitoring_inference_aggregator@v1` अपने वर्कफ़्लो में ब्लॉक को एक स्टेप के रूप में जोड़ने के लिए।

### गुण

| **नाम**                 | **प्रकार** | **विवरण**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | संदर्भ |
| ----------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------ |
| `name`                  | `str`      | इस स्टेप के लिए एक विशिष्ट पहचानकर्ता दर्ज करें..                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | ❌      |
| `frequency`             | `int`      | सेकंड में रिपोर्टिंग आवृत्ति। यह निर्दिष्ट करता है कि समेकित प्रेडिक्शनों को Roboflow Model Monitoring को कितनी बार भेजा जाता है। उदाहरण के लिए, यदि इसे 5 पर सेट किया गया है, तो ब्लॉक 5 सेकंड तक प्रेडिक्शन एकत्र करता है, फिर समेकित सैंपल (प्रत्येक class के लिए एक सबसे अधिक confident प्रेडिक्शन) Model Monitoring को भेजता है। यह कम से कम 1 सेकंड होना चाहिए। कम मान अधिक बार अपडेट प्रदान करते हैं लेकिन API कॉल बढ़ाते हैं। अधिक मान API कॉल कम करते हैं लेकिन कम बार अपडेट प्रदान करते हैं। डिफ़ॉल्ट: 5 सेकंड। यह वीडियो प्रोसेसिंग के लिए अच्छी तरह काम करता है जहाँ आप नियमित लेकिन अत्यधिक नहीं रिपोर्टिंग चाहते हैं.. | ✅      |
| `unique_aggregator_key` | `str`      | अद्वितीय कुंजी जो आंतरिक रूप से एग्रीगेशन सत्र को ट्रैक करने और अंतिम रिपोर्ट समय को कैश करने के लिए उपयोग की जाती है। यह कुंजी आपके वर्कफ़्लो में इस ब्लॉक के प्रत्येक instance के लिए अद्वितीय होनी चाहिए। इस कुंजी का उपयोग ऐसे कैश एंट्री बनाने के लिए किया जाता है जो ट्रैक करती हैं कि अंतिम रिपोर्ट कब भेजी गई थी, जिससे अंतराल-आधारित रिपोर्टिंग सक्षम होती है। यह फ़ील्ड स्वतः उत्पन्न होती है और UI में छिपी रहती है..                                                                                                                                                                                                     | ❌      |
| `fire_and_forget`       | `bool`     | एक्ज़ीक्यूशन मोड फ़्लैग। जब True (डिफ़ॉल्ट) हो, तो ब्लॉक बैकग्राउंड में एसिंक्रोनस रूप से चलता है, जिससे वर्कफ़्लो API कॉल के पूरा होने की प्रतीक्षा किए बिना प्रोसेसिंग जारी रख सकता है। यह वर्कफ़्लो निष्पादन को तेज़ बनाता है, लेकिन त्रुटियाँ तुरंत उपलब्ध नहीं होतीं। जब False हो, तो ब्लॉक सिंक्रोनस रूप से चलता है और API कॉल के पूरा होने की प्रतीक्षा करता है, तुरंत स्थिति और त्रुटि जानकारी लौटाता है। डिबगिंग और त्रुटि हैंडलिंग के लिए False का उपयोग करें, और उन production workflows के लिए True का उपयोग करें जहाँ प्रदर्शन प्राथमिकता होती है..                                                                     | ✅      |

यह **संदर्भ** स्तंभ यह इंगित करता है कि संपत्ति को वर्कफ़्लो रनटाइम में उपलब्ध गतिशील मानों के साथ पैरामीटराइज़ किया जा सकता है `वर्कफ़्लो` रनटाइम। देखें *बाइंडिंग्स* अधिक जानकारी के लिए।

### रनटाइम संगतता

`requires_internet` - air-gapped / offline deployments : यह ब्लॉक ऐसी सेवा पर निर्भर करता है जो पूरी तरह ऑफ़लाइन / air-gapped deployments से पहुँचा नहीं जा सकता।

`सॉफ्ट` - रनटाइम `hosted_serverless`, `dedicated_deployment`; निष्पादन `दूरस्थ`; इनपुट `वीडियो` : एग्रीगेशन बफ़र प्रोसेस मेमोरी में संग्रहीत होते हैं, जबकि रिपोर्टिंग अंतराल कैश में ट्रैक किया जाता है। स्टेटलेस या मल्टी-रिप्लिका HTTP रनटाइम्स पर remote step execution के साथ, प्रेडिक्शन अलग-अलग worker processes द्वारा एकत्र किए जा सकते हैं, इसलिए रिपोर्टें कम-एकत्रित हो सकती हैं या आंशिक एग्रीगेशन विंडो को फ़्लश कर सकती हैं। स्थिर वीडियो एग्रीगेशन के लिए एक persistent WebRTC session में local step execution का उपयोग करें।

`सॉफ्ट` - इनपुट `छवि` : ब्लॉक वीडियो या दोहराए गए-फ़्रेम वर्कफ़्लो से समयगत संदर्भ पर निर्भर करता है। एक स्थिर छवि/फ़ोटो के साथ, ट्रैक करने, तुलना करने, समेकित करने या दृश्यीकृत करने के लिए कोई अर्थपूर्ण इतिहास नहीं होता, इसलिए ब्लॉक बहुत कम या कोई लाभ नहीं देता।

### इनपुट और आउटपुट बाइंडिंग्स

उपलब्ध कनेक्शन उसके बाइंडिंग प्रकारों पर निर्भर करते हैं। देखें कि कौन-से बाइंडिंग प्रकार `मॉडल मॉनिटरिंग इन्फरेंस एग्रीगेटर` संस्करण `v1` है।

<details>

<summary>इनपुट और आउटपुट बाइंडिंग्स</summary>

* इनपुट
  * `predictions` (*Union\[*[*`object_detection_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/object-detection-prediction.md)*,* [*`classification_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/classification-prediction.md)*,* [*`instance_segmentation_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/instance-segmentation-prediction.md)*,* [*`keypoint_detection_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/keypoint-detection-prediction.md)*]*): मॉडल प्रेडिक्शन (ऑब्जेक्ट डिटेक्शन, इंस्टेंस सेगमेंटेशन, कीपॉइंट डिटेक्शन, या क्लासिफिकेशन) जिन्हें एकत्र करके Roboflow Model Monitoring को रिपोर्ट किया जाता है। प्रेडिक्शन मेमोरी में एकत्र किए जाते हैं, class name के अनुसार समूहित होते हैं, और प्रत्येक class के लिए सबसे अधिक confident प्रेडिक्शन को प्रतिनिधि सैंपल के रूप में चुना जाता है। प्रेडिक्शन frequency सेटिंग के आधार पर रिपोर्टिंग अंतरालों के बीच जमा होते हैं। समर्थित प्रेडिक्शन प्रकार: supervision Detections objects या classification prediction dictionaries..
  * `model_id` ([*`roboflow_model_id`*](/workflows/hi/developer-guide/developer-guide/kinds/roboflow-model-id.md)): Roboflow model ID (format: 'project/version') जो Model Monitoring में प्रेडिक्शनों के साथ संबद्ध करने के लिए उपयोग किया जाता है। यह पहचानता है कि कौन सा मॉडल रिपोर्ट किए जा रहे प्रेडिक्शन उत्पन्न कर रहा है। मॉडल ID Roboflow को भेजे गए मॉनिटरिंग डेटा में शामिल होती है, जिससे आप Model Monitoring डैशबोर्ड में प्रत्येक मॉडल के प्रदर्शन को ट्रैक कर सकते हैं..
  * `frequency` ([*`string`*](/workflows/hi/developer-guide/developer-guide/kinds/string.md)): सेकंड में रिपोर्टिंग आवृत्ति। यह निर्दिष्ट करता है कि समेकित प्रेडिक्शनों को Roboflow Model Monitoring को कितनी बार भेजा जाता है। उदाहरण के लिए, यदि इसे 5 पर सेट किया गया है, तो ब्लॉक 5 सेकंड तक प्रेडिक्शन एकत्र करता है, फिर समेकित सैंपल (प्रत्येक class के लिए एक सबसे अधिक confident प्रेडिक्शन) Model Monitoring को भेजता है। यह कम से कम 1 सेकंड होना चाहिए। कम मान अधिक बार अपडेट प्रदान करते हैं लेकिन API कॉल बढ़ाते हैं। अधिक मान API कॉल कम करते हैं लेकिन कम बार अपडेट प्रदान करते हैं। डिफ़ॉल्ट: 5 सेकंड। यह वीडियो प्रोसेसिंग के लिए अच्छी तरह काम करता है जहाँ आप नियमित लेकिन अत्यधिक नहीं रिपोर्टिंग चाहते हैं..
  * `fire_and_forget` ([*`boolean`*](/workflows/hi/developer-guide/developer-guide/kinds/boolean.md)): एक्ज़ीक्यूशन मोड फ़्लैग। जब True (डिफ़ॉल्ट) हो, तो ब्लॉक बैकग्राउंड में एसिंक्रोनस रूप से चलता है, जिससे वर्कफ़्लो API कॉल के पूरा होने की प्रतीक्षा किए बिना प्रोसेसिंग जारी रख सकता है। यह वर्कफ़्लो निष्पादन को तेज़ बनाता है, लेकिन त्रुटियाँ तुरंत उपलब्ध नहीं होतीं। जब False हो, तो ब्लॉक सिंक्रोनस रूप से चलता है और API कॉल के पूरा होने की प्रतीक्षा करता है, तुरंत स्थिति और त्रुटि जानकारी लौटाता है। डिबगिंग और त्रुटि हैंडलिंग के लिए False का उपयोग करें, और उन production workflows के लिए True का उपयोग करें जहाँ प्रदर्शन प्राथमिकता होती है..
* आउटपुट
  * `error_status` ([`boolean`](/workflows/hi/developer-guide/developer-guide/kinds/boolean.md)): बूलियन फ़्लैग.
  * `message` ([`string`](/workflows/hi/developer-guide/developer-guide/kinds/string.md)): स्ट्रिंग मान.

</details>

<details>

<summary>उदाहरण JSON परिभाषा</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/model_monitoring_inference_aggregator@v1",
	    "predictions": "$steps.object_detection.predictions",
	    "model_id": "my_project/3",
	    "frequency": 3,
	    "unique_aggregator_key": "session-1v73kdhfse",
	    "fire_and_forget": true
	}
```

</details>
