ইনফ্রা ভ্যালিডেটর টিএফএক্স পাইপলাইন কম্পোনেন্ট

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

InfraValidator হল একটি TFX উপাদান যা একটি মডেলকে উৎপাদনে ঠেলে দেওয়ার আগে একটি প্রাথমিক সতর্কতা স্তর হিসাবে ব্যবহৃত হয়। "ইনফ্রা" ভ্যালিডেটর নামটি এই সত্য থেকে এসেছে যে এটি "অবকাঠামো" পরিবেশনকারী প্রকৃত মডেলটিতে মডেলটিকে যাচাই করছে। তাহলে Evaluator মডেল কর্মক্ষমতা গ্যারান্টি হয়, InfraValidator গ্যারান্টি মডেল যান্ত্রিকভাবে জরিমানা এবং ধাক্কা হওয়া থেকে খারাপ মডেলের করতে বাধা দেয়।

এটা কিভাবে কাজ করে?

InfraValidator মডেলটি নেয়, মডেলের সাথে একটি বালি-বক্সযুক্ত মডেল সার্ভার চালু করে এবং এটি সফলভাবে লোড করা যায় এবং ঐচ্ছিকভাবে জিজ্ঞাসা করা যায় কিনা তা দেখে। নীচের বৈধতা ফলাফলে তৈরি করা হবে blessing একই ভাবে হিসাবে আউটপুট Evaluator আছে।

InfraValidator মডেল সার্ভার বাইনারি মধ্যে সামঞ্জস্য উপর গুরুত্ত্ব দেয় (যেমন TensorFlow পরিবেশন করছে ) এবং মডেল স্থাপন করা। নাম "নীচের" যাচাইকারী সত্ত্বেও, পরিবেশ সঠিকভাবে কনফিগার করা, এবং নীচের যাচাইকারী শুধুমাত্র ব্যবহারকারীর কনফিগার পরিবেশে মডেল সার্ভারের সাথে মিথস্ক্রিয়া যদি এটা কাজ করে জরিমানা দেখতে ব্যবহারকারীর দায়িত্ব। এই পরিবেশটি সঠিকভাবে কনফিগার করা নিশ্চিত করবে যে ইনফ্রা বৈধতা পাস করা বা ব্যর্থ হওয়া ইঙ্গিত করবে যে মডেলটি উত্পাদন পরিবেশন পরিবেশে পরিবেশনযোগ্য হবে কিনা। এটি নিম্নলিখিতগুলির মধ্যে কিছু বোঝায়, তবে সীমাবদ্ধ নয়:

  1. InfraValidator একই মডেল সার্ভার বাইনারি ব্যবহার করছে যা উৎপাদনে ব্যবহার করা হবে। এটি হল সর্বনিম্ন স্তর যেখানে ইনফ্রা বৈধতা পরিবেশকে একত্রিত করতে হবে।
  2. InfraValidator একই রিসোর্স ব্যবহার করছে (যেমন বরাদ্দের পরিমাণ এবং CPU, মেমরি এবং অ্যাক্সিলারেটরের ধরন) যেমন উৎপাদনে ব্যবহার করা হবে।
  3. InfraValidator একই মডেল সার্ভার কনফিগারেশন ব্যবহার করছে যা উৎপাদনে ব্যবহার করা হবে।

পরিস্থিতির উপর নির্ভর করে, ব্যবহারকারীরা নির্বাচন করতে পারেন কোন মাত্রায় ইনফ্রাভালিডেটর উৎপাদন পরিবেশের সাথে অভিন্ন হওয়া উচিত। প্রযুক্তিগতভাবে, একটি মডেল একটি স্থানীয় ডকার পরিবেশে ইনফ্রা যাচাই করা যেতে পারে এবং তারপর একটি সম্পূর্ণ ভিন্ন পরিবেশে (যেমন কুবারনেটস ক্লাস্টার) কোনো সমস্যা ছাড়াই পরিবেশন করা যেতে পারে। যাইহোক, InfraValidator এই ভিন্নতার জন্য চেক করবে না।

অপারেশন মোড

কনফিগারেশনের উপর নির্ভর করে, ইনফ্রা যাচাইকরণ নিম্নলিখিত মোডগুলির মধ্যে একটিতে করা হয়:

  • LOAD_ONLY মোড: চেক কিনা মডেল সফলভাবে ভজনা পরিকাঠামো বা না লোড করা হয়। বা
  • LOAD_AND_QUERY মোড: LOAD_ONLY মোড প্লাস যদি মডেল মতামতে উপনীত ভজনা সক্ষম কিনা চেক করতে কিছু নমুনা অনুরোধ পাঠানো। InfraValidator ভবিষ্যদ্বাণী সঠিক ছিল বা না তা চিন্তা করে না। শুধুমাত্র অনুরোধ সফল হয়েছে কিনা তা গুরুত্বপূর্ণ।

আমি কিভাবে এটা ব্যবহার করব?

সাধারণত InfraValidator একটি Evaluator উপাদানের পাশে সংজ্ঞায়িত করা হয় এবং এর আউটপুট একটি পুশারকে দেওয়া হয়। 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(...)
)

একটি InfraValidator উপাদান কনফিগার করা হচ্ছে।

InfraValidator কনফিগার করার জন্য তিন ধরনের প্রোটো আছে।

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 যাচাই মডেল সাল থেকে, এটিকে সহজে এই বৈধতা অনুরোধ পুনরায় ব্যবহার করতে পারেন warmup অনুরোধ একটি SavedModel করুন। InfraValidator একটি বিকল্প (উপলব্ধ RequestSpec.make_warmup ) warmup সঙ্গে একটি SavedModel রপ্তানি করতে।

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

তারপর আউটপুট InfraBlessing হস্তনির্মিত বস্তু warmup সঙ্গে একটি SavedModel উপস্থিত থাকবে, এবং এছাড়াও দ্বারা ধাক্কা যাবে বিমানপোত শুধু মতো Model হস্তনির্মিত বস্তু।

সীমাবদ্ধতা

বর্তমান InfraValidator এখনও সম্পূর্ণ নয়, এবং কিছু সীমাবদ্ধতা আছে।

  • শুধু 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 অন্যান্য উপাদান সাথে মিথস্ক্রিয়া।