Partager via


Spécifier le modèle à déployer pour une utilisation dans un point de terminaison en ligne

S’APPLIQUE À :Extension Azure CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)

Dans cet article, vous allez découvrir les différentes façons de spécifier les modèles que vous souhaitez utiliser dans les déploiements en ligne. Lors du déploiement d’un modèle sur un point de terminaison en ligne Azure Machine Learning, vous devez spécifier le modèle de l’une des deux manières suivantes :

  • Indiquer le chemin d’accès à l’emplacement du modèle sur votre ordinateur local.
  • Fournir une référence à un modèle versionné déjà inscrit dans votre espace de travail.

La façon de spécifier un modèle pour le déploiement d’un point de terminaison en ligne varie en fonction de l’emplacement de stockage dudit modèle. Dans Azure Machine Learning, après avoir créé votre déploiement, la variable d’environnement AZUREML_MODEL_DIR pointe vers l’emplacement de stockage de votre modèle dans Azure.

Déploiement pour les modèles stockés localement

Cette section utilise cet exemple de structure de dossiers locale pour montrer comment spécifier les modèles à utiliser dans un déploiement en ligne :

Capture d’écran montrant une structure de dossiers locale contenant plusieurs modèles.

Déploiement pour un modèle local unique

Pour utiliser un modèle unique présent sur votre ordinateur local dans un déploiement, spécifiez le path du model dans votre fichier YAML de configuration YAML de déploiement. Le code suivant est un exemple du fichier YAML de déploiement avec le chemin d’accès local /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl :

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Dans Azure Machine Learning, après avoir créé votre déploiement sur un point de terminaison en ligne, la variable d’environnement AZUREML_MODEL_DIR pointe vers l’emplacement de stockage de votre modèle dans Azure. Par exemple, /var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1 contient maintenant le modèle sample_m1.pkl.

Dans votre script de scoring (score.py), vous pouvez charger votre modèle (dans cet exemple, sample_m1.pkl) dans la fonction init() du script :

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "sample_m1.pkl") 
    model = joblib.load(model_path) 

Déploiement pour plusieurs modèles locaux

Même si Azure CLI, le Kit de développement logiciel (SDK) Python et d’autres outils clients ne vous laissent spécifier qu’un seul modèle par déploiement dans la définition du déploiement, vous pouvez toujours utiliser plusieurs modèles dans un déploiement en inscrivant un dossier de modèles contenant tous les modèles en tant que fichiers ou sous-répertoires. Pour plus d’informations sur l’inscription de vos ressources, telles que les modèles, de façon à pouvoir spécifier leurs noms et versions inscrits pendant le déploiement, consultez Inscrire votre modèle et votre environnement.

Dans l’exemple de structure de dossiers locale, vous pouvez constater la présence de plusieurs modèles dans le dossier models. Pour utiliser ces modèles, dans le fichier YAML de votre déploiement, vous pouvez spécifier le chemin d’accès au dossier models comme suit :

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/ 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Une fois votre déploiement créé, la variable d’environnement AZUREML_MODEL_DIR pointe vers l’emplacement de stockage de vos modèles dans Azure. Par exemple, /var/azureml-app/azureml-models/bbb-bbb-bbb-bbb-bbb/1 contient maintenant les modèles et la structure de fichiers.

Pour cet exemple, le contenu du dossier AZUREML_MODEL_DIR se présente comme suit :

Capture d’écran montrant la structure de dossiers de l’emplacement de stockage pour plusieurs modèles.

Dans votre script de scoring (score.py), vous pouvez charger vos modèles dans la fonction init(). Le code suivant charge le modèle sample_m1.pkl :

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "models","model_1","v1", "sample_m1.pkl ") 
    model = joblib.load(model_path) 

Pour obtenir un exemple de déploiement de plusieurs modèles dans un même déploiement, consultez Déployer plusieurs modèles dans un même déploiement (exemple CLI) et Déployer plusieurs modèles dans un même déploiement (exemple SDK).

Conseil

Si vous avez plus de 1 500 fichiers à inscrire, envisagez de compresser les fichiers ou sous-répertoires au format .tar.gz lors de l’inscription des modèles. Pour consommer les modèles, vous pouvez décompresser les fichiers ou sous-répertoires dans la fonction init() du script de scoring. Sinon, quand vous inscrivez les modèles, définissez la propriété azureml.unpack sur True pour décompresser automatiquement les fichiers ou sous-répertoires. Dans les deux cas, la décompression des fichiers se produit une fois lors de la phase d’initialisation.

Déploiement pour les modèles inscrits dans votre espace de travail

Vous pouvez utiliser des modèles inscrits dans la définition de votre déploiement en référençant leurs noms dans le fichier YAML de votre déploiement. Par exemple, la configuration YAML de déploiement suivante spécifie azureml:local-multimodel:3 comme nom de model inscrit :

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: azureml:local-multimodel:3 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Pour cet exemple, considérez que local-multimodel:3 contient les artefacts de modèle suivants, que vous pouvez voir sous l’onglet Modèles dans Azure Machine Learning studio :

Capture d’écran d’une structure de dossiers montrant les artefacts de modèle d’un modèle inscrit.

Une fois votre déploiement créé, la variable d’environnement AZUREML_MODEL_DIR pointe vers l’emplacement de stockage de vos modèles dans Azure. Par exemple, /var/azureml-app/azureml-models/local-multimodel/3 contient les modèles et la structure de fichiers. AZUREML_MODEL_DIR pointe vers le dossier contenant la racine des artefacts de modèle. Dans cet exemple, le contenu du dossier AZUREML_MODEL_DIR se présente comme suit :

Capture d’écran de la structure de dossiers montrant plusieurs modèles.

Dans votre script de scoring (score.py), vous pouvez charger vos modèles dans la fonction init(). Par exemple, chargez le modèle diabetes.sav :

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR"), "models", "diabetes", "1", "diabetes.sav") 
    model = joblib.load(model_path) 

Déploiement pour les modèles disponibles dans le catalogue de modèles

Pour tous les modèles présents dans le catalogue de modèles, à l’exception de ceux se trouvant dans la collection Azure OpenAI, vous pouvez utiliser l’ID de modèle indiqué dans la carte du modèle pour le déploiement. Les ID de modèle se présentent sous la forme azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. Par exemple, l’ID de modèle pour le modèle Meta Llama 3-8 B Instruct est azureml://registries/azureml-meta/models/Meta-Llama-3-8B-Instruct/versions/2. Certaines cartes de modèle incluent des exemples de notebooks qui vous montrent comment utiliser l’ID de modèle pour le déploiement.

Déploiement pour les modèles disponibles dans le registre de votre organisation

Chaque modèle figurant dans le registre d’une organisation possède un ID de modèle sous la forme azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. Vous pouvez également choisir d’utiliser des environnements inscrits dans le même registre.