기계 학습 사용자 지정 기술
기계 학습 사용자 지정 기술을 사용하는 것은 검색 인덱스에 다른 사용자 지정 기술을 추가하는 것과 동일하게 작동합니다.
여기서는 AmlSkill
사용자 지정 기술 사용이 어떻게 다른지 확인하고 이를 효과적으로 사용하는 방법에 대한 고려 사항을 살펴봅니다.
사용자 지정 Azure Machine Learning 기술 스키마
AML(Azure Machine Learning) 사용자 지정 기술로 검색 인덱스를 보강할 경우 문서 수준에서 보강이 수행됩니다. 문서 인덱서에서 사용하는 기술 세트에는 AmlSkill
이 포함됩니다. 이 기술의 스키마는 다음과 같습니다.
{
"@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
"name": "AML name",
"description": "AML description",
"context": "/document",
"uri": "https://[Your AML endpoint]",
"key": "Your AML endpoint key",
"resourceId": null,
"region": null,
"timeout": "PT30S",
"degreeOfParallelism": 1,
"inputs": [
{
"name": "field name in the AML model",
"source": "field from the document in the index"
},
{
"name": "field name in the AML model",
"source": "field from the document in the index"
},
],
"outputs": [
{
"name": "result field from the AML model",
"targetName": "result field in the document"
}
]
}
중요
URI는 HTTPS 엔드포인트를 사용해야 합니다. Microsoft에서 제공하는 관리형 사용자 지정 URL 주소 또는 사용자 고유의 도메인 이름 및 인증서일 수 있습니다.
AML 모델은 한 번에 하나의 문서만 처리하므로 사용자 지정 기술에는 batchSize
에 대한 설정이 포함되지 않습니다. 기술의 성능을 제어하는 나머지 설정은 timeout
및 degreeOfParallelism
입니다. 위의 스키마는 시간 제한 값으로 30초를 설정했습니다. 병렬 처리 수준은 1에서 시작해야 합니다. 인프라에 따라 이 수를 늘릴 수 있습니다.
AML 기술의 효율성을 관리하는 가장 좋은 방법은 Kubernetes 유추 클러스터를 적절하게 확장하여 워크로드를 관리하는 것입니다.
문서의 인덱스에는 AML 모델의 결과를 저장할 필드가 필요합니다. 그런 다음, 출력 필드 매핑을 추가하여 사용자 지정 기술 집합의 결과를 인덱스의 문서 필드에 저장합니다.
이 출력 필드 매핑을 수행하는 JSON은 다음과 같습니다.
"outputFieldMappings": [
{
"sourceFieldName": "/result field in the document",
"targetFieldName": "result field from the AML model"
}
]
Python SDK, REST API 또는 Azure CLI와 같은 개발자 도구를 사용하여 Azure Machine Learning 모델을 만듭니다. 또 다른 옵션은 코드를 작성하지 않고 모델을 만들고 학습시키고 배포할 수 있는 그래픽 사용자 인터페이스인 Azure AI Machine Learning 스튜디오를 활용하는 것입니다.
만들어진 모델로 채점 코드가 사용자 지정 검색 기술에서 사용할 수 있도록 모델을 호출하는 방법을 변경합니다.
마지막 단계는 모델에 대한 엔드포인트를 호스트하는 Kubernetes 클러스터를 만드는 것입니다.
AML 작업 영역 만들기
AML 작업 영역을 만들 때 Azure는 스토리지 계정, 키 저장소 및 Application Insights 리소스도 만듭니다. AML 작업 영역 개요 창에는 Azure AI Machine Learning Studio를 시작할 수 있는 링크가 제공됩니다.
Azure Machine Learning 스튜디오 모델 만들기 및 학습
Azure AI Machine Learning Studio를 사용하면 디자이너를 통해 끌어서 놓기를 사용하여 모델을 만들고 학습시키는 파이프라인을 만들 수 있습니다. 미리 빌드된 템플릿을 사용하여 모델을 만드는 더 쉬운 방법이 있습니다.
그러나 모델을 만들기로 선택한 경우 모델을 웹 서비스에 배포할 수 있도록 Azure AI Machine Learning Studio에 등록해야 합니다.
AML 사용자 지정 기술에서 모델을 호출할 수 있도록 모델 작동 방식을 변경합니다.
학습시키는 모델은 일반적으로 데이터의 많은 예제를 사용합니다. 데이터 세트에는 많은 행이 있으며 분할되어 모델을 학습시키고 테스트하는 데 사용됩니다. 이 데이터를 처리하고 모델에 전달하는 코드는 단일 행을 처리하도록 변경해야 합니다.
모델의 JSON 응답에는 출력 예측만 포함되어야 합니다.
예를 들어 데이터가 JSON 개체의 배열인 경우:
[
{
"attribute-1": null,
"attribute-2": null
},
{
"attribute-1": null,
"attribute-2": null
},
{
"attribute-1": null,
"attribute-2": null
}
]
Python 채점 코드는 데이터를 한 번에 한 행으로 처리해야 합니다.
data = json.loads(data)
for row in data:
for key, val in row.items():
input_entry[key].append(decode_nan(val))
입력 데이터 세트를 단일 레코드로 변경하려면 다음을 수행합니다.
{
"attribute-1": null,
"attribute-2": null
}
Python 코드는 다음으로 변경해야 합니다.
data = json.loads(data)
for key, val in data.items():
input_entry[key].append(decode_nan(val))
채점 코드의 응답에 대해 기본 코드는 전체 JSON 문서를 반환합니다.
return json.dumps({"result": result.data_frame.values.tolist()})
사용자 지정 기술은 모델에서 단일 응답을 매핑할 수 있어야 합니다. 따라서 코드는 마지막 특성인 JSON만 반환해야 합니다.
output = result.data_frame.values.tolist()
# return the last column of the the first row of the dataframe
return {
"predicted_outcome": output[0][-1]
}
모델에서 사용할 엔드포인트 만들기
모델은 엔드포인트에 배포됩니다. Azure AI Machine Learning Studio는 실시간 엔드포인트, 일괄 처리 엔드포인트 또는 웹 서비스에 모델 배포를 지원합니다. 현재 Azure AI 검색의 사용자 지정 AmlSkill
기술은 웹 서비스 엔드포인트만 지원합니다.
또 다른 제한 사항은 엔드포인트가 AKS(Azure Kubernetes Service) 클러스터여야 한다는 것입니다. 컨테이너 인스턴스는 지원되지 않습니다.
AKS 클러스터를 만들고 관리한 경험이 있는 경우 Azure Portal에 클러스터를 수동으로 만들고 엔드포인트를 만들 때 이를 참조할 수 있습니다. 그러나 더 쉬운 옵션은 Azure AI Machine Learning Studio에서 클러스터를 만들고 관리하도록 하는 것입니다.
스튜디오의 컴퓨팅 섹션으로 이동하면 유추 클러스터를 만들 수 있습니다. 그러면 AML 스튜디오는 클러스터 크기를 선택하는 방법을 안내하고 심지어 HTTPS를 사용하도록 설정하고 도메인 이름을 만들 수도 있습니다. location.cloudapp.azure.com:443
형식이 됩니다.
엔드포인트에 AML 사용자 지정 기술 연결
위에서 설명한 모든 사항이 준비되면 Azure AI 검색 서비스를 업데이트해야 합니다. 해당 작업을 수행하기 위한 단계는 본 모듈에서 보여준 예와 비슷하므로, 여기서는 구체적인 내용을 설명하지 않고 따라야 할 단계만 나열할 예정입니다.
- 먼저 검색 인덱스의 보강을 위해 모델에 대한 출력을 포함하도록 인덱스에 새 필드를 추가합니다.
- 그런 다음, 인덱스 기술 세트를 업데이트하고 사용자 지정
#Microsoft.Skills.Custom.AmlSkill
기술을 추가합니다. - 다음으로, 인덱서가 사용자 지정 기술의 출력을 인덱스에서 만든 필드에 매핑하도록 변경합니다.
- 마지막 단계는 인덱서를 다시 실행하여 AML 모델을 사용하여 인덱스 보강하는 것입니다.