InfraValidator, bir modeli üretime göndermeden önce erken uyarı katmanı olarak kullanılan bir TFX bileşenidir. "Altyapı" doğrulayıcı adı, modeli "altyapıya" hizmet eden asıl modelde doğruladığı gerçeğinden geldi. Eğer Değerlendirici modelinin performansı garanti etmek, InfraValidator modeli mekanik olarak ince ve itilmesini kötü modellerini engeller garanti etmektir.
O nasıl çalışır?
InfraValidator modeli alır, modelle birlikte korumalı alanlı bir model sunucusunu başlatır ve başarıyla yüklenip yüklenemeyeceğini ve isteğe bağlı olarak sorgulanıp sorgulanamayacağını görür. Alt doğrulama sonucu olarak oluşturulur blessing
aynı şekilde çıkış Değerlendirici yapar.
InfraValidator modeli sunucu ikili arasındaki uyumluluk odaklanır (örneğin TensorFlow Porsiyon ) ve model dağıtmak için. Adı "infra" doğrulayıcı rağmen, doğru ortamını yapılandırmak için ve bu cezayı çalışıp çalışmadığını kullanıcı tarafından yapılandırılan ortamda modeli sunucusu ile infra doğrulayıcı sadece etkileşimde görmek için kullanıcının sorumluluğundadır. Bu ortamın doğru şekilde yapılandırılması, alt doğrulamanın başarılı veya başarısız olmasının, modelin üretim hizmet ortamında sunulabilir olup olmayacağının göstergesi olmasını sağlayacaktır. Bu, aşağıdakilerden bazılarını ifade eder, ancak bunlarla sınırlı değildir:
- InfraValidator, üretimde kullanılacak olan aynı model sunucu ikili dosyasını kullanıyor. Bu, altyapı doğrulama ortamının yakınsaması gereken minimum düzeydir.
- InfraValidator, üretimde kullanılacak olan kaynakları (örneğin, CPU, bellek ve hızlandırıcıların tahsis miktarı ve türü) kullanıyor.
- InfraValidator, üretimde kullanılacak model sunucu yapılandırmasının aynısını kullanıyor.
Duruma bağlı olarak, kullanıcılar InfraValidator'ın üretim ortamıyla ne ölçüde aynı olması gerektiğini seçebilirler. Teknik olarak, bir model yerel bir Docker ortamında infra valide edilebilir ve daha sonra tamamen farklı bir ortamda (örn. Kubernetes kümesi) sorunsuz olarak sunulabilir. Ancak, InfraValidator bu farklılığı kontrol etmeyecektir.
Operasyon modu
Yapılandırmaya bağlı olarak, alt doğrulama aşağıdaki modlardan birinde yapılır:
-
LOAD_ONLY
modu: modeli başarıyla hizmet altyapısının veya olmasın yüklenen hususları kontrol. VEYA -
LOAD_AND_QUERY
modu:LOAD_ONLY
modu artı modeli çıkarımlar hizmet kapasitesine sahip olup olmadığını kontrol etmek için bazı örnek istekleri gönderme. InfraValidator, tahminin doğru olup olmadığına bakmaz. Yalnızca isteğin başarılı olup olmadığı önemlidir.
Bunu nasıl kullanabilirim?
Genellikle InfraValidator bir Evaluator bileşeninin yanında tanımlanır ve çıktısı bir Pusher'a beslenir. InfraValidator başarısız olursa, model aktarılmaz.
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(...)
)
Bir InfraValidator bileşenini yapılandırma.
InfraValidator'ı yapılandırmak için üç tür protokol vardır.
ServingSpec
ServingSpec
InfraValidator için en önemli yapılandırmasıdır. Tanımlar:
- pistine modeli ne tür sunucu
- Çalıştırmak için nerede
Model sunucu türleri için (binary olarak adlandırılır) destekliyoruz
Ş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
. Örnek TensorFlow, Kubernetes küme üzerinde ikili çalışan Porsiyon kullanabilmesi için tensorflow_serving
ve kubernetes
alan ayarlanmalıdır.
infra_validator=InfraValidator(
model=trainer.outputs['model'],
serving_spec=tfx.proto.ServingSpec(
tensorflow_serving=tfx.proto.TensorFlowServing(
tags=['latest']
),
kubernetes=tfx.proto.KubernetesConfig()
)
)
Ayrıca yapılandırmak için ServingSpec
sayfaya göz atabilirsiniz protobuf tanımı .
ValidationSpec
Altyapı 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=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
)
)
Tüm ValidationSpec alanlarının sağlam bir varsayılan değeri vardır. Dan fazla ayrıntı edin protobuf tanımı .
RequestSpec
İsteğe bağlı yapılandırma içinde infra doğrulama çalıştırırken örnek isteklerini nasıl oluşturulacağını belirlemek için LOAD_AND_QUERY
modu. Kullanmak için LOAD_AND_QUERY
modu, her iki belirlemek için gerekli olan request_spec
zamanda gibi, uygulama özellikleri examples
parça tanımı giriş kanalı.
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.
)
)
Isınma ile SavedModel üretme
(0.30.0 sürümünden itibaren)
Gerçek istekleri ile InfraValidator geçerli kılınarak modeli olduğundan, kolayca bu doğrulama isteklerini yeniden kullanabilirsiniz ısınma istekleri bir SavedModel ait. InfraValidator bir seçenek (sağlamaktadır RequestSpec.make_warmup
ısınma ile SavedModel ihracat).
infra_validator = InfraValidator(
...,
request_spec=tfx.proto.RequestSpec(..., make_warmup=True)
)
Sonra çıkış InfraBlessing
eser ısınma ile SavedModel içerecektir ve ayrıca tarafından basılabilir İtici gibi, Model
dışlayıcı.
sınırlamalar
Mevcut InfraValidator henüz tamamlanmadı ve bazı sınırlamaları var.
- Sadece TensorFlow SavedModel modeli biçimi doğrulanabilir.
- Kubernetes üzerinde Tfx çalıştırırken, boru hattı ile yürütülmesi gereken
KubeflowDagRunner
Kubeflow Boru hatları içeride. 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.
Üzerinde sınırlı destek var
LOAD_AND_QUERY
için mod Tahmin (TensorFlow 2'de sadece ihraç yöntemdir) yöntemi imzası. InfraValidator tefrika tüketmek Tahmin imzası gerekentf.Example
girdi olarak yalnızca.@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')) })
- Bir göz atın penguen örneği görmek için örnek kodu nasıl Tfx diğer bileşenlerle bu imza etkileşir.