Integrowanie usługi Azure Storage na potrzeby powiadomień i kopii zapasowych
Projekt usługi Custom Vision można zintegrować z kolejką usługi Azure Blob Storage, aby otrzymywać powiadomienia wypychane dotyczące trenowania/eksportowania projektu. Ta funkcja jest przydatna, aby uniknąć ciągłego sondowania usługi pod kątem wyników, gdy długotrwałe operacje są uruchomione. Zamiast tego możesz zintegrować powiadomienia kolejki magazynu z przepływem pracy.
Możesz również użyć usługi Azure Storage do przechowywania kopii zapasowych opublikowanych modeli.
W tym przewodniku pokazano, jak używać tych interfejsów API REST z biblioteką cURL. Możesz również użyć usługi żądań HTTP, takiej jak klient REST dla programu Visual Studio Code, aby wysyłać żądania.
Uwaga
Powiadomienia wypychane zależą od opcjonalnego parametru notificationQueueUri w interfejsie API CreateProject , a kopie zapasowe modelu wymagają również użycia opcjonalnego parametru exportModelContainerUri . Ten przewodnik będzie używany zarówno dla pełnego zestawu funkcji.
Wymagania wstępne
- Zasób usługi Azure Custom Vision. Jeśli go nie masz, przejdź do witryny Azure Portal i utwórz nowy zasób usługi Custom Vision.
Uwaga
Ta funkcja nie obsługuje zasobów wielosługowych usług Azure AI.
- Konto usługi Azure Storage z kontenerem obiektów blob. Jeśli potrzebujesz pomocy dotyczącej tego kroku, postępuj zgodnie z przewodnikiem Szybki start dotyczący usługi Storage.
- PowerShell w wersji 6.0 lub podobnej aplikacji wiersza polecenia.
Konfigurowanie integracji usługi Azure Storage
Przejdź do zasobu szkoleniowego usługi Custom Vision w witrynie Azure Portal, wybierz stronę Tożsamość i włącz tożsamość zarządzaną przypisaną przez system.
Następnie przejdź do zasobu magazynu w witrynie Azure Portal. Przejdź do strony Kontrola dostępu (Zarządzanie dostępem i tożsamościami) i wybierz pozycję Dodaj przypisanie roli (wersja zapoznawcza). Następnie dodaj przypisanie roli dla funkcji integracji lub obu tych funkcji:
- Jeśli planujesz używać funkcji tworzenia kopii zapasowej modelu, wybierz rolę Współautor danych obiektu blob usługi Storage i dodaj zasób trenowania usługi Custom Vision jako członek. Wybierz pozycję Przejrzyj i przypisz , aby ukończyć.
- Jeśli planujesz używać funkcji kolejki powiadomień, wybierz rolę Współautor danych kolejki magazynu i dodaj zasób trenowania usługi Custom Vision jako członek. Wybierz pozycję Przejrzyj i przypisz , aby ukończyć.
Aby uzyskać pomoc dotyczącą przypisań ról, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Uzyskiwanie adresów URL integracji
Następnie uzyskasz adresy URL, które umożliwiają zasobowi usługi Custom Vision dostęp do tych punktów końcowych.
Aby uzyskać adres URL integracji kolejki powiadomień, przejdź do strony Kolejki konta magazynu, dodaj nową kolejkę i zapisz jej adres URL w lokalizacji tymczasowej.
Aby uzyskać adres URL integracji kopii zapasowej modelu, przejdź do strony Kontenery konta magazynu i utwórz nowy kontener. Następnie wybierz go i przejdź do strony Właściwości . Skopiuj adres URL do lokalizacji tymczasowej.
Integrowanie projektu usługi Custom Vision
Teraz, gdy masz adresy URL integracji, możesz utworzyć nowy projekt usługi Custom Vision, który integruje funkcje usługi Azure Storage. Możesz również zaktualizować istniejący projekt, aby dodać funkcje.
Po wywołaniu interfejsu API CreateProject dodaj opcjonalne parametry exportModelContainerUri i notificationQueueUri. Przypisz wartości adresu URL, które uzyskasz w poprzedniej sekcji.
curl -v -X POST "{endpoint}/customvision/v3.3/Training/projects?exportModelContainerUri={inputUri}¬ificationQueueUri={inputUri}&name={inputName}"
-H "Training-key: {subscription key}"
Jeśli otrzymasz 200/OK
odpowiedź, oznacza to, że adresy URL zostały skonfigurowane pomyślnie. Wartości adresu URL powinny być również widoczne w odpowiedzi 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"
}
Weryfikowanie połączenia
Wywołanie interfejsu API w poprzedniej sekcji powinno już wyzwolić nowe informacje na koncie usługi Azure Storage.
W wyznaczonym kontenerze powinien znajdować się testowy obiekt blob w folderze CustomVision-TestPermission . Ten obiekt blob będzie istniał tymczasowo.
W kolejce powiadomień powinno zostać wyświetlone powiadomienie testowe w następującym formacie:
{
"version": "1.0" ,
"type": "ConnectionTest",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000"
}
}
Pobieranie powiadomień o zdarzeniach
Gdy wszystko będzie gotowe, wywołaj interfejs API TrainProject w projekcie, aby wykonać zwykłą operację trenowania.
W kolejce powiadomień usługi Storage otrzymasz powiadomienie po zakończeniu trenowania:
{
"version": "1.0" ,
"type": "Training",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000",
"iterationId": "00000000-0000-0000-0000-000000000000",
"trainingStatus": "TrainingCompleted"
}
}
Pole "trainingStatus"
może mieć wartość "TrainingCompleted"
lub "TrainingFailed"
. Pole "iterationId"
to identyfikator wytrenowanego modelu.
Pobieranie kopii zapasowych eksportu modelu
Gdy wszystko będzie gotowe, wywołaj interfejs API ExportIteration , aby wyeksportować wytrenowany model do określonej platformy.
W wyznaczonym kontenerze magazynu zostanie wyświetlona kopia zapasowa wyeksportowanego modelu. Nazwa obiektu blob będzie mieć format:
{projectId} - {iterationId}.{platformType}
Ponadto po zakończeniu eksportu otrzymasz powiadomienie w kolejce.
{
"version": "1.0" ,
"type": "Export",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000",
"iterationId": "00000000-0000-0000-0000-000000000000",
"exportStatus": "ExportCompleted",
"modelUri": {url}
}
}
Pole "exportStatus"
może mieć wartość "ExportCompleted"
lub "ExportFailed"
. Pole "modelUri"
będzie zawierać adres URL modelu kopii zapasowej przechowywanego w kontenerze przy założeniu, że zintegrowane powiadomienia w kolejce na początku. Jeśli tak nie jest, "modelUri"
w polu zostanie wyświetlony adres URL sygnatury dostępu współdzielonego dla obiektu blob modelu usługi Custom Vision.
Następny krok
W tym przewodniku przedstawiono sposób kopiowania i tworzenia kopii zapasowej projektu między zasobami usługi Custom Vision. Następnie zapoznaj się z dokumentacją referencyjną interfejsu API, aby zobaczyć, co jeszcze można zrobić za pomocą usługi Custom Vision.