Integrieren von Azure-Speicher für Benachrichtigungen und Sicherungen
Sie können Ihr Custom Vision-Projekt in eine Azure Blob Storage-Warteschlange integrieren, um Pushbenachrichtigungen über Projektschulungs-/Exportaktivitäten zu erhalten. Dieses Feature ist hilfreich, um das ständige Abfragen des Diensts nach Ergebnissen zu vermeiden, wenn lange Vorgänge ausgeführt werden. Stattdessen können Sie die Benachrichtigungen für die Speicherwarteschlange in Ihren Workflow integrieren.
Sie können auch Azure Storage verwenden, um Sicherungskopien Ihrer veröffentlichten Modelle zu speichern.
In diesem Leitfaden wird veranschaulicht, wie Sie diese REST-APIs mit cURL verwenden. Sie können auch einen HTTP-Anforderungsdienst wie den REST-Client für Visual Studio Code verwenden, um die Anforderungen zu stellen.
Hinweis
Pushbenachrichtigungen sind vom optionalen Parameter notificationQueueUri in der CreateProject-API abhängig, und für Modellsicherungen müssen Sie zusätzlich den optionalen Parameter exportModelContainerUri verwenden. In diesem Leitfaden wird beides verwendet, damit alle Features vorhanden sind.
Voraussetzungen
- Eine Azure Custom Vision-Ressource. Falls Sie nicht über diese Ressource verfügen, wechseln Sie zum Azure-Portal und erstellen eine neue Custom Vision-Ressource.
Hinweis
Dieses Feature unterstützt nicht die Multi-Service-Ressource von Azure KI Services.
- Ein Azure Storage-Konto mit einem Blobcontainer. Befolgen Sie diese Storage-Schnellstartanleitung, wenn Sie Hilfe zu diesem Schritt benötigen.
- PowerShell ab Version 6.0 oder eine ähnliche Befehlszeilenanwendung
Einrichten der Azure-Speicherintegration
Navigieren Sie im Azure-Portal zu Ihrer Custom Vision-Trainingsressource, wählen Sie die Seite Identität aus, und aktivieren Sie die systemseitig zugewiesene verwaltete Identität.
Navigieren Sie als Nächstes im Azure-Portal zu Ihrer Speicherressource. Wechseln Sie zur Seite Zugriffssteuerung (IAM) , und wählen Sie dann Rollenzuweisung hinzufügen (Vorschau) aus. Fügen Sie dann eine Rollenzuweisung für eines der beiden oder für beide Integrationsfeatures hinzu:
- Wenn Sie die Verwendung des Features für die Modellsicherung planen, wählen Sie die Rolle Mitwirkender an Storage-Blobdaten aus, und fügen Sie Ihre Custom Vision-Trainingsressource als Mitglied hinzu. Wählen Sie zum Abschließen Überprüfen + zuweisen aus.
- Wenn Sie die Verwendung des Features für die Benachrichtigungswarteschlange planen, wählen Sie die Rolle Mitwirkender an Storage-Warteschlangendaten aus, und fügen Sie Ihre Custom Vision-Trainingsressource als Mitglied hinzu. Wählen Sie zum Abschließen Überprüfen + zuweisen aus.
Hilfe zu Rollenzuweisungen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.
Abrufen von Integrations-URLs
Als Nächstes rufen Sie die URLs ab, über die Ihre Custom Vision-Ressource auf diese Endpunkte zugreifen kann.
Sie können auf die Integrations-URL für die Benachrichtigungswarteschlange zugreifen, indem Sie zur Seite Warteschlangen Ihres Speicherkontos navigieren, eine neue Warteschlange hinzufügen und die zugehörige URL an einem temporären Speicherort speichern.
Sie können auf die Integrations-URL für die Modellsicherung zugreifen, indem Sie zur Seite Container Ihres Speicherkontos navigieren und einen neuen Container erstellen. Wählen Sie ihn anschließend aus, und navigieren Sie zur Seite Eigenschaften. Kopieren Sie die URL an einen temporären Speicherort.
Integrieren eines Custom Vision-Projekts
Da Sie nun über die Integrations-URLs verfügen, können Sie ein neues Custom Vision-Projekt erstellen, in dem die Azure Storage-Features integriert sind. Sie können auch ein vorhandenes Projekt aktualisieren, um die Features hinzuzufügen.
Fügen Sie beim Aufrufen der CreateProject-API die optionalen Parameter exportModelContainerUri und notificationQueueUri hinzu. Weisen Sie die URL-Werte zu, die Sie im vorherigen Abschnitt erhalten haben.
curl -v -X POST "{endpoint}/customvision/v3.3/Training/projects?exportModelContainerUri={inputUri}¬ificationQueueUri={inputUri}&name={inputName}"
-H "Training-key: {subscription key}"
Wenn Sie die Antwort 200/OK
erhalten, bedeutet dies, dass die Einrichtung der URLs erfolgreich war. In der JSON-Antwort sollten auch URL-Werte angezeigt werden:
{
"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"
}
Überprüfen der Verbindung
Durch Ihren API-Aufruf im vorherigen Abschnitt sollte bereits die Anzeige neuer Informationen in Ihrem Azure-Speicherkonto ausgelöst worden sein.
In Ihrem angegebenen Container sollte ein Testblob in einem Ordner mit dem Namen CustomVision-TestPermission enthalten sein. Dieses Blob ist nur vorübergehend vorhanden.
In Ihrer Benachrichtigungswarteschlange sollte eine Testbenachrichtigung im folgenden Format angezeigt werden:
{
"version": "1.0" ,
"type": "ConnectionTest",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000"
}
}
Abrufen von Ereignisbenachrichtigungen
Gehen Sie wie folgt vor, wenn Sie bereit sind: Rufen Sie die TrainProject-API in Ihrem Projekt auf, um einen regulären Trainingsvorgang durchzuführen.
In Ihrer Storage-Benachrichtigungswarteschlange erhalten Sie eine Benachrichtigung, nachdem der Trainingsvorgang abgeschlossen ist:
{
"version": "1.0" ,
"type": "Training",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000",
"iterationId": "00000000-0000-0000-0000-000000000000",
"trainingStatus": "TrainingCompleted"
}
}
Das Feld "trainingStatus"
kann entweder "TrainingCompleted"
oder "TrainingFailed"
enthalten. Das Feld "iterationId"
ist die ID des trainierten Modells.
Abrufen der Sicherungen von Modellexporten
Gehen Sie wie folgt vor, wenn Sie bereit sind: Rufen Sie die ExportIteration-API auf, um ein trainiertes Modell in eine angegebene Plattform zu exportieren.
Im angegebenen Speichercontainer wird eine Sicherungskopie des exportierten Modells angezeigt. Der Blobname hat das folgende Format:
{projectId} - {iterationId}.{platformType}
Außerdem erhalten Sie eine Benachrichtigung in Ihrer Warteschlange, nachdem der Exportvorgang abgeschlossen ist.
{
"version": "1.0" ,
"type": "Export",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000",
"iterationId": "00000000-0000-0000-0000-000000000000",
"exportStatus": "ExportCompleted",
"modelUri": {url}
}
}
Das Feld "exportStatus"
kann entweder "ExportCompleted"
oder "ExportFailed"
enthalten. Das Feld "modelUri"
enthält die URL des Sicherungsmodells, das in Ihrem Container gespeichert ist. Hierbei wird angenommen, dass Sie zu Beginn Warteschlangenbenachrichtigungen integriert haben. Falls nicht, wird im Feld "modelUri"
die SAS-URL für Ihr Blob mit dem Custom Vision-Modell angezeigt.
Nächste Schritte
In diesem Leitfaden wurde beschrieben, wie Sie ein Projekt zwischen Custom Vision-Ressourcen kopieren und sichern. Sehen Sie sich als Nächstes die API-Referenzdokumentation an, um sich über weitere Möglichkeiten bei der Verwendung von Custom Vision zu informieren.