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
Infrastructure | Type de problème | Type de données |
---|---|---|
Natif | Classification | Structuré |
scikit-learn | Classification | Structuré |
scikit-learn | Régression | Structuré |
Pour générer le modèle de détection de dérive, vous devez utiliser scikit-learn version 0.20.2 dans les blocs-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 :
- La première fois que vous ajoutez un fournisseur de services d'apprentissage automatique, vous pouvez utiliser l'interface de configuration. Pour plus d'informations, consultez Spécification d'une instance Microsoft Azure ML Service.
- Vous pouvez également ajouter votre fournisseur d'apprentissage automatique avec le SDK Python. Cette méthode est obligatoire si vous voulez avoir plusieurs fournisseurs. Pour plus d'informations, voir Ajoutez votre moteur d'apprentissage automatique Microsoft Azure.
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
- Créez un principal Azure Active Directory Service.
- 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. Ils doivent accepter des demandes JSON et retourner des réponses JSON remplissant les conditions ci-après.
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
,false
ounull
- 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 non
null
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
,null
ou un tableau qui ne contient aucun autre objet JSON ou tableauLes 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 non
null
disponiblePour 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
ouNo 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 ] } ]
- Exemple : supposons que vous ayez un modèle de classification binaire qui prédit le risque de crédit, les deux classes possibles étant
Par souci de cohérence vis-à-vis des outils visuels Azure ML utilisés tant dans Azure ML Studio que dans 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 blocs-notes
Les blocs-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 ', ajoutez un fournisseur d'apprentissage automatique, et cliquez sur l'icône Modifier ' 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.
- Locataire : votre ID de locataire 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 d'abonnement : données d'identification 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.
Consignation de la charge utile 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 consignation de la charge utile
Activer la consignation de la charge 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 consignation
subscription.payload_logging.get_details()
Evaluation et consignation de la charge utile
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 consignation de la charge utile :
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 consigner la charge utile, à l'aide d'une API REST.
Rubrique parent : Moteurs d'apprentissage automatiques, infrastructures et modèles pris en charge