온라인 엔드포인트 자동 크기 조정

적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)

자동 크기 조정은 애플리케이션의 로드를 처리하기 위해 적절한 양의 리소스를 자동으로 실행합니다. 온라인 엔드포인트는 Azure Monitor 자동 크기 조정 기능과의 통합을 통해 자동 크기 조정을 지원합니다.

Azure Monitor 자동 크기 조정은 다양한 규칙 집합을 지원합니다. 메트릭 기반 조정(예: CPU 사용률 >70%), 일정 기반 조정(예: 최대 업무 시간에 대한 조정 규칙) 또는 조합을 구성할 수 있습니다. 자세한 내용은 Microsoft Azure의 자동 크기 조정 개요를 참조하세요.

Diagram for autoscale adding/removing instance as needed

현재 Azure CLI, REST, ARM 또는 브라우저 기반 Azure Portal을 사용하여 자동 크기 조정을 관리할 수 있습니다. Python SDK와 같은 다른 Azure Machine Learning SDK는 시간이 지남에 따라 지원을 추가합니다.

필수 조건

자동 크기 조정 프로필 정의

엔드포인트에 대한 자동 크기 조정을 사용하도록 설정하려면 먼저 자동 크기 조정 프로필을 정의합니다. 이 프로필은 기본, 최소, 최대 확장 집합 용량을 정의합니다. 다음 예에서는 기본 및 최소 용량을 2개의 VM 인스턴스로 설정하고 최대 용량을 5개로 설정합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

다음 코드 조각은 엔드포인트 및 배포 이름을 설정합니다.

# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue

다음으로 배포 및 엔드포인트의 Azure Resource Manager ID를 가져옵니다.

# ARM id of the deployment
DEPLOYMENT_RESOURCE_ID=$(az ml online-deployment show -e $ENDPOINT_NAME -n $DEPLOYMENT_NAME -o tsv --query "id")
# ARM id of the deployment. todo: change to --query "id"
ENDPOINT_RESOURCE_ID=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query "properties.\"azureml.onlineendpointid\"")
# set a unique name for autoscale settings for this deployment. The below will append a random number to make the name unique.
AUTOSCALE_SETTINGS_NAME=autoscale-$ENDPOINT_NAME-$DEPLOYMENT_NAME-`echo $RANDOM`

다음 코드 조각은 자동 크기 조정 프로필을 만듭니다.

az monitor autoscale create \
  --name $AUTOSCALE_SETTINGS_NAME \
  --resource $DEPLOYMENT_RESOURCE_ID \
  --min-count 2 --max-count 5 --count 2

참고 항목

자세한 내용은 자동 크기 조정 참조 페이지를 참조하세요.

메트릭을 사용하여 스케일 아웃하는 규칙 만들기

일반적인 크기 조정 규칙은 평균 CPU 로드가 높을 때 VM 인스턴스 수를 늘리는 규칙입니다. 다음 예는 CPU가 5분 동안 평균 70% 이상의 로드를 할당하는 경우 두 개의 추가 노드(최대값까지)를 할당합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage > 70 avg 5m" \
  --scale out 2

규칙은 my-scale-settings 프로필의 일부입니다(autoscale-name은 프로필의 name과 일치). condition 인수의 값은 "VM 인스턴스 간의 평균 CPU 소비가 5분 동안 70%를 초과할 때" 규칙이 트리거되어야 한다고 말합니다. 해당 조건이 충족되면 두 개의 VM 인스턴스가 추가로 할당됩니다.

참고 항목

CLI 구문에 대한 자세한 내용은 az monitor autoscale을 참조하세요.

메트릭을 사용하여 스케일 인하는 규칙 만들기

부하가 적을 때 스케일 인 규칙으로 VM 인스턴스 수를 줄일 수 있습니다. 다음 예에서는 CPU 부하가 5분 동안 30% 미만인 경우 단일 노드를 최소 2개까지 해제합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage < 25 avg 5m" \
  --scale in 1

엔드포인트 지표를 기반으로 조정 규칙 만들기

배포에 적용된 이전 규칙입니다. 이제 엔드포인트에 적용되는 규칙을 추가합니다. 이 예에서 요청 대기 시간이 5분 동안 평균 70밀리초보다 크면 다른 노드를 할당합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az monitor autoscale rule create \
 --autoscale-name $AUTOSCALE_SETTINGS_NAME \
 --condition "RequestLatency > 70 avg 5m" \
 --scale out 1 \
 --resource $ENDPOINT_RESOURCE_ID

일정에 따라 스케일링 규칙 만들기

특정 요일이나 특정 시간에만 적용되는 규칙을 만들 수도 있습니다. 이 예에서 노드 수는 주말에 2로 설정됩니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az monitor autoscale profile create \
  --name weekend-profile \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --min-count 2 --count 2 --max-count 2 \
  --recurrence week sat sun --timezone "Pacific Standard Time"

리소스 삭제

배포를 사용하지 않으려면 다음과 같이 삭제합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

# delete the autoscaling profile
az monitor autoscale delete -n "$AUTOSCALE_SETTINGS_NAME"

# delete the endpoint
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait

다음 단계

Azure Monitor를 사용한 자동 크기 조정에 대해 자세히 알아보려면 다음 문서를 참조하세요.