Mettre à niveau les points de terminaison de déploiement vers le SDK v2

Important

Cet article fait référence au Kit de développement logiciel (SDK) Azure Machine Learning v1. Sdk v1 est déconseillé depuis le 31 mars 2025. La prise en charge se termine le 30 juin 2026. Vos flux de travail existants qui utilisent le Kit de développement logiciel (SDK) v1 continuent à fonctionner après la date de fin de support, mais ils peuvent être exposés aux risques de sécurité ou aux changements cassants. Passer au SDK v2 avant le 30 juin 2026. Pour plus d’informations, consultez Qu’est-ce qu’Azure Machine Learning CLI et le Kit de développement logiciel (SDK) Python v2 ?

Avec SDK/CLI v1, vous pouvez déployer des modèles sur ACI ou AKS en tant que services web. Vos déploiements de modèles v1 existants et vos services web continuent de fonctionner, mais l’utilisation du SDK/CLI v1 pour déployer des modèles sur ACI ou AKS en tant que services web est désormais déconseillée. Pour les nouveaux déploiements de modèles, effectuez une mise à niveau vers v2.

Dans v2, vous pouvez utiliser des points de terminaison managés ou des points de terminaison Kubernetes. Pour une comparaison des versions 1 et 2, consultez la section Points de terminaison et déploiement.

Plusieurs chaînes de déploiement existent, tels que les points de terminaison en ligne gérés, les points de terminaison en ligne Kubernetes (y compris les services Azure Kubernetes et les services Kubernetes compatibles Arc) dans v2, et les services web Azure Container Instances (ACI) et Kubernetes Services (AKS) dans v1. Dans cet article, concentrez-vous sur la comparaison du déploiement sur des services web ACI (v1) et des points de terminaison en ligne managés (v2).

Les exemples présentés dans cet article montrent comment :

  • Déployer votre modèle sur Azure
  • Évaluer à l’aide du point de terminaison
  • Supprimer le service web ou le point de terminaison

Créer des ressources d’inférence

  • Kit de développement logiciel (SDK) v1
    1. Configurez un modèle, un environnement et un script de scoring :

      # 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. Configurez et déployez un service web 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)
      

Pour plus d’informations sur l’inscription de modèles, consultez Inscrire un modèle à partir d’un fichier local.

  • Kit de développement logiciel (SDK) v2

    1. Configurez un modèle, un environnement et un script de scoring :

      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/openmpi4.1.0-ubuntu20.04",
      )
      
      # 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. Configurez et créez un point de terminaison en ligne :

      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. Configurez et créez un déploiement en ligne :

      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)
      

Pour plus d’informations sur les concepts de points de terminaison et de déploiements, consultez Que sont les points de terminaison en ligne ?.

Soumettre une demande

  • Kit de développement logiciel (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)
    
  • Kit de développement logiciel (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",
    )
    

Supprimer des ressources

  • Kit de développement logiciel (SDK) v1

    service.delete()
    
  • Kit de développement logiciel (SDK) v2

    ml_client.online_endpoints.begin_delete(name=online_endpoint_name)
    

Mappage des fonctionnalités clés dans le SDK v1 et le SDK v2

Fonctionnalités dans le SDK v1 Mappage approximatif dans le SDK v2
azureml.core.model.Model Classe Classe azure.ai.ml.entities.Model
Classe azureml.core.Environment Classe Environment d'azure.ai.ml.entities
Classe azureml.core.model.InferenceConfig classe Azure.ai.ml.entities.CodeConfiguration
classe azureml.core.webservice.AciWebservice Classe azure.ai.ml.entities.OnlineDeployment (et 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.begin_delete

Pour plus d'informations, consultez la rubrique

Documentation v2 :

Documentation v1 :