0 / 0
Retourner à la version anglaise de la documentation
Infrastructures Microsoft Azure ML Service
Dernière mise à jour : 22 nov. 2024
Infrastructures Microsoft Azure ML Service

Vous pouvez utiliser Microsoft Azure ML Service pour effectuer la journalisation de la charge utile, la journalisation du retour d'information et pour mesurer la précision des performances, la détection des biais d'exécution, l'explicabilité et la fonction d'auto-débiaisage pour les évaluations de modèles.

Les cadres de services suivants Microsoft Azure Machine Learning sont pris en charge pour les évaluations de modèles :

Tableau 1. Détails des infrastructures prises en charge

Détails des infrastructures prises en charge
Infrastructure Type de problème Type de données
Natif Classification Structurées
scikit-learn Classification Structurées
scikit-learn Régression Structurées

Pour générer le modèle de détection de dérive, vous devez utiliser scikit-learn version 0.20.2 dans les bloc-notes.

Azure Automated Machine Learning managed endpoints and Azure models are managed with notebooks for model evaluations.

Ajout du service ML de Microsoft Azure

Vous pouvez configurer les évaluations de modèles pour qu'elles fonctionnent avec Microsoft Azure ML Service en utilisant l'une des méthodes suivantes :

Divers points d'extrémité REST sont appelés pour interagir avec le service Azure ML. Pour ce faire, vous devez lier le service Azure Machine Learning

  1. Créez un principal Azure Active Directory Service.
  2. Spécifiez les détails de l'identifiant lorsque vous ajoutez la liaison de service Azure ML Service, soit via l'interface utilisateur, soit via le SDK Python.

Conditions à remplir par les fichiers de demande et de réponse JSON

Pour que les évaluations de modèles fonctionnent avec Azure ML Service, les déploiements de services web que vous créez doivent répondre à certaines exigences. Les déploiements de service Web que vous créez doivent accepter des demandes JSON et renvoyer des réponses JSON, conformément aux exigences suivantes.

Format à respecter par les demandes JSON envoyées aux services web

  • Le corps de la demande envoyée à l'API REST doit être un document JSON contenant un unique tableau JSON d'objets JSON.
  • Le tableau JSON doit être nommé "input".
  • Chaque objet JSON peut inclure uniquement des paires de valeurs de clé simple, où les valeurs peuvent être une chaîne, un nombre, true, falseou null
  • Les valeurs ne peuvent pas elles-mêmes être des objets ou des tableaux JSON.
  • Chaque objet JSON du tableau doit tous avoir les mêmes clés (et donc le même nombre de clés) spécifiés, qu'il existe une valeur nonnull disponible

L'exemple de fichier JSON suivant remplit les conditions énoncées ci-dessus. Vous pouvez l'utiliser comme modèle pour créer vos propres fichiers de demande JSON :

{
  "input": [
    {
      "field1": "value1",
      "field2": 31,
      "field3": true,
      "field4": 2.3
    },
    {
      "field1": "value2",
      "field2": 15,
      "field3": false,
      "field4": 0.1
    },
    {
      "field1": null,
      "field2": 5,
      "field3": true,
      "field4": 6.1
    }
  ]
}

Format à respecter par les réponses JSON reçues des services web

Tenez compte des points suivants lorsque vous créez un fichier de réponse JSON :

  • Le corps de la réponse reçue de l'API REST doit être un document JSON contenant un unique tableau JSON d'objets JSON.

  • Le tableau JSON doit être nommé "output".

  • Chaque objet JSON peut inclure uniquement des paires clé-valeur, où les valeurs peuvent être une chaîne, un nombre, true, false, nullou un tableau qui ne contient aucun autre objet JSON ou tableau

  • Les valeurs ne peuvent pas elles-mêmes être des objets JSON.

  • Chaque objet JSON du tableau doit tous avoir les mêmes clés (et le nombre de clés) spécifiés, qu'il existe une valeur nonnull disponible

  • Pour les modèles de classification : le service web doit retourner un tableau de probabilités pour chaque classe, et l'ordre des probabilités doit être le même pour les différents objets JSON du tableau

    • Exemple : supposons que vous ayez un modèle de classification binaire qui prédit le risque de crédit, les deux classes possibles étant Risk ou No Risk
    • Pour chaque résultat retourné dans le tableau "output", les objets doivent contenir une paire clé-valeur incluant les probabilités dans un ordre fixe, sous la forme :
    {
    "output": [
      {
        "Scored Probabilities": ["Risk" probability,"No Risk" probability
        ]
        },
        {
          "Scored Probabilities": ["Risk" probability,"No Risk" probability
            ]
           }
        ]
    

Pour être cohérent avec les outils visuels Azure ML utilisés dans Azure ML Studio et Azure ML Service, utilisez les noms de clé suivants :

  • le nom de clé "Scored Labels" pour la clé de sortie qui indique la valeur prédite du modèle
  • le nom de clé "Scored Probabilities" pour la clé de sortie qui indique un tableau de probabilités pour chaque classe

L'exemple de fichier JSON suivant remplit les conditions énoncées ci-dessus. Vous pouvez l'utiliser comme modèle pour créer vos propres fichiers de réponse JSON :

{
  "output": [
    {
      "Scored Labels": "No Risk",
      "Scored Probabilities": [
        0.8922524675865824,
        0.10774753241341757
      ]
    },
    {
      "Scored Labels": "No Risk",
      "Scored Probabilities": [
        0.8335192848546905,
        0.1664807151453095
      ]
    }
  ]
}

Exemples de bloc-notes

Les bloc-notes suivants montrent comment utiliser Microsoft Azure ML Service :

Spécification d'une instance de Microsoft Azure ML Service

La première étape de la configuration des évaluations de modèles consiste à spécifier une instance de Microsoft Azure ML Service. Votre instance Azure ML Service est l'endroit où vous stockez vos modèles et déploiements d'IA.

Les modèles d'IA et les déploiements sont connectés dans une instance Azure ML Service pour l'évaluation des modèles. Pour connecter votre service à, allez dans l'onglet Configurer 'Icône de l'onglet de configuration, ajoutez un fournisseur d'apprentissage automatique, et cliquez sur l'icône Modifier 'Icône Editer Outre un nom et une description et si l'environnement est en préproduction ou en production, vous devez fournir les informations suivantes :

  • ID client : chaîne de votre ID client, qui vérifie qui vous êtes et authentifie et autorise les appels que vous faites à Azure Service.
  • Secret client : chaîne du secret, qui vérifie qui vous êtes et authentifie et autorise les appels que vous faites à Azure Service.
  • Titulaire : votre ID titulaire correspond à votre organisation et est une instance dédiée d'Azure AD. Pour trouver l'ID locataire, survolez votre nom de compte pour obtenir le répertoire et l'ID locataire, ou sélectionnez Azure Active Directory > Propriétés > Directory ID dans le portail Azure.
  • ID abonnement : Identifiants d'abonnement qui identifient de manière unique votre abonnement Microsoft Azure. L'ID d'abonnement constitue une partie de l'URI à chaque appel de service.

Pour savoir comment obtenir vos données d'identification Microsoft Azure, consultez la page How to: Use the portal to create an Azure AD application and service principal that can access resources.

Vous êtes maintenant prêt à sélectionner des modèles déployés et à configurer vos moniteurs. Vos modèles déployés apparaissent dans le tableau de bord Insights, où vous pouvez cliquer sur Ajouter au tableau de bord. Sélectionnez les déploiements à surveiller et cliquez sur Configurer.

Pour plus d'informations, consultez Configurer les moniteurs.

Journalisation du contenu avec le moteur Microsoft Azure ML Service

Ajouter votre moteur Microsoft Azure ML Service

Un moteur d'exécution watsonx.ai non IBM est lié en tant que Custom, et consiste en des métadonnées. Il n'y a pas d'intégration directe avec le service Runtime watsonx.ai non IBM.

service_type = "azure_machine_learning_service"
added_service_provider_result = wos_client.service_providers.add(
        name=SERVICE_PROVIDER_NAME,
        description=SERVICE_PROVIDER_DESCRIPTION,
        service_type = service_type,
        credentials=AzureCredentials(
            subscription_id= AZURE_ENGINE_CREDENTIALS['subscription_id'],
            client_id = AZURE_ENGINE_CREDENTIALS['client_id'],
            client_secret= AZURE_ENGINE_CREDENTIALS['client_secret'],
            tenant = AZURE_ENGINE_CREDENTIALS['tenant']
        ),
        background_mode=False
    ).result

Vous pouvez voir votre liaison de service avec la commande suivante :

client.service_providers.list()

Exemple de sortie :

uid	                                   name	                      service_type	                   created
410e730f-8462-45fe-8b41-a029d6d6043a	My Azure ML Service engine azure_machine_learning_service2019-06-10T22:10:29.398Z

Ajouter un abonnement Microsoft Azure ML Service

Ajouter un abonnement

asset_deployment_details = wos_client.service_providers.list_assets(data_mart_id=data_mart_id, service_provider_id=service_provider_id).result
asset_deployment_details
 
deployment_id=''
for model_asset_details in asset_deployment_details['resources']:
    if model_asset_details['metadata']['guid']==deployment_id:
        break
 
azure_asset = Asset(
            asset_id=model_asset_details["entity"]["asset"]["asset_id"],
            name=model_asset_details["entity"]["asset"]["name"],
            url=model_asset_details["entity"]["asset"]["url"],
            asset_type=model_asset_details['entity']['asset']['asset_type'] if 'asset_type' in model_asset_details['entity']['asset'] else 'model',
            input_data_type=InputDataType.STRUCTURED,
            problem_type=ProblemType.BINARY_CLASSIFICATION
        )
 
deployment_scoring_endpoint = model_asset_details['entity']['scoring_endpoint']
scoring_endpoint = ScoringEndpointRequest(url = model_asset_details['entity']['scoring_endpoint']['url'],request_headers = model_asset_details['entity']['scoring_endpoint']['request_headers'],
                                                 credentials = None)  
 
deployment = AssetDeploymentRequest(
    deployment_id=model_asset_details['metadata']['guid'],
    url=model_asset_details['metadata']['url'],
    name=model_asset_details['entity']['name'],
    description=model_asset_details['entity']['description'],
    deployment_type=model_asset_details['entity']['type'],
    scoring_endpoint = scoring_endpoint
)
 
asset_properties = AssetPropertiesRequest(
        label_column="Risk ",
        prediction_field='Scored Labels',
        probability_fields=['Scored Probabilities'],
        training_data_reference=training_data_reference,
        training_data_schema=None,
        input_data_schema=None,
        output_data_schema=None,
    )
 
subscription_details = wos_client.subscriptions.add(
        data_mart_id=data_mart_id,
        service_provider_id=service_provider_id,
        asset=azure_asset,
        deployment=deployment,
        asset_properties=asset_properties,
        background_mode=False
).result

Obtenir la liste des abonnements

subscription_id = subscription_details.metadata.id
subscription_id
 
details: wos_client.subscriptions.get(subscription_id).result.to_dict()

Activer la journalisation du contenu utile

Activer la journalisation du contenu utile dans l'abonnement

payload_data_set_id = None
payload_data_set_id = wos_client.data_sets.list(type=DataSetTypes.PAYLOAD_LOGGING, 
                                                target_target_id=subscription_id, 
                                                target_target_type=TargetTypes.SUBSCRIPTION).result.data_sets[0].metadata.id

Obtenir les détails de la journalisation

subscription.payload_logging.get_details()

Evaluation et journalisation du contenu

Evaluez votre modèle. Pour un exemple complet, consultez le Bloc-notes Working with Azure Machine Learning Service Engine.

Stocker la demande et la réponse dans la table de journalisation du contenu :

wos_client.data_sets.store_records(data_set_id=payload_data_set_id, request_body=[PayloadRecord(
           scoring_id=str(uuid.uuid4()),
           request=request_data,
           response=response_data,
           response_time=460
)])

Pour les langages autres que Python, vous pouvez également journaliser le contenu utile en utilisant une API REST.

Rubrique parent : Moteurs d'apprentissage automatiques, infrastructures et modèles pris en charge

Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus