Actualización de puntos de conexión de canalización a SDK v2
Artículo
Una vez que tenga una canalización en funcionamiento, puede publicarla para que se ejecute con diferentes entradas. Esto se conoce como Canalizaciones publicadas.
¿Qué ha cambiado?
El punto de conexión de Batch propone una manera similar y más eficaz de controlar varios recursos que se ejecutan en una API duradera, por lo que la funcionalidad Canalizaciones publicadas se movió a implementaciones de componentes de canalización en puntos de conexión por lotes.
Los puntos de conexión por lotes desacoplan la interfaz (punto de conexión) de la implementación real (implementación) y permiten al usuario decidir qué implementación sirve para la implementación predeterminada del punto de conexión. Las implementaciones de componentes de canalización en puntos de conexión por lotes permiten a los usuarios implementar componentes de canalización en lugar de canalizaciones, lo que mejora el uso de recursos reutilizables para esas organizaciones que buscan simplificar su práctica de MLOps.
En la tabla siguiente se muestra una comparación de cada uno de los conceptos:
Concepto
SDK v1
SDK v2
Punto de conexión de REST de la canalización para la invocación
Punto de conexión de canalización
Punto de conexión por lotes
Versión específica de la canalización en el punto de conexión
Canalización publicada
Implementación de componentes de canalización
Argumentos de canalización en la invocación
Parámetro Pipeline
Entradas de trabajo
Trabajo generado a partir de una canalización publicada
Los puntos de conexión de Batch no implementan canalizaciones, sino componentes de canalización. Los componentes ofrecen una manera más confiable de tener el control de código fuente de los recursos que se implementan en un punto de conexión. Podemos convertir cualquier definición de canalización en un componente de canalización de la siguiente manera:
pipeline_component = pipeline().component
Como procedimiento recomendado, se recomienda registrar los componentes de canalización para que pueda mantener el control de versiones de ellos de forma centralizada dentro del área de trabajo o incluso los registros compartidos.
ml_client.components.create(pipeline_component)
A continuación, es necesario crear el punto de conexión que hospeda todas las implementaciones de canalización:
endpoint_name = "PipelineEndpointTest"
endpoint = BatchEndpoint(
name=endpoint_name,
description="A hello world endpoint for component deployments",
)
ml_client.batch_endpoints.begin_create_or_update(endpoint)
Cree una implementación para el componente de canalización:
deployment_name = "hello-batch-dpl"
deployment = BatchPipelineComponentDeployment(
name=deployment_name,
description="A hello world deployment with a single step.",
endpoint_name=endpoint.name,
component=pipeline_component
)
ml_client.batch_deployments.begin_create_or_update(deployment)
Envío de un trabajo a un punto de conexión de canalización
Use inputs para indicar las entradas del trabajo si es necesario. Consulte Creación de trabajos y datos de entrada para puntos de conexión por lotes para obtener una explicación más detallada sobre cómo indicar entradas y salidas.
En los puntos de conexión por lotes, las implementaciones no tienen versiones. Sin embargo, puede implementar varias versiones de componentes de canalización en el mismo punto de conexión. En este sentido, cada versión de canalización de v1 corresponde a una versión de componente de canalización diferente y su implementación correspondiente en el punto de conexión.
A continuación, puede implementar una implementación específica que se ejecuta en el punto de conexión si esa implementación ejecuta la versión en la que me interesa.
En el código siguiente se enumeran todos los puntos de conexión existentes en el área de trabajo:
all_endpoints = ml_client.batch_endpoints.list()
Sin embargo, tenga en cuenta que los puntos de conexión por lotes pueden hospedar implementaciones que ponen en operación canalizaciones o modelos. Si desea obtener una lista de todas las implementaciones que hospedan canalizaciones, puede hacer lo siguiente:
all_deployments = []
for endpoint in all_endpoints:
all_deployments.extend(ml_client.batch_deployments.list(endpoint_name=endpoint.name))
all_pipeline_deployments = filter(all_endpoints, lamdba x: x is BatchPipelineComponentDeployment)
Mediante la API de REST
Puede crear trabajos a partir de los puntos de conexión mediante la API de REST de la dirección URL de invocación. Consulte los ejemplos siguientes para ver cómo ha cambiado la invocación de v1 a v2.