Atualizar pontos de extremidade de implantação para o SDK v2

Com o SDK ou a CLI da v1, é possível implantar modelos no ACI ou no AKS como serviços Web. Suas implantações de modelo e serviços da Web existentes da v1 continuarão funcionando, mas o uso do SDK/CLI v1 para implantar modelos no ACI ou no AKS como serviços Web agora é considerado herdado. Para novas implantações de modelo, recomendamos fazer upgrade para a v2.

Na v2, são oferecidos pontos de extremidade gerenciados ou pontos de extremidade do Kubernetes. Para obter uma comparação entre v1 e v2, confira Pontos de extremidade e implantação.

Há vários funis de implantação, como pontos de extremidade online gerenciados e pontos de extremidade online do Kubernetes (incluindo serviços de Kubernetes do Azure e Kubernetes habilitado para Arc) na v2 e serviços Web do ACI (Instâncias de Contêiner do Azure) e do AKS (Serviços de Kubernetes do Azure) na v1. Neste artigo, nos concentraremos na comparação entre a implantação em serviços Web da ACI (v1) e em pontos de extremidade online gerenciados (v2).

Os exemplos neste artigo mostram como:

  • Implantar seu modelo no Azure
  • Classificar usando o ponto de extremidade
  • Excluir o serviço Web/ponto de extremidade

Criar recursos de inferência

  • SDK v1
    1. Configurar um modelo, um ambiente e um script de pontuação:

      # 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. Configurar e implantar um serviço Web do 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 obter mais informações sobre como registrar modelos, confira Registrar um modelo de um arquivo local.

  • SDK v2

    1. Configurar um modelo, um ambiente e um script de pontuação:

      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 e crie um ponto de extremidade online:

      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 e crie uma implantação online:

      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 obter mais informações sobre conceitos de pontos de extremidade e implantações, confira O que são pontos de extremidade online?

Para enviar uma solicitação

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

Excluir recursos

  • SDK v1

    service.delete()
    
  • SDK v2

    ml_client.online_endpoints.begin_delete(name=online_endpoint_name)
    

Mapeamento da funcionalidade de chave no SDK v1 e no SDK v2

Funcionalidade no SDK v1 Mapeamento aproximado no SDK v2
Classe azureml.core.model.Model Classe azure.ai.ml.entities.Model
Classe azureml.core.Environment Classe azure.ai.ml.entities.Environment
Classe azureml.core.model.InferenceConfig Classe azure.ai.ml.entities.CodeConfiguration
Classe azureml.core.webservice.AciWebservice Classe azure.ai.ml.entities.OnlineDeployment (e classe azure.ai.ml.entities.ManagedOnlineEndpoint)
Model.deploy ou 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 obter mais informações, consulte

Documentação da v2:

Documentação da v1: