Zodra u een pijplijn hebt die actief is, kunt u een pijplijn publiceren zodat deze wordt uitgevoerd met verschillende invoerwaarden. Dit werd gepubliceerde pijplijnen genoemd.
Met Batch-eindpunten wordt de interface (eindpunt) losgekoppeld van de werkelijke implementatie (implementatie) en kan de gebruiker bepalen welke implementatie de standaardimplementatie van het eindpunt dient. Met implementaties van pijplijnonderdelen in batch-eindpunten kunnen gebruikers pijplijnonderdelen implementeren in plaats van pijplijnen, waardoor herbruikbare assets beter kunnen worden gebruikt voor organisaties die hun MLOps-praktijk willen stroomlijnen.
In de volgende tabel ziet u een vergelijking van elk van de concepten:
Concept
SDK v1
SDK v2
REST-eindpunt van pijplijn voor aanroep
Pijplijneindpunt
Batch-eindpunt
Specifieke versie van pijplijn onder het eindpunt
Gepubliceerde pijplijn
Implementatie van pijplijnonderdelen
Argumenten van pijplijn bij aanroep
Pijplijnparameter
Taakinvoer
Taak gegenereerd op basis van een gepubliceerde pijplijn
Batch-eindpunten implementeren geen pijplijnen, maar pijplijnonderdelen. Onderdelen stellen een betrouwbaardere manier voor voor het beheren van broncodebeheer van de assets die worden geïmplementeerd onder een eindpunt. We kunnen elke pijplijndefinitie als volgt converteren naar een pijplijnonderdeel:
pipeline_component = pipeline().component
Het wordt aanbevolen om pijplijnonderdelen te registreren, zodat u versiebeheer op een gecentraliseerde manier in de werkruimte of zelfs de gedeelde registers kunt behouden.
ml_client.components.create(pipeline_component)
Vervolgens moeten we het eindpunt maken dat als host fungeert voor alle pijplijnimplementaties:
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)
Maak een implementatie voor het pijplijnonderdeel:
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)
In batch-eindpunten worden implementaties niet geversied. U kunt echter meerdere versies van pijplijnonderdelen implementeren onder hetzelfde eindpunt. In dit opzicht komt elke pijplijnversie in v1 overeen met een andere versie van het pijplijnonderdeel en de bijbehorende implementatie onder het eindpunt.
Vervolgens kunt u een specifieke implementatie implementeren die wordt uitgevoerd onder het eindpunt als die implementatie de versie uitvoert waarin u geïnteresseerd bent.
De volgende code bevat alle eindpunten die in de werkruimte bestaan:
all_endpoints = ml_client.batch_endpoints.list()
Houd er echter rekening mee dat batcheindpunten implementaties kunnen hosten die pijplijnen of modellen operationeel maken. Als u een lijst wilt ophalen met alle implementaties die pijplijnen hosten, kunt u het volgende doen:
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)
De REST API gebruiken
U kunt taken maken op basis van de eindpunten met behulp van de REST API van de aanroep-URL. Zie de volgende voorbeelden om te zien hoe aanroep is gewijzigd van v1 in v2.
Batch-eindpunten ondersteunen meerdere invoertypen. In het volgende voorbeeld ziet u hoe u twee verschillende invoer van het type string en numeric. Zie Taken maken en invoergegevens voor batcheindpunten (REST) voor gedetailleerdere voorbeelden: