Actualización de los puntos de conexión de implementación al SDK v2

Con el SDK y la CLI v1, puede implementar modelos en ACI o AKS como servicios web. Las implementaciones de modelos v1 y los servicios web existentes seguirán funcionando tal y como están, pero el uso del SDK o la CLI v1 para implementar modelos en ACI o AKS como servicios web ahora se considera heredado. Para las nuevas implementaciones de modelos, se recomienda actualizar a v2.

En v2, se ofrecen puntos de conexión administrados o puntos de conexión de Kubernetes. Para obtener una comparación de v1 y v2, consulte Puntos de conexión e implementación.

Hay varios embudos de implementación, como los puntos de conexión en línea administrados, los puntos de conexión en línea de Kubernetes (incluidos Azure Kubernetes Services y Kubernetes habilitado para Arc) en v2 y Azure Container Instances (ACI) y los servicios web de Kubernetes Service (AKS) en v1. En este artículo nos centraremos en la comparación de la implementación en los servicios web de ACI (v1) y los puntos de conexión en línea administrados (v2).

En los ejemplos de este artículo se muestran los siguientes procedimientos:

  • Implementación del modelo en Azure
  • Puntuación mediante el punto de conexión
  • Eliminación del servicio web o del punto de conexión

Creación de recursos de inferencia

  • SDK v1
    1. Configure un modelo, un entorno y un script de puntuación:

      # 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. Configure e implemente un servicio web de ACI:

      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)
      

Para más información sobre el registro de modelos, consulte Registro de un modelo desde un archivo local.

  • SDK v2

    1. Configure un modelo, un entorno y un script de puntuación:

      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. Configure y cree un punto de conexión en línea:

      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. Configure y cree una implementación en línea:

      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)
      

Para más información sobre los conceptos de los puntos de conexión y las implementaciones, consulte ¿Qué son los puntos de conexión en línea?

Envío de una solicitud

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

Eliminar recursos

  • SDK v1

    service.delete()
    
  • SDK v2

    ml_client.online_endpoints.begin_delete(name=online_endpoint_name)
    

Asignación de la funcionalidad clave en SDK v1 y SDK v2

Funcionalidad en SDK v1 Asignación aproximada en 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 (y azure.ai.ml.entities.ManagedOnlineEndpoint class)
Model.deploy o Webservice.deploy ml_client.begin_create_or_update(online_deployment)
Webservice.run ml_client.online_endpoints.invoke
Webservice.delete ml_client.online_endpoints.delete

Para obtener más información, vea

Documentos de v2:

Documentos de v1: