प्रतिनिधि इंटरव्यू विषय

सिस्टम डिज़ाइन इंटरव्यू: एक ऑडिटेबल, रोलबैक-सुरक्षित मॉडल रजिस्ट्री बनाएं

सिस्टम डिज़ाइनकठिन
Offer.cc संपादकीय टीमप्रकाशित अपडेट किया गया

प्रश्न

एक ऐसी मॉडल रजिस्ट्री डिज़ाइन करें जो कई टीमों को मॉडल रजिस्टर, मूल्यांकन, डिप्लॉय और रोलबैक करने की सुविधा दे, साथ ही वर्ज़न को ट्रेस करने योग्य रखे, उपनाम परिवर्तनों को सुरक्षित रखे और डिप्लॉयमेंट को गलत आर्टिफैक्ट लोड करने से रोके।

प्रॉम्प्ट और संदर्भ

आपका प्लेटफ़ॉर्म सैकड़ों मॉडलों को सर्व करता है जिनके ट्रेनिंग आर्टिफैक्ट्स अलग-अलग पाइपलाइनों से आते हैं। ऑनलाइन सेवाओं को एक स्वीकृत वर्ज़न के लिए एक स्थिर संदर्भ (reference) की आवश्यकता होती है, जबकि अनुसंधान को तेज़ प्रयोगों की आवश्यकता होती है और अनुपालन (compliance) के लिए ट्रेनिंग-डेटा स्नैपशॉट, मूल्यांकन मेट्रिक्स, स्वीकृतकर्ता और डिप्लॉयमेंट इतिहास की आवश्यकता होती है। मान लें कि मॉडल फ़ाइलें ऑब्जेक्ट स्टोरेज में रहती हैं और इन्फरेंस सेवाएँ रजिस्ट्री के माध्यम से वर्ज़न और उपनामों (aliases) को हल (resolve) करती हैं।

साक्षात्कारकर्ता क्या मूल्यांकन करता है

साक्षात्कारकर्ता यह देखना चाहता है कि आप इम्यूटिएबल मॉडल वर्ज़न को म्यूटिएबल रिलीज़ पॉइंटर्स से अलग करते हैं या नहीं। एक मजबूत उत्तर मेटाडेटा निरंतरता, आर्टिफैक्ट अखंडता, परमाणु (atomic) उपनाम परिवर्तन, पर्यावरण अलगाव (environment isolation), अनुमोदन और रोलबैक को कवर करता है। एक कमज़ोर उत्तर केवल एक CRUD सेवा बनाता है जो फ़ाइल नाम संग्रहीत करती है।

पहले पूछे जाने वाले स्पष्टीकरण

  • क्या किसी मॉडल को विभिन्न वातावरणों में पुन: उपयोग किया जा सकता है? यदि विकास, स्टेजिंग और प्रोडक्शन अलग-थलग हैं, तो उपनामों और अनुमतियों को अलग-अलग सीमाओं की आवश्यकता होती है।
  • क्या रोलबैक पिछले, किसी निर्दिष्ट, या अंतिम स्वस्थ (healthy) वर्ज़न पर है? प्रत्येक लक्ष्य स्वास्थ्य और ऑडिट मॉडल को बदल देता है।
  • कौन सा मूल्यांकन साक्ष्य अनिवार्य है? डेटासेट स्नैपशॉट या मीट्रिक गायब होने वाले वर्ज़न को स्वीकृत नहीं किया जा सकता है।
  • क्या इन्फरेंस सेवाएँ मॉडल को कैश कर सकती हैं? कैश TTL और उपनाम प्रसार रोलबैक समय निर्धारित करते हैं।
  • क्या कैनरी या कई लाइव वर्ज़न की आवश्यकता है? यदि हां, तो ट्रैफ़िक रूटिंग को मॉडल-वर्ज़न मेट्रिक्स से जोड़ा जाना चाहिए।

30-सेकंड उत्तर ढांचा

“मैं मॉडल फ़ाइलों और वर्ज़न मेटाडेटा को इम्यूटिएबल बनाऊंगा, सामग्री डाइजेस्ट और वर्ज़न द्वारा आर्टिफैक्ट्स को संदर्भित करूंगा, और स्वीकृत वर्ज़न के लिए एक पर्यावरण-दायरे (environment-scoped) वाले उपनाम का उपयोग करूंगा। पंजीकरण, मूल्यांकन, अनुमोदन, डिप्लॉयमेंट और रोलबैक ऑडिट किए गए स्टेट ट्रांज़िशन हैं। इन्फरेंस एक उपनाम को वर्ज़न स्नैपशॉट में हल करता है, फिर डाइजेस्ट और प्राधिकरण को सत्यापित करता है। रिलीज़ सशर्त अपडेट (conditional updates) का उपयोग करती हैं, और गार्डरेल उल्लंघन उपनाम को परमाणु रूप से अंतिम स्वस्थ वर्ज़न पर वापस ले जाता है।”

चरण-दर-चरण गहन उत्तर

  1. ऑब्जेक्ट्स को परिभाषित करें। RegisteredModel ओनर और नीति संग्रहीत करता है। ModelVersion आर्टिफैक्ट URI, डाइजेस्ट, फ़्रेमवर्क, इनपुट/आउटपुट सिग्नेचर, ट्रेनिंग-डेटा स्नैपशॉट और मूल्यांकन मेट्रिक्स संग्रहीत करता है। Alias एक म्यूटिएबल पर्यावरण-दायरे वाला पॉइंटर है।
  2. आर्टिफैक्ट्स को इम्यूटिएबल बनाएं। अपलोड के समय एक डाइजेस्ट की गणना करें और आर्टिफैक्ट को ऑब्जेक्ट स्टोरेज में लिखें। एक वर्ज़न केवल मेटाडेटा प्राप्त करता है; इसकी फ़ाइल को अधिलेखित (overwrite) नहीं किया जा सकता है। डाउनलोड पर डाइजेस्ट सत्यापित करें।
  3. स्टेट मशीन का उपयोग करें। वर्ज़न registered, validated, approved, deployed, और retired से होकर गुज़रते हैं। प्रत्येक ट्रांज़िशन कर्ता, कारण, समय और साक्ष्य लिंक रिकॉर्ड करता है; अमान्य ट्रांज़िशन अस्वीकार कर दिए जाते हैं।
  4. उपनामों को सुरक्षित रूप से बदलें। candidate, staging, और champion जैसे उपनाम एक समय में एक वर्ज़न की ओर इशारा करते हैं। सशर्त लेखन या ट्रांज़ैक्शन का उपयोग करें ताकि पाठकों को कभी भी आंशिक परिवर्तन न दिखे।
  5. डिप्लॉयमेंट के दौरान समाधान (resolve) करें। सेवा उपनाम को वर्ज़न स्नैपशॉट में हल करती है, टेनेंट, पर्यावरण और डाइजेस्ट की जाँच करती है, फिर मॉडल को डाउनलोड और कैश करती है। कैश केवल उपनाम ही नहीं, बल्कि वर्ज़न को भी संग्रहीत करता है।
  6. कैनरी और रोलबैक। एक नियंत्रक ट्रैफ़िक समूहों को उपनामों या रूटिंग नियमों से जोड़ता है और त्रुटि, विलंबता (latency) और व्यावसायिक मेट्रिक्स एकत्र करता है। उल्लंघन होने पर उपनाम को एक स्वस्थ वर्ज़न में ले जाया जाता है और एक स्वचालित रोलबैक इवेंट रिकॉर्ड किया जाता है।

मेटाडेटा को रिलेशनल डेटाबेस में और बड़ी फ़ाइलों को ऑब्जेक्ट स्टोरेज में संग्रहीत करें। एक इवेंट स्ट्रीम कैश को अमान्य कर सकती है और ऑडिट इवेंट्स को एसिंक्रोनस रूप से इंडेक्स कर सकती है। क्रॉस-रीजन प्रतिकृति (replication) को केवल स्वीकृत वर्ज़न की प्रतिलिपि बनानी चाहिए, ताकि कोई अधूरा आर्टिफैक्ट प्रोडक्शन तक न पहुँच सके।

मॉडल उत्तर

“मैं तीन सीमाएं लागू करूंगा: इम्यूटिएबल वर्ज़न, म्यूटिएबल उपनाम, और ऑडिट किए गए स्टेट ट्रांज़िशन। प्रत्येक वर्ज़न में आर्टिफैक्ट डाइजेस्ट, सिग्नेचर, ट्रेनिंग-डेटा स्नैपशॉट, मूल्यांकन मेट्रिक्स और स्रोत रन शामिल हैं। आवश्यक साक्ष्य गायब होने पर अनुमोदन अस्वीकार कर दिया जाता है। प्रोडक्शन champion उपनाम एक सशर्त अपडेट के माध्यम से ठीक एक वर्ज़न में बदलता है; इन्फरेंस वर्ज़न नंबर को हल और कैश करता है, फिर इसके डाइजेस्ट को सत्यापित करता है। एक कैनरी नियंत्रक मॉडल वर्ज़न को त्रुटि, विलंबता और व्यावसायिक मेट्रिक्स से जोड़ता है और गार्डरेल विफल होने पर परमाणु रूप से उपनाम को अंतिम स्वस्थ वर्ज़न पर लौटा देता है। अनुमतियाँ मॉडल, पर्यावरण और कार्रवाई द्वारा विभाजित की जाती हैं, और उपनाम परिवर्तन, अनुमोदन, डाउनलोड और रोलबैक छेड़छाड़-रोधी (tamper-evident) ऑडिट लॉग में लिखे जाते हैं।”

सामान्य गलतियाँ

  • गलती: किसी मौजूदा वर्ज़न के लिए फ़ाइल को अधिलेखित करना → यह क्यों विफल होता है: डिप्लॉयमेंट को पुन: प्रस्तुत नहीं किया जा सकता है और ऑडिट बदलती सामग्री की ओर इशारा करते हैं → सुधार: वर्ज़न और आर्टिफैक्ट्स को इम्यूटिएबल बनाएं।
  • गलती: शाब्दिक latest स्ट्रिंग को डिप्लॉय करना → यह क्यों विफल होता है: उपनाम परिवर्तन कैश और ऑडिट को असंगत बनाते हैं → सुधार: एक वर्ज़न स्नैपशॉट में हल करें और इसके डाइजेस्ट को रिकॉर्ड करें।
  • गलती: अनुमोदन को बूलियन के रूप में संग्रहीत करना → यह क्यों विफल होता है: कोई भी यह नहीं बता सकता कि किसने क्या और क्यों स्वीकृत किया → सुधार: साक्ष्य-समर्थित स्टेट ट्रांज़िशन और ऑडिट इवेंट का उपयोग करें।
  • गलती: केवल ट्रैफ़िक को रोलबैक करना → यह क्यों विफल होता है: कैश या निर्भरताएं अभी भी नए वर्ज़न को लोड कर सकती हैं → सुधार: कैश को वर्ज़न दें, निर्भरताओं की जांच करें, और परमाणु रूप से उपनाम को वापस ले जाएं।

फॉलो-अप प्रश्न और उत्तर

सीधे वर्ज़न नंबर डिप्लॉय करने के बजाय उपनामों का उपयोग क्यों करें?

वर्ज़न नंबर पुनरुत्पादकता (reproducibility) प्रदान करते हैं; उपनाम रिलीज़ नियंत्रण प्रदान करते हैं। उन्हें अलग करने से क्लाइंट कॉन्फ़िगरेशन को बदले बिना स्विच करने की अनुमति मिलती है, जबकि एक स्पष्ट वर्ज़न ऑडिट ट्रेल संरक्षित रहता है।

आप समवर्ती उपनाम अपडेट को एक-दूसरे को अधिलेखित करने से कैसे रोकते हैं?

उपनाम के साथ एक वर्ज़न या संशोधन संख्या संग्रहीत करें और एक सशर्त अपडेट का उपयोग करें। टकराव होने पर, नीति को फिर से पढ़ें और पुन: प्रयास करें; कभी भी किसी अन्य रिलीज़ को चुपचाप ओवरराइट न करें।

जब ट्रेनिंग डेटा संवेदनशील हो तो रजिस्ट्री क्या संग्रहीत करती है?

कच्चे नमूनों के बजाय डेटासेट वर्ज़न, एक्सेस नीति और डाइजेस्ट संग्रहीत करें। मूल्यांकन साक्ष्य प्राप्त करते समय डेटा अनुमतियों का पुन: उपयोग करें और एक्सेस ऑडिट रिकॉर्ड करें।

पुराने मॉडल वर्ज़न को कब हटाया जा सकता है?

आर्टिफैक्ट्स को केवल प्रतिधारण (retention) अवधि, सक्रिय डिप्लॉयमेंट और ऑडिट होल्ड समाप्त होने के बाद ही हटाएं। अनुपालन प्रतिधारण अवधि के दौरान मेटाडेटा और रोलबैक डाइजेस्ट बनाए रखें।

सार्वजनिक स्रोत

संबंधित प्रश्न

संबंधित इंटरव्यू टूल

सिस्टम डिज़ाइन उत्तर के लिए हल करें का उपयोग करें

पहले आवश्यकताओं को स्पष्ट करें, फिर स्केल, आर्किटेक्चर, कंपोनेंट चयन और ट्रेड-ऑफ की ओर बढ़ें।

टूल देखें