SIG TFX-Addons কমিউনিটিতে যোগ দিন এবং TFX কে আরও ভাল করতে সাহায্য করুন! SIG TFX-Addons- এ যোগ দিন

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

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

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

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

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

  1. ইনফ্রা ভ্যালিডেটর একই মডেল সার্ভার বাইনারি ব্যবহার করছে যা উৎপাদনে ব্যবহৃত হবে। এটি ন্যূনতম স্তর যেখানে ইনফ্রা বৈধতা পরিবেশ অবশ্যই একত্রিত হবে।
  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(...)
)

একটি 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 পাইপলাইন ভিতরে। মডেল সার্ভারটি একই কুবেরনেটস ক্লাস্টারে এবং কুবফ্লো যে নেমস্পেস ব্যবহার করছে সেখানে চালু করা হবে।
  • 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 অন্যান্য উপাদান সাথে মিথস্ক্রিয়া।