इन्फ्रा वैलिडेटर टीएफएक्स पाइपलाइन घटक

इंफ्रावैलिडेटर एक टीएफएक्स घटक है जिसका उपयोग किसी मॉडल को उत्पादन में धकेलने से पहले एक प्रारंभिक चेतावनी परत के रूप में किया जाता है। नाम "इन्फ्रा" सत्यापनकर्ता इस तथ्य से आया है कि यह "बुनियादी ढांचे" की सेवा करने वाले वास्तविक मॉडल में मॉडल को मान्य कर रहा है। यदि मूल्यांकनकर्ता मॉडल के प्रदर्शन की गारंटी करने के लिए है, InfraValidator गारंटी करने के लिए मॉडल यंत्रवत् ठीक है और धक्का दिया जा रहा से बुरा मॉडल को रोकता है।

यह कैसे काम करता है?

InfraValidator मॉडल लेता है, मॉडल के साथ सैंड-बॉक्सिंग मॉडल सर्वर लॉन्च करता है, और देखता है कि क्या इसे सफलतापूर्वक लोड किया जा सकता है और वैकल्पिक रूप से पूछताछ की जा सकती है। बुनियादी मान्यता परिणाम में उत्पन्न हो जाएगा blessing उसी तरह के रूप में में उत्पादन मूल्यांकनकर्ता करता है।

InfraValidator मॉडल सर्वर द्विआधारी के बीच संगतता पर केंद्रित है (उदाहरण के लिए TensorFlow सेवित ) और मॉडल तैनात करने के लिए। नाम "बुनियादी" सत्यापनकर्ता के बावजूद, यह पर्यावरण उचित ढंग से कॉन्फ़िगर है, और बुनियादी सत्यापनकर्ता केवल उपयोगकर्ता के लिए कॉन्फ़िगर किया गया वातावरण में मॉडल सर्वर साथ सूचना का आदान अगर यह ठीक काम करता है देखने के लिए उपयोगकर्ता की जिम्मेदारी है। इस परिवेश को सही ढंग से कॉन्फ़िगर करने से यह सुनिश्चित होगा कि इन्फ्रा सत्यापन पास होना या विफल होना इस बात का संकेत होगा कि क्या मॉडल उत्पादन सेवा वातावरण में सेवा योग्य होगा। इसका तात्पर्य निम्नलिखित में से कुछ से है, लेकिन इन्हीं तक सीमित नहीं है:

  1. InfraValidator उसी मॉडल सर्वर बाइनरी का उपयोग कर रहा है जिसका उपयोग उत्पादन में किया जाएगा। यह न्यूनतम स्तर है जिस पर बुनियादी सत्यापन वातावरण को अभिसरण करना चाहिए।
  2. इन्फ्रावैलिडेटर उन्हीं संसाधनों का उपयोग कर रहा है (जैसे आवंटन मात्रा और सीपीयू का प्रकार, मेमोरी और एक्सेलेरेटर) जैसा कि उत्पादन में उपयोग किया जाएगा।
  3. InfraValidator उसी मॉडल सर्वर कॉन्फ़िगरेशन का उपयोग कर रहा है जिसका उपयोग उत्पादन में किया जाएगा।

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

ऑपरेशन मोड

कॉन्फ़िगरेशन के आधार पर, इन्फ्रा सत्यापन निम्न में से किसी एक मोड में किया जाता है:

  • LOAD_ONLY मोड: जाँच करें कि क्या मॉडल को सफलतापूर्वक की सेवा के बुनियादी ढांचे में है या नहीं लोड किया गया था। या
  • LOAD_AND_QUERY मोड: LOAD_ONLY मोड प्लस अगर मॉडल अनुमान सेवा करने में सक्षम है की जाँच करने के कुछ नमूना अनुरोध भेजने। InfraValidator को परवाह नहीं है कि भविष्यवाणी सही थी या नहीं। केवल अनुरोध सफल हुआ या नहीं मायने रखता है।

मैं इसे कैसे इस्तेमाल करूं?

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

evaluator = Evaluator(
    model=trainer.outputs['model'],
    examples=example_gen.outputs['examples'],
    baseline_model=model_resolver.outputs['model'],
    eval_config=tfx.proto.EvalConfig(...)
)

infra_validator = InfraValidator(
    model=trainer.outputs['model'],
    serving_spec=tfx.proto.ServingSpec(...)
)

pusher = Pusher(
    model=trainer.outputs['model'],
    model_blessing=evaluator.outputs['blessing'],
    infra_blessing=infra_validator.outputs['blessing'],
    push_destination=tfx.proto.PushDestination(...)
)

एक इन्फ्रावैलिडेटर घटक को कॉन्फ़िगर करना।

इन्फ्रावैलिडेटर को कॉन्फ़िगर करने के लिए तीन प्रकार के प्रोटोज हैं।

ServingSpec

ServingSpec InfraValidator के लिए सबसे महत्वपूर्ण विन्यास है। यह परिभाषित करता है:

  • चलाने के लिए मॉडल सर्वर किस प्रकार
  • इसे चलाने के लिए जहां

मॉडल सर्वर प्रकारों के लिए (जिसे सर्विंग बाइनरी कहा जाता है) हम समर्थन करते हैं

निम्नलिखित सर्विंग प्लेटफॉर्म वर्तमान में समर्थित हैं:

  • स्थानीय डॉकर (डॉकर को पहले से स्थापित किया जाना चाहिए)
  • Kubernetes (केवल KubeflowDagRunner के लिए सीमित समर्थन)

द्विआधारी की सेवा और मंच की सेवा के लिए चुनाव एक निर्दिष्ट करने के द्वारा किया जाता है oneof के ब्लॉक ServingSpec । उदाहरण TensorFlow, Kubernetes क्लस्टर पर द्विआधारी चल सेवित का उपयोग करने के लिए tensorflow_serving और kubernetes क्षेत्र स्थापित किया जाना चाहिए।

infra_validator=InfraValidator(
    model=trainer.outputs['model'],
    serving_spec=tfx.proto.ServingSpec(
        tensorflow_serving=tfx.proto.TensorFlowServing(
            tags=['latest']
        ),
        kubernetes=tfx.proto.KubernetesConfig()
    )
)

आगे कॉन्फ़िगर करने के लिए ServingSpec , बाहर की जाँच करें Protobuf परिभाषा

ValidationSpec

इन्फ्रा सत्यापन मानदंड या कार्यप्रवाह को समायोजित करने के लिए वैकल्पिक विन्यास।

infra_validator=InfraValidator(
    model=trainer.outputs['model'],
    serving_spec=tfx.proto.ServingSpec(...),
    validation_spec=tfx.proto.ValidationSpec(
        # How much time to wait for model to load before automatically making
        # validation fail.
        max_loading_time_seconds=60,
        # How many times to retry if infra validation fails.
        num_tries=3
    )
)

सभी ValidationSpec फ़ील्ड में एक ध्वनि डिफ़ॉल्ट मान होता है। से अधिक विस्तार की जाँच करें Protobuf परिभाषा

RequestSpec

वैकल्पिक विन्यास जब में बुनियादी मान्यता चल नमूना अनुरोध निर्माण करने के लिए कैसे निर्दिष्ट करने के लिए LOAD_AND_QUERY मोड। का उपयोग करने के LOAD_AND_QUERY मोड, यह दोनों निर्दिष्ट करने के लिए आवश्यक है request_spec साथ ही के रूप में निष्पादन गुण examples घटक परिभाषा इनपुट चैनल।

infra_validator = InfraValidator(
    model=trainer.outputs['model'],
    # This is the source for the data that will be used to build a request.
    examples=example_gen.outputs['examples'],
    serving_spec=tfx.proto.ServingSpec(
        # Depending on what kind of model server you're using, RequestSpec
        # should specify the compatible one.
        tensorflow_serving=tfx.proto.TensorFlowServing(tags=['latest']),
        local_docker=tfx.proto.LocalDockerConfig(),
    ),
    request_spec=tfx.proto.RequestSpec(
        # InfraValidator will look at how "classification" signature is defined
        # in the model, and automatically convert some samples from `examples`
        # artifact to prediction RPC requests.
        tensorflow_serving=tfx.proto.TensorFlowServingRequestSpec(
            signature_names=['classification']
        ),
        num_examples=10  # How many requests to make.
    )
)

वार्मअप के साथ एक सहेजे गए मॉडल का निर्माण

(संस्करण 0.30.0 से)

वास्तविक अनुरोध के साथ InfraValidator पुष्टि मॉडल के बाद से, यह आसानी से के रूप में इन सत्यापन अनुरोध पुनः उपयोग कर सकते वार्मअप अनुरोध एक SavedModel की। InfraValidator एक विकल्प (प्रदान करता है RequestSpec.make_warmup ) वार्मअप के साथ एक SavedModel निर्यात करने के लिए।

infra_validator = InfraValidator(
    ...,
    request_spec=tfx.proto.RequestSpec(..., make_warmup=True)
)

तो फिर उत्पादन InfraBlessing विरूपण साक्ष्य वार्मअप के साथ एक SavedModel में शामिल होंगे, और यह भी द्वारा धक्का किया जा सकता है पुशर जैसे, Model विरूपण साक्ष्य।

सीमाओं

वर्तमान इन्फ्रावैलिडेटर अभी पूरा नहीं हुआ है, और इसकी कुछ सीमाएँ हैं।

  • केवल TensorFlow SavedModel मॉडल प्रारूप मान्य किया जा सकता है।
  • जब Kubernetes पर TFX चल रहा है, पाइप लाइन द्वारा निष्पादित किया जाना चाहिए KubeflowDagRunner Kubeflow पाइपलाइन के अंदर। मॉडल सर्वर उसी Kubernetes क्लस्टर और Kubeflow द्वारा उपयोग किए जा रहे नामस्थान में लॉन्च किया जाएगा।
  • InfraValidator मुख्य रूप से करने के लिए की तैनाती पर ध्यान केंद्रित है TensorFlow सेवित थी और अभी भी उपयोगी इसे करने के लिए तैनाती के लिए कम सटीक है TensorFlow लाइट और TensorFlow.js , या अन्य अनुमान चौखटे।
  • वहाँ पर एक सीमित समर्थन है LOAD_AND_QUERY के लिए मोड भविष्यवाणी विधि हस्ताक्षर (जो TensorFlow 2 में केवल निर्यात योग्य विधि है)। InfraValidator एक धारावाहिक का उपभोग करने के हस्ताक्षर भविष्यवाणी की आवश्यकता है tf.Example केवल इनपुट के रूप में।

    @tf.function
    def parse_and_run(serialized_example):
      features = tf.io.parse_example(serialized_example, FEATURES)
      return model(features)
    
    model.save('path/to/save', signatures={
      # This exports "Predict" method signature under name "serving_default".
      'serving_default': parse_and_run.get_concrete_function(
          tf.TensorSpec(shape=[None], dtype=tf.string, name='examples'))
    })
    
    • एक की जाँच करें पेंगुइन उदाहरण नमूना कोड को देखने के लिए कैसे इस हस्ताक्षर TFX में अन्य घटकों के साथ बातचीत करती।