Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

InfraValidator TFX Ardışık Düzen Bileşeni

InfraValidator, bir modeli üretime sokmadan önce erken uyarı katmanı olarak kullanılan bir TFX bileşenidir. "Infra" doğrulayıcı adı, "altyapı" hizmetine hizmet eden gerçek modeldeki modeli doğruluyor olmasından kaynaklanmaktadır. Değerlendirici , modelin performansını garanti edecekse, InfraValidator, modelin mekanik olarak iyi durumda olduğunu garanti edecek ve kötü modellerin itilmesini önleyecektir.

O nasıl çalışır?

InfraValidator modeli alır, modelle birlikte kum kutulu bir model sunucusu başlatır ve başarılı bir şekilde yüklenip yüklenemeyeceğini ve isteğe bağlı olarak sorgulanabileceğini görür. Infra doğrulama sonucu, Değerlendiricinin yaptığı gibi blessing çıktısında üretilecektir.

InfraValidator, model sunucu ikili dosyası (örn. TensorFlow Sunumu ) ile dağıtılacak model arasındaki uyumluluğa odaklanır. "Infra" doğrulayıcı adına rağmen, ortamı doğru şekilde yapılandırmak kullanıcının sorumluluğundadır ve infra doğrulayıcı, düzgün çalışıp çalışmadığını görmek için yalnızca kullanıcı tarafından yapılandırılmış ortamdaki model sunucusuyla etkileşime girer. Bu ortamın doğru şekilde yapılandırılması, infra doğrulamasının başarılı veya başarısız olmasının, modelin üretim hizmeti ortamında sunulup sunulmayacağının göstergesi olmasını sağlayacaktır. Bu, aşağıdakilerden bazılarını ima eder, ancak bunlarla sınırlı değildir:

  1. InfraValidator, üretimde kullanılacak olan aynı model sunucu ikili dosyasını kullanıyor. Bu, infra doğrulama ortamının yakınsaması gereken minimum düzeydir.
  2. InfraValidator, üretimde kullanılacak olan aynı kaynakları (örn. Tahsis miktarı ve tipi CPU, bellek ve hızlandırıcılar) kullanıyor.
  3. InfraValidator, üretimde kullanılacak olanla aynı model sunucu yapılandırmasını kullanıyor.

Duruma bağlı olarak, kullanıcılar InfraValidator'ın üretim ortamıyla ne derecede aynı olması gerektiğini seçebilirler. Teknik olarak, bir model yerel bir Docker ortamında alt doğrulamaya tabi tutulabilir ve daha sonra sorunsuz bir şekilde tamamen farklı bir ortamda (örn. Kubernetes kümesi) sunulabilir. Ancak, InfraValidator bu sapmayı kontrol etmemiş olacaktır.

Operasyon modu

Yapılandırmaya bağlı olarak, aşağıdaki modlardan birinde infra doğrulama yapılır:

  • LOAD_ONLY modu: modelin hizmet altyapısına başarıyla yüklenip yüklenmediğini kontrol etme. VEYA
  • LOAD_AND_QUERY modu: LOAD_ONLY modu artı modelin çıkarımlar LOAD_ONLY kontrol etmek için bazı örnek istekler gönderme. InfraValidator, tahminin doğru olup olmadığını umursamıyor. Sadece talebin başarılı olup olmadığı önemlidir.

Bunu nasıl kullanabilirim?

Genellikle InfraValidator, bir Değerlendirici bileşeninin yanında tanımlanır ve çıktısı bir İtici'ye beslenir. InfraValidator başarısız olursa, model itilmeyecektir.

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

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

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

InfraValidator bileşenini yapılandırma.

InfraValidator'ı yapılandırmak için üç tür proto vardır.

ServingSpec

ServingSpec , ServingSpec için en önemli yapılandırmadır. Şunları tanımlar:

  • ne tür bir model sunucu çalıştırılacak
  • onu nerede çalıştırmalı

Model sunucu türleri için (hizmet ikili olarak adlandırılır)

Şu anda aşağıdaki hizmet platformları desteklenmektedir:

  • Yerel Docker (Docker önceden kurulmalıdır)
  • Kubernetes (yalnızca KubeflowDagRunner için sınırlı destek)

Platformu ikili hizmet ve sunum için seçim belirterek yapılır oneof bloğunu ServingSpec . Örneğin Kubernetes kümesinde çalışan TensorFlow Sunumu ikili dosyasını kullanmak için tensorflow_serving ve kubernetes alanı ayarlanmalıdır.

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

ServingSpec daha fazla yapılandırmak için lütfen ServingSpec tanımına bakın .

ValidationSpec

Alt doğrulama kriterlerini veya iş akışını ayarlamak için isteğe bağlı yapılandırma.

infra_validator=InfraValidator(
    model=trainer.outputs['model'],
    serving_spec=ServingSpec(...),
    validation_spec=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
    )
)

Tüm ValidationSpec alanlarının sağlam bir varsayılan değeri vardır. Protobuf tanımından daha fazla ayrıntıyı kontrol edin.

RequestSpec

LOAD_AND_QUERY modunda infra doğrulama çalıştırırken örnek isteklerin nasıl oluşturulacağını belirtmek için isteğe bağlı yapılandırma. LOAD_AND_QUERY modunu kullanmak için, bileşen tanımında hem request_spec yürütme özelliklerini hem de examples giriş kanalını belirtmek gerekir.

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=ServingSpec(
        # Depending on what kind of model server you're using, RequestSpec
        # should specify the compatible one.
        tensorflow_serving=TensorFlowServing(tags=['latest']),
        local_docker=LocalDockerConfig(),
    ),
    request_spec=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=TensorFlowServingRequestSpec(
            signature_names=['classification']
        ),
        num_examples=10  # How many requests to make.
    )
)

Sınırlamalar

Mevcut InfraValidator henüz tamamlanmadı ve bazı sınırlamaları var.

  • Yalnızca TensorFlow SavedModel model biçimi doğrulanabilir.
  • Kubernetes üzerinde TFX çalıştırırken, ardışık düzen, Kubeflow Ardışık KubeflowDagRunner içindeki KubeflowDagRunner tarafından yürütülmelidir. Model sunucusu, aynı Kubernetes kümesinde ve Kubeflow'un kullandığı ad alanında başlatılacaktır.
  • InfraValidator öncelikle için dağıtımlar odaklanmıştır hizmet veren TensorFlow ve hala kullanışlı iken için dağıtımlar için daha az doğrudur TensorFlow Lite ve TensorFlow.js veya başka çıkarım çerçeveler.
  • Predict yöntem imzası için LOAD_AND_QUERY modunda sınırlı bir destek vardır (bu, TensorFlow 2'de dışa aktarılabilir tek yöntemdir). InfraValidator, tek giriş olarak serileştirilmiş bir tf.Example tüketmek için Predict imzasını gerektirir.

    @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'))
    })
    
    • Bu imzanın TFX'teki diğer bileşenlerle nasıl etkileşime girdiğini görmek için bir Penguin örnek koduna bakın.