Udostępnij za pośrednictwem


Uaktualnianie punktów końcowych wdrożenia do zestawu SDK w wersji 2

Za pomocą zestawu SDK/interfejsu wiersza polecenia w wersji 1 można wdrażać modele w usłudze ACI lub AKS jako usługi internetowe. Istniejące wdrożenia modelu w wersji 1 i usługi internetowe będą nadal działać tak, jak są, ale wdrażanie modeli w usłudze ACI lub AKS przy użyciu zestawu SDK/interfejsu wiersza polecenia w wersji 1 jest teraz uznawane za starsze. W przypadku nowych wdrożeń modelu zalecamy uaktualnienie do wersji 2.

W wersji 2 oferujemy zarządzane punkty końcowe lub punkty końcowe kubernetes. Aby zapoznać się z porównaniem wersji 1 i 2, zobacz Punkty końcowe i wdrożenie.

Istnieje kilka lejków wdrażania, takich jak zarządzane punkty końcowe online, punkty końcowe online kubernetes (w tym usługi Azure Kubernetes Services i platforma Kubernetes z włączoną usługą Arc) w wersji 2 oraz usługi web Azure Container Instances (ACI) i Kubernetes Services (AKS) w wersji 1. W tym artykule skupimy się na porównaniu wdrażania w usługach internetowych ACI (v1) i zarządzanych punktach końcowych online (v2).

Przykłady w tym artykule pokazują, jak:

  • Wdrażanie modelu na platformie Azure
  • Ocenianie przy użyciu punktu końcowego
  • Usuwanie usługi internetowej/punktu końcowego

Tworzenie zasobów wnioskowania

  • Zestaw SDK w wersji 1
    1. Konfigurowanie modelu, środowiska i skryptu oceniania:

      # 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. Konfigurowanie i wdrażanie usługi internetowej 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)
      

Aby uzyskać więcej informacji na temat rejestrowania modeli, zobacz Rejestrowanie modelu z pliku lokalnego.

  • Zestaw SDK w wersji 2

    1. Konfigurowanie modelu, środowiska i skryptu oceniania:

      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. Konfigurowanie i tworzenie punktu końcowego 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. Konfigurowanie i tworzenie wdrożenia 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)
      

Aby uzyskać więcej informacji na temat pojęć dotyczących punktów końcowych i wdrożeń, zobacz Co to są punkty końcowe online?

Prześlij żądanie

  • Zestaw SDK w wersji 1

    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)
    
  • Zestaw SDK w wersji 2

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

Usuwanie zasobów

  • Zestaw SDK w wersji 1

    service.delete()
    
  • Zestaw SDK w wersji 2

    ml_client.online_endpoints.begin_delete(name=online_endpoint_name)
    

Mapowanie kluczowych funkcji zestawu SDK w wersji 1 i zestawu SDK w wersji 2

Funkcje w zestawie SDK w wersji 1 Przybliżone mapowanie w zestawie SDK w wersji 2
azureml.core.model.Model, klasa azure.ai.ml.entities.Model, klasa
azureml.core.Environment, klasa azure.ai.ml.entities.Environment, klasa
azureml.core.model.InferenceConfig, klasa azure.ai.ml.entities.CodeConfiguration, klasa
azureml.core.webservice.AciWebservice, klasa azure.ai.ml.entities.OnlineDeployment, klasa (i klasa azure.ai.ml.entities.ManagedOnlineEndpoint)
Model.deploy lub Webservice.deploy ml_client.begin_create_or_update(online_deployment)
Webservice.run ml_client.online_endpoints.invoke
Webservice.delete ml_client.online_endpoints.delete

Aby uzyskać więcej informacji, zobacz

Dokumentacja w wersji 2:

Dokumentacja w wersji 1: