대기 시간 완화 및 성능 향상

이 가이드에서는 Face 서비스를 사용할 때 네트워크 대기 시간을 완화하고 서비스 성능을 향상시키는 방법을 설명합니다. 애플리케이션의 속도와 성능은 얼굴 식별 시스템을 등록하고 사용하는 사용자와 같은 최종 사용자의 환경에 영향을 줍니다.

대기 시간 완화

Face 서비스를 사용할 때 대기 시간이 발생할 수 있습니다. 대기 시간은 시스템이 네트워크를 통해 통신할 때 발생하는 모든 종류의 지연을 나타냅니다. 일반적으로 대기 시간의 가능한 원인은 다음과 같습니다.

  • 각 패킷이 원본에서 대상으로 이동해야 하는 실제 거리입니다.
  • 전송 매체와 관련된 문제.
  • 전송 경로를 따라 라우터 또는 스위치의 오류입니다.
  • 바이러스 백신 애플리케이션, 방화벽 및 기타 보안 메커니즘에서 패킷을 검사하는 데 필요한 시간.
  • 클라이언트 또는 서버 애플리케이션의 오작동.

이 섹션에서는 Azure AI Face 서비스와 관련된 다양한 대기 시간 원인을 완화하는 방법을 설명합니다.

참고 항목

Azure AI 서비스는 대기 시간과 관련하여 SLA(서비스 수준 계약)를 제공하지 않습니다.

Face 리소스에 적합한 지역 선택

네트워크 대기 시간, 정보가 원본(애플리케이션)에서 대상(Azure 리소스)으로 이동하는 데 걸리는 시간은 요청을 수행하는 애플리케이션과 해당 요청에 응답하는 Azure 서버 사이의 지리적 거리에 의해 크게 영향을 받습니다. 예를 들어 Face 리소스가 있는 EastUS경우 뉴욕의 사용자에 대한 응답 시간이 더 빨라지고 아시아의 사용자는 더 긴 지연을 경험합니다.

대기 시간을 최소화하려면 사용자와 가장 가까운 지역을 선택하는 것이 좋습니다. 사용자가 전 세계에 분산되어 있는 경우 여러 지역에 여러 리소스를 만들고 고객에게 가장 가까운 지역으로 요청을 라우팅하는 것이 좋습니다. 또는 모든 고객의 지리적 센터 근처에 있는 지역을 선택할 수 있습니다.

원격 URL Azure Blob Storage 사용

Face 서비스는 처리를 위해 이미지를 업로드하는 두 가지 방법을 제공합니다. 즉, 요청에 직접 이미지의 원시 바이트 데이터를 업로드하거나 원격 이미지에 URL을 제공합니다. 메서드에 관계없이 Face 서비스는 원본 위치에서 이미지를 다운로드해야 합니다. Face 서비스에서 클라이언트 또는 원격 서버로의 연결이 느리거나 좋지 않으면 요청의 응답 시간에 영향을 줍니다. 대기 시간에 문제가 있는 경우 Azure Blob Storage에 이미지를 저장하고 요청에 이미지 URL을 전달하는 것이 좋습니다. 자세한 구현 정보는 Azure Premium Blob Storage에 이미지 저장을 참조 하세요. 예제 API 호출:

var faces = await client.Face.DetectWithUrlAsync("https://<storage_account_name>.blob.core.windows.net/<container_name>/<file_name>");

Face 리소스와 동일한 지역의 스토리지 계정을 사용해야 합니다. 이렇게 하면 Face 서비스와 스토리지 계정 간의 연결 대기 시간이 줄어듭니다.

최적의 파일 크기 사용

사용하는 이미지 파일이 크면 다음 두 가지 방법으로 Face 서비스의 응답 시간에 영향을 줍니다.

  • 파일을 업로드하는 데 더 많은 시간이 걸립니다.
  • 파일 크기에 비례하여 파일을 처리하는 데 더 많은 시간이 걸립니다.

정확도와 네트워크 속도 간의 절충

입력 이미지의 품질은 Face 서비스의 정확도와 대기 시간 모두에 영향을 줍니다. 품질이 낮은 이미지는 잘못된 결과를 초래할 수 있습니다. 더 높은 품질의 이미지는 보다 정확한 해석을 가능하게 할 수 있습니다. 그러나 더 높은 품질의 이미지는 더 큰 파일 크기로 인해 네트워크 대기 시간도 증가합니다. 서비스는 클라이언트에서 전체 파일을 수신하고 파일 크기에 비례하여 처리하는 데 더 많은 시간이 필요합니다. 특정 수준 이상에서 추가 품질 향상은 정확도를 크게 향상시키지 않습니다.

정확도와 속도 간의 최적 균형을 달성하려면 다음 팁을 따라 입력 데이터를 최적화합니다.

기타 파일 크기 팁

다음 추가 팁에 유의하세요.

  • 얼굴 감지의 경우 감지 모델을 DetectionModel.Detection01사용하는 경우 이미지 파일 크기를 줄이면 처리 속도가 향상됩니다. 검색 모델을 DetectionModel.Detection02사용하는 경우 이미지 파일 크기를 줄이면 이미지 파일이 1920x1080 픽셀보다 작은 경우에만 처리 속도가 증가합니다.
  • 얼굴 인식의 경우 얼굴 크기를 줄이면 이미지가 200x200 픽셀보다 작은 경우에만 속도가 증가합니다.
  • 얼굴 감지 방법의 성능은 이미지에 있는 얼굴 수에 따라 달라집니다. Face 서비스는 이미지에 대해 최대 100개 얼굴을 반환할 수 있습니다. 얼굴은 큰 사각형 크기에서 작은 크기로 순위가 매겨집니다.

가능하면 병렬로 API 호출

여러 API를 호출해야 하는 경우 애플리케이션 디자인에서 허용하는 경우 병렬로 호출하는 것이 좋습니다. 예를 들어 얼굴 비교를 수행하기 위해 두 이미지에서 얼굴을 감지해야 하는 경우 비동기 작업에서 얼굴을 호출할 수 있습니다.

var faces_1 = client.Face.DetectWithUrlAsync("https://www.biography.com/.image/t_share/MTQ1MzAyNzYzOTgxNTE0NTEz/john-f-kennedy---mini-biography.jpg");
var faces_2 = client.Face.DetectWithUrlAsync("https://www.biography.com/.image/t_share/MTQ1NDY3OTIxMzExNzM3NjE3/john-f-kennedy---debating-richard-nixon.jpg");

Task.WaitAll (new Task<IList<DetectedFace>>[] { faces_1, faces_2 });
IEnumerable<DetectedFace> results = faces_1.Result.Concat (faces_2.Result);

뾰족한 트래픽을 통해 매끄럽게

Face 서비스의 성능은 트래픽 급증의 영향을 받을 수 있으며 이로 인해 제한, 낮은 처리량 및 더 높은 대기 시간이 발생할 수 있습니다. API 호출 빈도를 점진적으로 늘리고 즉시 다시 시도하지 않는 것이 좋습니다. 예를 들어 얼굴 감지를 수행할 사진이 3000개인 경우 동시에 3000개의 요청을 보내지 마세요. 대신 5분(즉, 초당 약 10개 요청)에 걸쳐 3000개의 요청을 순차적으로 전송하여 네트워크 트래픽의 일관성을 높입니다. 완료 시간을 줄이려면 트래픽을 원활하게 하기 위해 초당 호출 수를 점진적으로 늘입니다. 오류가 발생하면 오류를 효과적으로 처리하여 응답을 처리합니다.

오류를 효과적으로 처리

이 오류 429503 다양한 이유로 Face API 호출에서 발생할 수 있습니다. 애플리케이션은 항상 이러한 오류를 처리할 준비가 되어 있어야 합니다. 몇 가지 권장 사항입니다.

HTTP 오류 코드 설명 권장
429 제한 동시 호출로 속도 제한이 발생할 수 있습니다. 호출 빈도를 줄이고 지수 백오프를 사용하여 다시 시도해야 합니다. 즉각적인 재시도를 피하고 동시에 수많은 요청을 다시 보내지 않도록 합니다.

제한을 늘리려면 할당량 가이드의 증가 요청 섹션을 참조하세요.
503 서비스 이용 불가 서비스가 사용 중일 수 있으며 요청에 즉시 응답하지 못할 수 있습니다. 오류 429와 유사한 백오프 전략을 채택해야 합니다.

안정성 및 지원 보장

다음은 애플리케이션의 안정성과 높은 지원을 보장하기 위한 다른 팁입니다.

  • HTTP 요청 헤더로 고유한 GUID를 client-request-id 생성하고 각 요청과 함께 보냅니다. 이렇게 하면 Microsoft에서 문제를 보고해야 하는 경우 Microsoft에서 오류를 보다 쉽게 조사할 수 있습니다.
    • 예기치 않은 응답이 client-request-id 발생할 때 받은 응답과 응답을 항상 기록합니다. 도움이 필요한 경우 Azure 리소스 ID 및 문제가 발생한 기간과 함께 Microsoft 지원 이 정보를 제공합니다.
  • 애플리케이션을 프로덕션으로 릴리스하기 전에 파일럿 테스트를 수행합니다. 애플리케이션이 오류를 적절하고 효과적으로 처리할 수 있는지 확인합니다.

다음 단계

이 가이드에서는 Face 서비스를 사용할 때 성능을 향상시키는 방법을 알아보았습니다. 다음으로, 자습서에 따라 서버 쪽 논리와 클라이언트 쪽 논리를 결합하여 사용자에 대한 얼굴 활동 감지를 수행하는 작동하는 소프트웨어 솔루션을 설정합니다.