Upgrade von Bereitstellungsendpunkten auf SDK v2

Mit SDK/CLI v1 können Sie Modelle in ACI oder AKS als Webdienste bereitstellen. Ihre bestehenden v1-Modellbereitstellungen und Webdienste funktionieren weiterhin wie bisher, aber die Verwendung von SDK/CLI v1 zur Bereitstellung von Modellen auf ACI oder AKS als Webdienste wird jetzt als Legacy betrachtet. Für neue Modellimplementierungen wird ein Upgrade zu v2 empfohlen.

In v2 sind verwaltete Endpunkte und Kubernetes-Endpunkte verfügbar. Einen Vergleich von v1 und v2 finden Sie unter Endpunkte und Bereitstellung.

Es gibt mehrere Bereitstellungstrichter wie etwa verwaltete Online-Endpunkte, Kubernetes-Online-Endpunkte (einschließlich Azure Kubernetes Services und Arc-fähiges Kubernetes) in v2 und Azure Container Instances (ACI) und Kubernetes Services (AKS) Webservices in v1. In diesem Artikel konzentrieren wir uns auf den Vergleich zwischen der Bereitstellung auf ACI Webservices (v1) und verwalteten Online-Endpunkten (v2).

Beispiele in diesem Artikel veranschaulichen Folgendes:

  • Modell in Azure bereitstellen
  • Bewertung mit dem Endpunkt
  • Löschen des Webdiensts/Endpunkts

Erstellen von Rückschlussressourcen

  • SDK v1
    1. Konfigurieren eines Modells, einer Umgebung und einem Bewertungsskripts:

      # 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. Konfigurieren und Bereitstellen eines ACI-Webdiensts:

      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)
      

Weitere Informationen zum Registrieren von Modellen finden Sie unter Registrieren eines Modells aus einer lokalen Datei.

  • SDK v2

    1. Konfigurieren eines Modells, einer Umgebung und einem Bewertungsskripts:

      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. Konfigurieren und Erstellen eines Online-Endpunkts:

      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. Konfigurieren und Erstellen einer Online-Bereitstellung:

      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)
      

Weitere Informationen zu Endpunkten und Bereitstellungen finden Sie unter Was sind Online-Endpunkte?

Anforderung senden

  • 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",
    )
    

Löschen von Ressourcen

  • SDK v1

    service.delete()
    
  • SDK v2

    ml_client.online_endpoints.begin_delete(name=online_endpoint_name)
    

Zuordnung der wichtigsten Funktionen in SDK v1 und SDK v2

Funktionalität im SDK v1 Grobe Zuordnung in SDK v2
azureml.core.model.Model class azure.ai.ml.entities.Model class
azureml.core.Environment class azure.ai.ml.entities.Environment class
azureml.core.model.InferenceConfig class azure.ai.ml.entities.CodeConfiguration class
azureml.core.webservice.AciWebservice class azure.ai.ml.entities.OnlineDeployment class (und azure.ai.ml.entities.ManagedOnlineEndpoint class)
Model.deploy oder Webservice.deploy ml_client.begin_create_or_update(online_deployment)
Webservice.run ml_client.online_endpoints.invoke
Webservice.delete ml_client.online_endpoints.delete

Weitere Informationen finden Sie unter

v2-Dokumentation:

v1-Dokumentation: