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

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.

Strona kolejki usługi Azure Storage

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.

Strona właściwości kontenera usługi Azure Storage

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}&notificationQueueUri={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ępne kroki

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.