사용자 지정 기술을 효율적으로 스케일 아웃
사용자 지정 기술은 특정 인터페이스를 구현하는 웹 API입니다. 사용자 지정 기술은 공개적으로 주소 지정 가능한 모든 리소스에서 구현할 수 있습니다. 사용자 지정 기술에 가장 일반적인 구현은 다음과 같습니다.
- 사용자 지정 논리 기술을 위한 Azure Functions
- 간단한 컨테이너화된 AI 기술을 위한 Azure 웹앱
- 더 복잡하거나 더 대규모인 기술을 위한 Azure Kubernetes Service.
기술 세트 구성
사용자 지정 기술의 다음 속성은 크기 조정에 사용됩니다. 사용자 지정 기술이 구현해야 하는 입력 및 출력에 대한 소개는 사용자 지정 기술 인터페이스를 검토합니다.
단일 기술 호출에서 기술에 전송되는 레코드 수를 구성하려면 사용자 지정 기술의
batchSize
를 설정합니다.인덱서가 기술에 대해 수행하는 동시 요청 수를 보정하려면
degreeOfParallelism
을(를) 설정합니다.기술이 유효한 응답으로 대응하기에 충분한 값으로
timeout
을 설정합니다.indexer
정의에서batchSize
를 데이터 원본에서 읽고 동시에 보강해야 하는 문서 수로 설정합니다.
고려 사항
"모든 크기에 맞는" 권장 사항 집합은 없습니다. 최적의 결과에 도달하기 위해 다양한 구성을 테스트할 계획을 세워야 합니다. 스케일 업 전략은 적은 대규모 요청 또는 많은 작은 요청을 기반으로 합니다.
기술 호출 카디널리티: 사용자 지정 기술이 각 문서에 대해 한 번 실행되는지(
/document/content
) 또는 문서당 여러 번 실행되는지(/document/reviews_text/pages/*
) 여부를 알고 있어야 합니다. 문서당 여러 번 실행되는 경우 변동을 줄이기 위해batchSize
및degreeOfParallelism
의 아래쪽에 유지하고 더 확장하기 위해 인덱서 일괄 처리 크기를 증분 방식으로 더 높은 값으로 설정해 보세요.사용자 지정 기술
batchSize
및 인덱서batchSize
을(를) 조정하고 병목 현상이 발생하지 않도록 합니다. 예를 들어 인덱서 일괄 처리 크기가 5이고 기술 일괄 처리 크기가 50인 경우 사용자 지정 기술 요청을 채우려면 10개의 인덱서 일괄 처리가 필요합니다. 이상적으로 기술 일괄 처리 크기는 인덱서 일괄 처리 크기보다 작거나 같아야 합니다.degreeOfParallelism
의 경우 인덱서 일괄 처리에서 생성할 수 있는 평균 요청 수를 사용하여 이 값을 설정하는 방법을 결정합니다. 기술을 호스팅하는 인프라(예: Azure 함수)가 높은 수준의 동시성을 지원할 수 없는 경우 병렬 처리 수준을 낮추는 것이 좋습니다. 몇 가지 문서로 구성을 테스트하여 평균 요청 수에 대한 이해를 확인할 수 있습니다.개체가 크고 대용량을 지원하지만, 더 작은 문서 샘플을 사용하여 테스트하면 다양한 실행 단계를 정량화하는 데 도움이 됩니다. 예를 들어 문서의 하위 집합을 처리하는 데 걸린 전체 시간을 기준으로 기술의 실행 시간을 평가할 수 있습니다. 이렇게 하면 ‘인덱서가 배치를 작성하는 데 더 많은 시간을 소비합니까, 아니면 기술의 응답을 기다리는 데 더 많은 시간을 소비합니까?’라는 질문에 답변하는 데 도움이 됩니다.
병렬 처리의 업스트림 영향을 고려합니다. 사용자 지정 기술에 대한 입력이 이전 기술의 출력인 경우 대기 시간을 최소화하기 위해 기술 세트의 모든 기술이 효과적으로 스케일 아웃되나요?
사용자 지정 기술의 오류 처리
기술이 성공적으로 완료되면 사용자 지정 기술은 성공 상태 코드 HTTP 200을 반환해야 합니다. 일괄 처리에 있는 하나 이상의 레코드로 인해 오류가 발생하면 다중 상태 코드 207을 반환하는 것이 좋습니다. 레코드의 오류 또는 경고 목록에는 적절한 메시지가 포함되어야 합니다.
일괄 처리의 항목에서 오류가 발생하면 해당 문서에 오류가 발생합니다. 문서가 성공해야 하는 경우 경고를 반환합니다.
299가 넘는 상태 코드는 오류로 평가되고 모든 보강이 실패하므로 문서가 실패합니다.
일반적인 오류 메시지
Could not execute skill because it did not execute within the time limit '00:00:30'. This is likely transient. Please try again later. For custom skills, consider increasing the 'timeout' parameter on your skill in the skillset.
더 긴 실행 기간을 허용하려면 기술에 시간 제한 매개 변수를 설정합니다.Could not execute skill because Web Api skill response is invalid.
사용자 지정 기술 응답 형식으로 메시지를 반환하지 않는 기술을 나타냅니다. 기술에서 예외가 처리되지 않았기 때문일 수 있습니다.Could not execute skill because the Web Api request failed.
권한 부여 오류 또는 예외 때문에 발생할 가능성이 큽니다.Could not execute skill.
일반적으로 기술 응답의 결과는 문서 계층의 기존 속성에 매핑됩니다.
사용자 지정 기술 테스트
REST API 클라이언트로 사용자 지정 기술을 테스트하여 유효성 검사를 시작합니다.
기술은 요청 및 응답에 관한 사용자 지정 기술 인터페이스를 구현함
이 기술은
application/JSON
MIME 형식의 유효한 JSON을 반환함유효한 HTTP 상태 코드를 반환함
디버그 세션을 만들어 기술 세트에 기술을 추가하고 유효한 보강을 생성하는지 확인합니다. 디버그 세션에서는 기술의 성능을 조정할 수는 없지만, 기술이 유효한 값으로 구성되었는지 확인하고 예상되는 보강된 개체를 반환할 수 있습니다.
모범 사례
기술에서는 더 큰 페이로드를 수락하고 반환할 수 있지만, JSON 반환 시 응답을 150MB 이하로 제한하는 것이 좋습니다.
인덱서 및 기술에 일괄 처리 크기를 설정하여 각 데이터 원본 일괄 처리에서 기술에 맞는 전체 페이로드를 생성해야 합니다.
장기 작업의 경우 문서를 동시에 처리할 때 인덱서에서 오류가 발생하지 않도록 시간 제한을 충분히 높은 값으로 설정합니다.
인덱서 일괄 처리 크기, 기술 일괄 처리 크기 및 기술 병렬 처리 수준을 최적화하여 기술이 기대하는 부하 패턴을 생성하고 대규모 요청을 줄이거나 소규모 요청을 많이 생성합니다.
데이터 가변성으로 인해 특정 요청이 일관되게 실패하는 시나리오가 있을 수 있기 때문에 자세한 실패 로그를 사용하여 사용자 지정 기술을 모니터링합니다.