Mettre à niveau des points de terminaison de déploiement vers le SDK v2
Avec SDK/CLI v1, vous pouvez déployer des modèles sur ACI ou AKS en tant que services web. Vos modèles de déploiement et services web v1 existants continuent de fonctionner tels quels, mais l’utilisation du SDK/de la CLI v1 pour déployer des modèles sur ACI ou AKS en tant que services web est désormais considérée comme héritée. Pour les nouveaux déploiements de modèle, nous vous recommandons d’effectuer une mise à niveau vers la version 2.
Dans la version 2, nous offrons des points de terminaison managés ou points de terminaison Kubernetes. Pour une comparaison des versions 1 et 2, consultez la section Points de terminaison et déploiement.
Il existe plusieurs entonnoirs de déploiement tels que les points de terminaison en ligne managés, les points de terminaison en ligne kubernetes (y compris Azure Kubernetes Services et Kubernetes avec Arc) dans la version 2 et les services web Azure Container Instances (ACI) et Kubernetes Services (AKS) dans la version 1. Dans cet article, nous allons essentiellement comparer le déploiement sur les services web ACI (v1) et les 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
- Définir un score avec le point de terminaison
- Supprimer le service web/point de terminaison
Créer des ressources d’inférence
- Kit de développement logiciel (SDK) v1
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", )
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.
SDK v2
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/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" )
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)
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)
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()
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
Documents associés
Pour plus d'informations, consultez la rubrique
Documentation v2 :
- Que sont les points de terminaison ?
- Déployer des modèles Machine Learning sur un point de terminaison en ligne managé à l’aide du kit SDK Python v2
Documentation v1 :