다음을 통해 공유


알림 및 백업을 위해 Azure Storage 통합

Custom Vision 프로젝트를 Azure Blob Storage 큐와 통합하여 프로젝트 학습/내보내기 작업에 대한 푸시 알림을 가져올 수 있습니다. 이 기능은 작업이 오래 실행될 때 결과를 위해 서비스를 지속적으로 폴링하는 것을 방지하는 데 유용합니다. 대신 스토리지 큐 알림을 워크플로에 통합할 수 있습니다.

Azure Storage를 사용하여 게시된 모델의 백업 복사본을 저장할 수도 있습니다.

이 가이드에서는 cURL로 이러한 REST API를 사용하는 방법을 보여 줍니다. Visual Studio Code용 REST 클라이언트와 같은 HTTP 요청 서비스를 사용하여 요청할 수도 있습니다.

참고 항목

푸시 알림은 CreateProject API의 선택적 notificationQueueUri 매개 변수에 따라 달라지고, 모델 백업에도 선택적 exportModelContainerUri 매개 변수를 사용해야 합니다. 이 가이드에서는 전체 기능 집합에 대해 둘 다 사용합니다.

필수 조건

Azure Storage 통합 설정

Azure Portal에서 Custom Vision 학습 리소스로 이동하여 ID 페이지를 선택하고 시스템이 할당한 관리 ID를 사용하도록 설정합니다.

다음으로 Azure Portal의 스토리지 리소스로 이동합니다. 리소스의 액세스 제어(IAM) 페이지로 이동한 후 + 역할 할당 추가(미리 보기)를 선택합니다. 그런 다음, 통합 기능 중 하나 또는 둘 모두에 대한 역할 할당을 추가합니다.

  • 모델 백업 기능을 사용할 계획인 경우 Storage Blob 데이터 기여자 역할을 선택하고 Custom Vision 학습 리소스를 구성원으로 추가합니다. 검토 및 게시를 선택하여 완료합니다.
  • 알림 큐 기능을 사용할 계획인 경우 Storage Queue 데이터 기여자 역할을 선택하고 Custom Vision 학습 리소스를 구성원으로 추가합니다. 검토 및 게시를 선택하여 완료합니다.

역할 할당에 대한 도움말을 보려면 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

통합 URL 가져오기

다음으로 Custom Vision 리소스가 이러한 엔드포인트에 액세스할 수 있도록 하는 URL을 얻습니다.

알림 큐 통합 URL의 경우 스토리지 계정의 페이지로 이동하여 새 큐를 추가하고 해당 URL을 임시 위치에 저장합니다.

Azure 스토리지 큐 페이지

모델 백업 통합 URL의 경우 스토리지 계정의 컨테이너 페이지로 이동하여 새 컨테이너를 만듭니다. 그런 다음 이를 선택하고 속성 페이지로 이동합니다. URL을 임시 위치에 복사합니다.

Azure 스토리지 컨테이너 속성 페이지

Custom Vision 프로젝트 통합

이제 통합 URL이 있으므로 Azure Storage 기능을 통합하는 새 Custom Vision 프로젝트를 만들 수 있습니다. 또한 기존 프로젝트를 업데이트하여 기능을 추가할 수 있습니다.

CreateProject API를 호출할 때 선택적 매개 변수 exportModelContainerUrinotificationQueueUri를 추가합니다. 이전 섹션에서 얻은 URL 값을 할당합니다.

curl -v -X POST "{endpoint}/customvision/v3.3/Training/projects?exportModelContainerUri={inputUri}&notificationQueueUri={inputUri}&name={inputName}"
-H "Training-key: {subscription key}"

200/OK 응답을 수신한 경우 이는 URL이 성공적으로 설정되었음을 의미합니다. JSON 응답에도 URL 값이 표시되어야 합니다.

{
  "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"
}

연결 확인

이전 섹션의 API 호출은 Azure Storage 계정에서 새 정보를 이미 트리거했어야 합니다.

지정된 컨테이너에서 CustomVision-TestPermission 폴더 안에 테스트 BLOB이 있어야 합니다. 이 BLOB은 일시적으로만 존재합니다.

알림 큐에 다음과 같은 형식의 테스트 알림이 있어야 합니다.

{
"version": "1.0" ,
"type": "ConnectionTest",
"Content":
    {
    "projectId": "00000000-0000-0000-0000-000000000000"
    }
}

이벤트 알림 받기

준비가 되면 프로젝트에서 TrainProject API를 호출하여 일반적인 학습 작업을 수행합니다.

스토리지 알림 큐에서 학습이 완료되는 대로 알림을 받게 됩니다.

{
"version": "1.0" ,
"type": "Training",
"Content":
    {
    "projectId": "00000000-0000-0000-0000-000000000000",
    "iterationId": "00000000-0000-0000-0000-000000000000",
    "trainingStatus": "TrainingCompleted"
    }
}

"trainingStatus" 필드는 "TrainingCompleted" 또는 "TrainingFailed" 중 하나일 수 있습니다. "iterationId" 필드는 학습된 모델의 ID입니다.

모델 내보내기 백업 가져오기

준비가 되면 ExportIteration API를 호출하여 학습된 모델을 지정된 플랫폼으로 내보냅니다.

지정된 스토리지 컨테이너에 내보낸 모델의 백업 복사본이 표시됩니다. BLOB 이름의 형식은 다음과 같습니다.

{projectId} - {iterationId}.{platformType}

또한 내보내기가 완료될 때 큐에서 알림을 받게 됩니다.

{
"version": "1.0" ,
"type": "Export",
"Content":
    {
    "projectId": "00000000-0000-0000-0000-000000000000",
    "iterationId": "00000000-0000-0000-0000-000000000000",
    "exportStatus": "ExportCompleted",
    "modelUri": {url}
    }
}

"exportStatus" 필드는 "ExportCompleted" 또는 "ExportFailed" 중 하나일 수 있습니다. "modelUri" 필드에는 처음에 큐 알림을 통합했다고 가정하고 컨테이너에 저장된 백업 모델의 URL이 포함됩니다. 통합하지 않았다면 "modelUri" 필드에는 Custom Vision 모델 BLOB용 SAS URL이 표시됩니다.

다음 단계

이 가이드에서는 Custom Vision 리소스 간에 프로젝트를 복사하고 백업하는 방법을 알아보았습니다. 다음으로 API 참조 문서를 탐색하여 Custom Vision으로 수행할 수 있는 다른 작업을 살펴봅니다.