Share via


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
    1. 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",
      )
      
    2. 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

    1. 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"
          )
      
    2. 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)
      
    3. 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

Functionaliteit in SDK v1 Ruwe toewijzing in SDK v2
klasse azureml.core.model.Model klasse azure.ai.ml.entities.Model
klasse azureml.core.Environment klasse azure.ai.ml.entities.Environment
klasse azureml.core.model.InferenceConfig klasse azure.ai.ml.entities.CodeConfiguration
klasse azureml.core.webservice.AciWebservice klasse azure.ai.ml.entities.OnlineDeployment (en klasse azure.ai.ml.entities.ManagedOnlineEndpoint)
Model.deploy of Webservice.deploy ml_client.begin_create_or_update(online_deployment)
Webservice.run ml_client.online_endpoints.invoke
Webservice.delete ml_client.online_endpoints.delete

Zie voor meer informatie

v2-documenten:

v1-documenten: