Sobald Sie eine Pipeline eingerichtet haben, können Sie eine Pipeline so veröffentlichen, dass sie mit unterschiedlichen Eingaben ausgeführt wird. Dies war als veröffentlichte Pipelines bekannt.
Was hat sich geändert?
Batchendpunkt schlägt eine ähnliche und noch leistungsstärkere Möglichkeit zum Verarbeiten mehrerer Objekte vor, die unter einer dauerhaften API ausgeführt werden, weshalb die Funktionalität der veröffentlichten Pipelines in Pipelinekomponentenbereitstellungen in Batchendpunkten verschoben wurde.
Batchendpunkte entkoppeln die Schnittstelle (Endpunkt) von der tatsächlichen Implementierung (Bereitstellung) und ermöglichen es dem Benutzer, zu entscheiden, welche Bereitstellung der Standardimplementierung des Endpunkts dient. Bereitstellungen von Pipelinekomponenten in Batchendpunkten ermöglichen es Benutzern, Pipelinekomponenten anstelle von Pipelines bereitzustellen, wodurch wiederverwendbare Ressourcen für Organisationen, die ihre MLOps-Praxis optimieren möchten, besser genutzt werden können.
Die folgende Tabelle zeigt einen Vergleich der einzelnen Konzepte:
Konzept
SDK v1
SDK v2
REST-Endpunkt der Pipeline für den Aufruf
Pipelineendpunkt
Batchendpunkt
Spezifische Version der Pipeline unter dem Endpunkt
Veröffentlichte Pipeline
Bereitstellung von Pipelinekomponenten
Pipelineargumente beim Aufruf
Pipelineparameter
Auftragseingaben
Auftrag generiert aus einer veröffentlichten Pipeline
Batchendpunkte stellen keine Pipelines, sondern Pipelinekomponenten bereit. Komponenten schlagen eine zuverlässigere Methode für die Quellcodeverwaltung der Ressourcen vor, die unter einem Endpunkt bereitgestellt werden. Wir können jede Pipelinedefinition wie folgt in eine Pipelinekomponente konvertieren:
pipeline_component = pipeline().component
Als bewährte Methode wird empfohlen, Pipelinekomponenten zu registrieren, damit Sie die Versionsverwaltung dieser Komponenten zentral innerhalb des Arbeitsbereichs oder sogar innerhalb der freigegebenen Registrierungen beibehalten können.
ml_client.components.create(pipeline_component)
Anschließend müssen wir den Endpunkt erstellen, der alle Pipelinebereitstellungen hostet:
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)
Erstellen Sie eine Bereitstellung für die Pipelinekomponente:
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)
Übermitteln eines Auftrags an einen Pipelineendpunkt
In Batchendpunkten werden Bereitstellungen nicht versionsiert. Sie können jedoch mehrere Versionen von Pipelinekomponenten unter demselben Endpunkt bereitstellen. In diesem Sinne entspricht jede Pipelineversion in v1 einer anderen Pipelinekomponentenversion und der entsprechenden Bereitstellung unter dem Endpunkt.
Anschließend können Sie eine bestimmte Bereitstellung bereitstellen, die unter dem Endpunkt ausgeführt wird, wenn diese Bereitstellung die Version ausführt, an der Sie interessiert sind.
Der folgende Code listet alle Endpunkte auf, die im Arbeitsbereich vorhanden sind:
all_endpoints = ml_client.batch_endpoints.list()
Beachten Sie jedoch, dass Batchendpunkte Bereitstellungen hosten können, die entweder Pipelines oder Modelle operationalisieren. Wenn Sie eine Liste aller Bereitstellungen abrufen möchten, die Pipelines hosten, können Sie wie folgt vorgehen:
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)
Verwenden der REST-API
Sie können Aufträge über die Endpunkte erstellen, indem Sie die REST-API der Aufruf-URL verwenden. In den folgenden Beispielen erfahren Sie, wie sich der Aufruf von v1 zu v2 geändert hat.