Infrastructures Microsoft Azure ML Studio
Vous pouvez utiliser ML Studio d' Microsoft Azure pour enregistrer des données de charge utile ou de retour d'expérience, et pour mesurer la précision des performances, la détection des biais en exécution, l'explicabilité et les résultats de la correction automatique des biais pour les modèles déployés lorsque vous évaluez ces derniers.
Les frameworks Microsoft Azure Machine Learning Studio suivants sont entièrement pris en charge pour l'évaluation des modèles :
Tableau 1. Détails des infrastructures prises en charge
| Infrastructure | Type de problème | Type de données |
|---|---|---|
| Natif | Classification | Structuré |
| Natif | Régression | Structuré |
Azure Les points de terminaison d'instances de conteneurs personnalisés sont pris en charge pour les évaluations de modèles.
Ajouter Microsoft Azure ML Studio
Vous pouvez configurer les évaluations de modèles pour qu'elles fonctionnent avec Microsoft Azure ML Studio en utilisant l'une des méthodes suivantes :
- La première fois que vous ajoutez un fournisseur d'apprentissage automatique, vous pouvez utiliser l'interface de configuration. Pour plus d'informations, consultez la section « Spécification d'une instance ML Studio d' Microsoft Azure ».
- 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 sur la mise en œuvre de cette fonctionnalité par programmation, consultez la section « Ajouter votre moteur d'apprentissage automatique à l' Microsoft Azure ».
Exemples de bloc-notes
Le cahier suivant explique comment utiliser ML Studio d' Microsoft Azure :
Explorer plus avant
Utiliser un modèle d' Azure Machine Learning s déployé sous forme de service web
Spécification d'une instance Microsoft Azure ML Studio
La première étape dans l'outil « Watson OpenScale » consiste à spécifier une instance d' Microsoft Azure ML Studio. Votre instance Azure ML Studio est l'endroit où vous stockez vos modèles et déploiements d'IA.
Vous pouvez également ajouter votre fournisseur d'apprentissage automatique avec le SDK Python. Pour plus d'informations, consultez la section « Ajouter votre moteur d'apprentissage automatique à l' Microsoft Azure ».
Connecter votre instance Azure ML Studio
Vous pouvez vous connecter à des modèles d'IA et à des déploiements dans une instance d' Azure ML Studio afin d'évaluer ces modèles. Pour connecter votre service, accédez à l'onglet «
Configurer », ajoutez un fournisseur d'apprentissage automatique, puis cliquez sur l'icône
« Modifier ». Outre le nom, la description et la nature de l'environnement ( pré-production ou 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 Studio.
- Secret client : chaîne du secret, qui vérifie qui vous êtes et authentifie et autorise les appels que vous faites à Azure Studio.
- Locataire : votre ID de locataire correspond à votre organisation et est une instance dédiée d'Azure AD. Pour trouver l'ID du tenant, passez la souris sur le nom de votre compte afin d'afficher l'ID du répertoire et du tenant, ou sélectionnez « Azure » Active Directory > Propriétés > ID du répertoire dans le portail Azure.
- ID d'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. Consultez la rubrique « Comment : utiliser le portail pour créer une application et un principal de service AD d' Azure s pouvant accéder aux ressources » pour obtenir des instructions sur la manière d'obtenir vos identifiants Microsoft Azure.
Journalisation du contenu utile avec le moteur Microsoft Azure Machine Learning Studio
Ajoutez votre moteur d'apprentissage automatique d' Microsoft Azure
Un moteur non- IBM Watson Machine Learning est associé en tant que « Custom », ce qui signifie qu'il s'agit uniquement de métadonnées; il n'y a pas d'intégration directe avec le service non- IBM Watson Machine Learning.
AZURE_ENGINE_CREDENTIALS = {
"client_id": "",
"client_secret": "",
"subscription_id": "",
"tenant": ""
}
wos_client.service_providers.add(
name=SERVICE_PROVIDER_NAME,
description=SERVICE_PROVIDER_DESCRIPTION,
service_type=ServiceTypes.AZURE_MACHINE_LEARNING,
#deployment_space_id = WML_SPACE_ID,
#operational_space_id = "production",
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
Pour consulter votre abonnement au service, exécutez la commande suivante :
client.service_providers.list()
Ajouter un abonnement Microsoft Azure ML Studio
Ajoutez l'abonnement en adaptant l'exemple de code suivant :
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
Pour obtenir la liste des abonnés, exécutez le code suivant :
subscription_id = subscription_details.metadata.id
subscription_id
details: wos_client.subscriptions.get(subscription_id).result.to_dict()
Activer la journalisation du contenu utile
Pour activer la journalisation des données utiles, exécutez le code suivant :
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
payload store:
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 obtenir les détails des journaux, exécutez la commande suivante :
subscription.payload_logging.get_details()
Evaluation et journalisation du contenu utile
Evaluez votre modèle. Pour un exemple complet, consultez le cahier « Utilisation du moteur Studio d' Azure Machine Learning ».
Pour enregistrer la requête et la réponse dans la table de journalisation des données utiles, utilisez le code suivant :
records_list = [PayloadRecord(request=request_data, response=response_data, response_time=response_time),
PayloadRecord(request=request_data, response=response_data, response_time=response_time)]
for i in range(1, 10):
records_list.append(PayloadRecord(request=request_data, response=response_data, response_time=response_time))
subscription.payload_logging.store(records=records_list)
Pour les langages autres qu' Python, vous pouvez également enregistrer les données de charge utile à l'aide d'une API REST.