Implementatie-eindpunten upgraden naar SDK v2
Met SDK/CLI v1 kunt u modellen implementeren in ACI of AKS als webservices. Uw bestaande v1-modelimplementaties en webservices blijven werken zoals ze zijn, maar het gebruik van SDK/CLI v1 voor het implementeren van modellen in ACI of AKS als webservices wordt nu beschouwd als verouderd. Voor nieuwe modelimplementaties wordt u aangeraden een upgrade uit te voeren naar v2.
In v2 bieden we beheerde eindpunten of Kubernetes-eindpunten aan. Zie Eindpunten en implementatie voor een vergelijking van v1 en v2.
Er zijn verschillende implementatietrechters, zoals beheerde online-eindpunten, kubernetes online-eindpunten (waaronder Azure Kubernetes Services en Kubernetes met Arc) in v2, en Azure Container Instances (ACI) en Kubernetes Services (AKS) webservices in v1. In dit artikel richten we ons op de vergelijking van de implementatie naar ACI-webservices (v1) en beheerde online-eindpunten (v2).
Voorbeelden in dit artikel laten zien hoe u:
- Uw model implementeren in Azure
- Scoren met behulp van het eindpunt
- De webservice/het eindpunt verwijderen
Deductiebronnen maken
- SDK v1
Configureer een model, een omgeving en een scorescript:
# configure a model. example for registering a model from azureml.core.model import Model model = Model.register(ws, model_name="bidaf_onnx", model_path="./model.onnx") # configure an environment from azureml.core import Environment env = Environment(name='myenv') python_packages = ['nltk', 'numpy', 'onnxruntime'] for package in python_packages: env.python.conda_dependencies.add_pip_package(package) # configure an inference configuration with a scoring script from azureml.core.model import InferenceConfig inference_config = InferenceConfig( environment=env, source_directory="./source_dir", entry_script="./score.py", )
Een ACI-webservice configureren en implementeren:
from azureml.core.webservice import AciWebservice # defince compute resources for ACI deployment_config = AciWebservice.deploy_configuration( cpu_cores=0.5, memory_gb=1, auth_enabled=True ) # define an ACI webservice service = Model.deploy( ws, "myservice", [model], inference_config, deployment_config, overwrite=True, ) # create the service service.wait_for_deployment(show_output=True)
Zie Een model registreren vanuit een lokaal bestand voor meer informatie over het registreren van modellen.
SDK v2
Configureer een model, een omgeving en een scorescript:
from azure.ai.ml.entities import Model # configure a model model = Model(path="../model-1/model/sklearn_regression_model.pkl") # configure an environment from azure.ai.ml.entities import Environment env = Environment( conda_file="../model-1/environment/conda.yml", image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1", ) # configure an inference configuration with a scoring script from azure.ai.ml.entities import CodeConfiguration code_config = CodeConfiguration( code="../model-1/onlinescoring", scoring_script="score.py" )
Een online-eindpunt configureren en maken:
import datetime from azure.ai.ml.entities import ManagedOnlineEndpoint # create a unique endpoint name with current datetime to avoid conflicts online_endpoint_name = "endpoint-" + datetime.datetime.now().strftime("%m%d%H%M%f") # define an online endpoint endpoint = ManagedOnlineEndpoint( name=online_endpoint_name, description="this is a sample online endpoint", auth_mode="key", tags={"foo": "bar"}, ) # create the endpoint: ml_client.begin_create_or_update(endpoint)
Een onlineimplementatie configureren en maken:
from azure.ai.ml.entities import ManagedOnlineDeployment # define a deployment blue_deployment = ManagedOnlineDeployment( name="blue", endpoint_name=online_endpoint_name, model=model, environment=env, code_configuration=code_config, instance_type="Standard_F2s_v2", instance_count=1, ) # create the deployment: ml_client.begin_create_or_update(blue_deployment) # blue deployment takes 100 traffic endpoint.traffic = {"blue": 100} ml_client.begin_create_or_update(endpoint)
Zie Wat zijn online-eindpunten voor meer informatie over concepten voor eindpunten en implementaties?
Dien een aanvraag in
SDK v1
import json data = { "query": "What color is the fox", "context": "The quick brown fox jumped over the lazy dog.", } data = json.dumps(data) predictions = service.run(input_data=data) print(predictions)
SDK v2
# test the endpoint (the request will route to blue deployment as set above) ml_client.online_endpoints.invoke( endpoint_name=online_endpoint_name, request_file="../model-1/sample-request.json", ) # test the specific (blue) deployment ml_client.online_endpoints.invoke( endpoint_name=online_endpoint_name, deployment_name="blue", request_file="../model-1/sample-request.json", )
Resources verwijderen
SDK v1
service.delete()
SDK v2
ml_client.online_endpoints.begin_delete(name=online_endpoint_name)
Toewijzing van belangrijke functionaliteit in SDK v1 en SDK v2
Gerelateerde documenten
Zie voor meer informatie
v2-documenten:
- Wat zijn eindpunten?
- Machine Learning-modellen implementeren in een beheerd online-eindpunt met behulp van Python SDK v2
v1-documenten: