Path: blob/master/site/es-419/tfx/guide/infra_validator.md
25118 views
El componente de canalización InfraValidator TFX
InfraValidator es un componente de TFX que se usa como capa de alerta temprana antes de llevar un modelo a producción. El nombre "infra" validador proviene del hecho de que valida el modelo en el modelo real que sirve "infraestructura". Si Evaluator debe garantizar el rendimiento del modelo, InfraValidator debe garantizar que el modelo sea mecánicamente correcto y evitar que se impulsen modelos defectuosos.
¿Cómo funciona?
InfraValidator toma el modelo, inicia un servidor de modelos en un espacio aislado con el modelo y comprueba si se puede cargar correctamente y, opcionalmente, consultar. El resultado de la validación de infraestructura se va a generar en la salida blessing
de la misma manera que lo hace Evaluator.
InfraValidator se centra en la compatibilidad entre el sistema binario del servidor de modelos (por ejemplo, TensorFlow Serving) y el modelo que se va a implementar. A pesar del nombre "infra" validador, el usuario es responsable de configurar el entorno correctamente, y el infra validador solo interactúa con el servidor de modelos en el entorno configurado por el usuario para ver si funciona bien. Si este entorno se configura correctamente, la validación de la infraestructura o un error de validación nos indicarán si el modelo se puede usar o no en el entorno de producción. Esto implica, entre otros aspectos, lo siguiente:
InfraValidator usa el mismo sistema binario del servidor de modelos que se usará en producción. Este es el nivel mínimo al que debe converger el entorno de validación de infraestructura.
InfraValidator usa los mismos recursos (por ejemplo, cantidad de asignación y tipo de CPU, memoria y aceleradores) que se usarán en producción.
InfraValidator usa la misma configuración de servidor de modelos que se usará en producción.
Dependiendo de la situación, los usuarios pueden elegir hasta qué punto InfraValidator debe ser idéntico al entorno de producción. Técnicamente, se puede validar la infraestructura de un modelo en un entorno Docker local y luego se puede servir en un entorno completamente diferente (por ejemplo, un clúster de Kubernetes) sin problemas. Sin embargo, InfraValidator no habrá comprobado esta divergencia.
Modo de operación
En función de la configuración, la validación de infraestructura se lleva a cabo en uno de los siguientes modos:
Modo
LOAD_ONLY
: comprueba si el modelo se cargó correctamente en la infraestructura de servicio o no. OModo
LOAD_AND_QUERY
: ModoLOAD_ONLY
más el envío de algunas solicitudes de muestra para comprobar si el modelo es capaz de servir inferencias. A InfraValidator no le importa si la predicción fue correcta o no. Solo le importa si la solicitud tuvo éxito o no.
¿Como lo uso?
Por lo general, InfraValidator se define junto a un componente Evaluator y su salida se envía a un Pusher. Si InfraValidator falla, el modelo no se envía.
Cómo configurar un componente InfraValidator
Hay tres tipos de protos para configurar InfraValidator.
ServingSpec
ServingSpec
es la configuración más importante para InfraValidator. Define lo siguiente:
qué tipo de servidor de modelos ejecutar
dónde ejecutarlo
Para los tipos de servidores de modelos (denominados binario de servicio) admitimos lo que sigue:
Nota: InfraValidator permite especificar varias versiones del mismo tipo de servidor de modelos para actualizar la versión del servidor de modelos sin perjudicar la compatibilidad del modelo. Por ejemplo, el usuario puede probar la imagen tensorflow/serving
con la versión 2.1.0
y latest
, para asegurarse de que el modelo también será compatible con la última versión tensorflow/serving
.
Actualmente se admiten las siguientes plataformas de servicio:
Docker local (Docker debe instalarse con anticipación)
Kubernetes (compatibilidad limitada solo para KubeflowDagRunner)
La elección de binario de servicio y plataforma de servicio se hace mediante la especificación de un bloque oneof
de ServingSpec
. Por ejemplo, para usar el binario TensorFlow Serving que se ejecuta en el clúster de Kubernetes, se deben establecer los campos tensorflow_serving
y kubernetes
.
Para configurar aún más ServingSpec
, consulte la definición de protobuf.
ValidationSpec
Configuración opcional para ajustar los criterios de validación de infraestructura o el flujo de trabajo.
Todos los campos de ValidationSpec tienen un valor predeterminado válido. Consulte más detalles en la definición de protobuf.
RequestSpec
Configuración opcional para especificar cómo generar solicitudes de muestra cuando se ejecuta la validación de infraestructura en modo LOAD_AND_QUERY
. Para usar el modo LOAD_AND_QUERY
, se deben especificar tanto las propiedades de ejecución request_spec
como el canal de entrada examples
en la definición del componente.
Cómo producir un SavedModel con preparación
(Desde la versión 0.30.0)
Como InfraValidator valida el modelo con solicitudes reales, puede reutilizar fácilmente estas solicitudes de validación como solicitudes de preparación de un SavedModel. InfraValidator ofrece una opción (RequestSpec.make_warmup
) para exportar un modelo guardado con preparación.
Luego, el artefacto InfraBlessing
de salida contendrá un SavedModel con preparación y también puede ser enviado por Pusher, al igual que el artefacto Model
.
Limitaciones
El InfraValidator actual aún no está completo y tiene algunas limitaciones.
Solo se puede validar el formato del modelo SavedModel de TensorFlow.
Al ejecutar TFX en Kubernetes,
KubeflowDagRunner
debe ejecutar la canalización dentro de Kubeflow Pipelines. El servidor de modelos se iniciará en el mismo clúster de Kubernetes y en el mismo espacio de nombres que usa Kubeflow.InfraValidator se centra principalmente en implementaciones en TensorFlow Serving y, aunque todavía es útil, es menos preciso para implementaciones en TensorFlow Lite y TensorFlow.js u otros marcos de inferencia.
En el modo
LOAD_AND_QUERY
hay una compatibilidad limitada con la firma del método Predict (que es el único método exportable en TensorFlow 2). InfraValidator requiere que la firma Predict consuma untf.Example
serializado como única entrada.Consulte un código de muestra de ejemplo Penguin para ver cómo interactúa esta firma con otros componentes en TFX.