Intégrer le stockage Azure pour les notifications et la sauvegarde
Vous pouvez intégrer votre projet Custom Vision à une file d’attente de stockage d’objets blob Azure pour recevoir des notifications Push de l’activité d’apprentissage/exportation du projet. Cette fonctionnalité évite de devoir interroger continuellement les résultats du service lors de l’exécution d’opérations de longue durée. En effet, vous pouvez intégrer les notifications de la file d’attente de stockage à votre workflow.
Vous pouvez également utiliser Stockage Azure pour stocker des copies de sauvegarde de vos modèles publiés.
Ce guide vous montre comment utiliser ces API REST avec cURL. Vous pouvez également utiliser un service de requête HTTP, comme le client REST pour Visual Studio Code, pour effectuer les requêtes.
Remarque
Les notifications push dépendent du paramètre facultatif notificationQueueUri de l’API CreateProject, et les sauvegardes de modèle impliquent que vous utilisiez également le paramètre facultatif exportModelContainerUri. Ce guide utilise ces deux paramètres pour l’ensemble complet des fonctionnalités.
Prérequis
- Une ressource Azure Custom Vision. À défaut, accédez au portail Azure et créez une ressource Custom Vision.
Remarque
Cette fonctionnalité ne prend actuellement pas en charge la ressource multiservice Azure AI services.
- Compte Stockage Azure avec conteneur d’objets blob. Suivez le guide de démarrage rapide du stockage si vous avez besoin d’aide pour cette étape.
- PowerShell version 6.0+ ou une application en ligne de commande similaire.
Configurer l’intégration du stockage Azure
Accédez à votre ressource d’apprentissage Custom Vision sur le portail Azure, sélectionnez la page Identité, puis activez Identité managée affectée par le système.
Ensuite, accédez à votre ressource de stockage dans le portail Azue. Accédez à la page Contrôle d’accès (IAM) , puis sélectionnez Ajouter une attribution de rôle (préversion) . Ajoutez ensuite une attribution de rôle pour l’une des fonctionnalités d’intégration ou les deux :
- Si vous envisagez d’utiliser la fonctionnalité de sauvegarde de modèle, sélectionnez le rôle Contributeur aux données Blob du stockage et ajoutez votre ressource d’entraînement Custom Vision comme membre. Sélectionnez Vérifier + attribuer pour terminer.
- Si vous envisagez d’utiliser la fonctionnalité de file d’attente de notification, sélectionnez le rôle Contributeur aux données en file d’attente du stockage et ajoutez votre ressource d’entraînement Custom Vision comme membre. Sélectionnez Vérifier + attribuer pour terminer.
Pour obtenir de l’aide concernant les attributions de rôle, consultez Attribuer des rôles Azure à l’aide du portail Azure.
Obtenir les URL d'intégration
Vous obtenez ensuite les URL qui permettent à votre ressource Custom Vision d’accéder à ces points de terminaison.
Pour l’URL d’intégration de la file d’attente de notification, accédez à la page Files d’attente de votre compte de stockage, ajoutez une nouvelle file d’attente, puis enregistrez son URL dans un emplacement temporaire.
Pour l’URL d’intégration de la sauvegarde de modèle, accédez à la page Conteneurs de votre compte de stockage et créez un conteneur. Sélectionnez-le, puis accédez à la page Propriétés. Copiez l’URL dans un emplacement temporaire.
Intégrer un projet Custom Vision
Maintenant que vous disposez des URL d’intégration, vous pouvez créer un projet Custom Vision intégrant les fonctionnalités Stockage Azure. Vous pouvez également mettre à jour un projet existant pour ajouter les fonctionnalités.
Lorsque vous appelez l’API CreateProject, ajoutez les paramètres facultatifs exportModelContainerUri et notificationQueueUri. Attribuez les valeurs d’URL obtenues dans la section précédente.
curl -v -X POST "{endpoint}/customvision/v3.3/Training/projects?exportModelContainerUri={inputUri}¬ificationQueueUri={inputUri}&name={inputName}"
-H "Training-key: {subscription key}"
Si vous recevez une réponse 200/OK
, cela signifie que les URL ont été configurées avec succès. Les valeurs d’URL doivent également s’afficher dans la réponse JSON :
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"settings": {
"domainId": "00000000-0000-0000-0000-000000000000",
"classificationType": "Multiclass",
"targetExportPlatforms": [
"CoreML"
],
"useNegativeSet": true,
"detectionParameters": "string",
"imageProcessingSettings": {
"augmentationMethods": {}
},
"exportModelContainerUri": {url}
"notificationQueueUri": {url}
},
"created": "string",
"lastModified": "string",
"thumbnailUri": "string",
"drModeEnabled": true,
"status": "Succeeded"
}
Vérifier la connexion
Votre appel d’API de la section précédente doit avoir déjà déclenché de nouvelles informations dans votre compte Stockage Azure.
Votre conteneur désigné doit contenir un objet blob de test dans un dossier CustomVision-TestPermission. Cet objet blob est temporaire.
Dans votre file d’attente de notification, une notification de test au format suivant doit s’afficher :
{
"version": "1.0" ,
"type": "ConnectionTest",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000"
}
}
Recevoir des notifications d'événements
Lorsque vous êtes prêt, appelez l’API TrainProject sur votre projet pour effectuer une opération d’apprentissage classique.
Dans votre file d’attente de notification de stockage, vous recevrez une notification une fois l’opération terminée :
{
"version": "1.0" ,
"type": "Training",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000",
"iterationId": "00000000-0000-0000-0000-000000000000",
"trainingStatus": "TrainingCompleted"
}
}
Le champ "trainingStatus"
peut être "TrainingCompleted"
ou "TrainingFailed"
. Le champ "iterationId"
correspond à l’ID du modèle formé.
Obtenir des sauvegardes d’exportation de modèle
Lorsque vous êtes prêt, appelez l’API ExportIteration pour exporter un modèle formé dans une plateforme spécifiée.
Dans votre conteneur de stockage désigné, une copie de sauvegarde du modèle exporté s’affiche. Le nom de l’objet blob se présentera comme suit :
{projectId} - {iterationId}.{platformType}
En outre, vous recevrez une notification dans votre file d’attente une fois l’exportation terminée.
{
"version": "1.0" ,
"type": "Export",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000",
"iterationId": "00000000-0000-0000-0000-000000000000",
"exportStatus": "ExportCompleted",
"modelUri": {url}
}
}
Le champ "exportStatus"
peut être "ExportCompleted"
ou "ExportFailed"
. Le champ "modelUri"
contient l’URL du modèle de sauvegarde stocké dans votre conteneur, sous réserve que vous ayez intégré les notifications de la file d’attente au début. Dans le cas contraire, le champ "modelUri"
affichera l’URL SAS de votre objet blob de modèle Custom Vision.
Étapes suivantes
Dans ce guide, vous avez vu comment copier et sauvegarder un projet d’une ressource Custom Vision vers une autre. Explorez à présent la documentation de référence sur les API pour voir ce que vous pouvez faire d’autre avec Custom Vision.