Inference Architecture
Roboflow Inference कैसे architect किया गया है - request routing, parallelization, microservice और appliance patterns, capabilities, और Docker क्यों अनुशंसित है।
इन्फरेंस को सर्वर मोड में चलाना सबसे अच्छा है। यह भी एक मूल Python इंटरफ़ेस, हालांकि देखें हम Docker की अनुशंसा क्यों करते हैं। आप इसके साथ REST API के माध्यम से इंटरैक्ट करते हैं, अक्सर इन्फरेंस SDK, या वेब ब्राउज़र से ( Roboflow ऐप वैकल्पिक रूप से स्थानीय रूप से होस्ट किए गए इन्फरेंस सर्वर के लिए फ्रंटएंड के रूप में कार्य कर सकता है)।
इन्फरेंस मॉडल के माध्यम से, या मॉडलों की एक श्रृंखला के माध्यम से, पूर्वानुमान प्राप्त करने और परिणामों को संसाधित करने का समन्वय करता है। यह कार्यभार को समानांतर करने और उपलब्ध GPU तथा CPU कोर का कुशलतापूर्वक उपयोग करने के लिए स्वचालित रूप से मल्टीथ्रेडिंग करता है, और वीडियो स्ट्रीम का उपभोग करते समय यह परिवर्ती प्रसंस्करण दरों के अनुसार गतिशील रूप से अनुकूलित होता है ताकि होस्ट मशीन पर अधिक भार न पड़े।
इन्फरेंस मॉडल वज़न और Workflow परिभाषाएँ प्राप्त करने तथा बाद के मूल्यांकन के लिए मॉडल परिणामों का रिकॉर्ड रखने हेतु Roboflow सेवाओं से बात करता है, लेकिन सभी गणना स्थानीय रूप से की जाती है, जिसका अर्थ है कि यह ऑफ़लाइन चल सकता है।
एक इन्फरेंस सर्वर कई क्लाइंट और स्ट्रीम को संभाल सकता है।

माइक्रोसर्विस के रूप में इन्फरेंस
इन्फरेंस का उपयोग करने का सबसे सामान्य तरीका एक बड़े सिस्टम के छोटे हिस्से के रूप में है, जो एक प्रतिक्रिया उत्पन्न करता है जिसे डाउनस्ट्रीम कोड उपयोग करता है। वह प्रतिक्रिया कभी-कभी किसी मॉडल से पूर्वानुमान का प्रतिनिधित्व करती है (उदाहरण के लिए, किसी छवि में ऑब्जेक्ट्स का वर्गीकरण, स्थान, और आकार शामिल करने वाले डिटेक्शनों का एक सेट), लेकिन यह पोस्ट-प्रोसेसिंग लॉजिक के परिणाम का भी प्रतिनिधित्व कर सकती है (जैसे किसी निरीक्षण की पास/फेल स्थिति), एक समुच्चयन (जैसे पिछले घंटे में देखी गई अनूठी वस्तुओं की संख्या), या एक विज़ुअलाइज़ेशन।
छवि कार्यभार के लिए, इनपुट एक पैरामीटर के रूप में पास किया जाता है और प्रतिक्रिया समकालिक रूप से लौटाई जाती है।
वीडियो स्ट्रीम के लिए, सर्वर एक स्थायी वीडियो वर्कर शुरू करता है जो सत्र समाप्त होने तक चलता रहता है। क्लाइंट अनुप्रयोग WebRTC के माध्यम से संसाधित फ़्रेम और पूर्वानुमान डेटा प्राप्त करते हैं।
माइक्रोसर्विस के उदाहरण उपयोग-मामले:
वेबसाइट पर उपयोगकर्ताओं द्वारा अपलोड की गई छवियों को टैग करना
मशीन को चालू करने की अनुमति देने से पहले यह निर्धारित करना कि वह सही ढंग से सेटअप है या नहीं
वीडियो में चेहरों को धुंधला करना
तैयार सर्किट बोर्ड में बेमेल वायरिंग का पता लगाना
निर्मित वस्तु का निरीक्षण करना ताकि यह सुनिश्चित हो कि वह स्पेसिफिकेशन से मेल खाती है
सत्यापित करना कि कोई वस्तु दोष और दाग-धब्बों से मुक्त है
छवि में गोलियों की संख्या गिनना
एप्लायंस के रूप में इन्फरेंस
इन्फरेंस को एक स्वायत्त एजेंट के रूप में भी माना जा सकता है जो लगातार एक वीडियो स्ट्रीम का उपभोग और प्रसंस्करण करता है और बाद की क्रियाएँ करता है, जैसे डेटाबेस अपडेट करना, सूचनाएँ भेजना, वेबहुक ट्रिगर करना, या हार्डवेयर को सिग्नल देना। इस पैटर्न में सिस्टम की पूरी लॉजिक एक वर्कफ़्लो में परिभाषित की जाती है और आउटपुट बाहरी प्रणालियों को पुश किया जाता है।
एप्लायंस के उदाहरण उपयोग-मामले:
यदि जाम हो गया हो तो कन्वेयर बेल्ट को रोकना
राजमार्ग यातायात विश्लेषिकी एकत्र करना
सुरक्षा कैमरा फीड में संदिग्ध गतिविधि को चिह्नित करना
वाहनों के यार्ड में प्रवेश करने या बाहर निकलने पर इन्वेंटरी सिस्टम को अपडेट करना
जब स्क्रैप का ढेर ओवरफ़्लो हो जाए, तो अलार्म बजाना
दिन भर में खुदरा ग्राहकों के प्रतीक्षा समय का रिकॉर्ड रखना
सर्वर आपके लिए क्या संभालता है
मॉडल सर्विंग
ऑब्जेक्ट डिटेक्शन, छवि वर्गीकरण, इंस्टेंस सेगमेंटेशन, कीपॉइंट डिटेक्शन, छवि एम्बेडिंग, OCR, विज़ुअल प्रश्न-उत्तर, और बहुत कुछ चलाता है। देखें समर्थित मॉडल.
छवि प्रसंस्करण
वे ही पूर्व- और पश्च-प्रसंस्करण विधियाँ लागू करता है जो मॉडल प्रशिक्षण के दौरान उपयोग करते हैं, और वह भी कुशलतापूर्वक, ताकि सटीकता अनावश्यक विलंब के बिना बनी रहे।
वीडियो स्ट्रीम प्रबंधन
वीडियो स्ट्रीम प्रोसेस करने के लिए अलग-अलग थ्रेड शुरू करता है ताकि मॉडल को हमेशा संभवतः सबसे हालिया फ्रेम मिले।
वर्कफ़्लोज़
एक घोषित कंप्यूटेशन ग्राफ चलाता है जो मॉडलों, लॉजिक, इंटीग्रेशन, और कस्टम कोड के माध्यम से डेटा को पाइप और समानांतर करता है।
HTTP सर्वर, SDK, और CLI
माइक्रोसर्विस के रूप में उपयोग के लिए एक HTTP API, साथ ही एक Python SDK और CLI इसे चलाने के लिए।
गति
मल्टीप्रोसेसिंग, हार्डवेयर त्वरक, और डायनेमिक बैचिंग के माध्यम से स्वचालित समानांतरकरण, साथ ही समर्थित GPU पर वैकल्पिक TensorRT क्वांटाइज़ेशन और डिवाइस-विशिष्ट लेयर फ़्यूज़न।
ऑफ़लाइन कैश
मॉडल और Workflow परिभाषाएँ डाउनलोड करता है और उन्हें स्थानीय रूप से संग्रहीत करता है ताकि सर्वर में संचालित हो सके ऑफ़लाइन मोड.
इनसाइट्स
आउटलायर डेटा अपलोड करने, आँकड़े और टेलीमेट्री प्रदर्शित करने, और डाउनस्ट्रीम डेटा सिंक को फीड करने के लिए Roboflow प्लेटफ़ॉर्म से जुड़ता है। देखें मॉडल निगरानी और सक्रिय शिक्षण.
पोर्टेबिलिटी
macOS डेवलपमेंट मशीनों, क्लाउड सर्वरों, और छोटे एज डिवाइसों पर चलता है। Docker टैग बदलें और वही कोड दूसरे प्लेटफ़ॉर्म पर चल जाएगा।
विस्तारयोग्यता
Apache 2.0 के अंतर्गत ओपन सोर्स। कस्टम मॉडल, Workflow ब्लॉक, और बैकएंड जोड़ें, या ब्लॉकों के बीच की खाइयों को पाटने के लिए डायनेमिक Python ब्लॉकों का उपयोग करें।
Docker क्यों
हम इन्फरेंस चलाने के लिए Docker कंटेनर का उपयोग करने की दृढ़ता से अनुशंसा करते हैं। मशीन लर्निंग निर्भरताएँ अपने परिवेश में छोटे बदलावों के प्रति संवेदनशील होती हैं; यदि उन्हें एक नियतात्मक परिवेश में अलग-थलग नहीं किया जाता, तो जब आप अपना ऑपरेटिंग सिस्टम या ड्राइवर अपडेट करते हैं, अपने अनुप्रयोग कोड की निर्भरताएँ अपडेट करते हैं, सुरक्षा पैच लागू करते हैं, या नई मशीन सेट अप करते हैं, तो आपका सिस्टम टूटने की संभावना है। इमेजें सुनिश्चित करती हैं कि लाइब्रेरी संस्करण एक-दूसरे के साथ संगत हों, पैकेज GPU का लाभ लेने के लिए संकलित हों, और सुरक्षा पैच लागू किए जाएँ।
Docker आपको पोर्टेबिलिटी भी देता है। आप बाद में तय कर सकते हैं कि एक ही बड़े सर्वर से कई क्लाइंटों को सेवा दें, या CPU से GPU पर अपग्रेड करें, बिना अपने अनुप्रयोग कोड को पुनर्गठित किए।
अपवाद वह हार्डवेयर है जहाँ कंटेनर एक्सेलेरेटर तक नहीं पहुँच सकता, जैसे macOS पर MPS, जहाँ Docker के बाहर चलाना त्वरक प्राप्त करने का एकमात्र तरीका है।
अंतिम अपडेट
क्या यह उपयोगी था?