다음을 통해 공유


Azure Machine Learning에서 온라인 엔드포인트 자동 크기 조정

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

이 문서에서는 메트릭 및 일정에 따라 자동 크기 조정을 구성하여 배포에서 리소스 사용량을 관리하는 방법을 알아봅니다. 자동 크기 조정 프로세스를 사용하면 적절한 양의 리소스를 자동으로 실행하여 애플리케이션의 부하를 처리할 수 있습니다. Azure Machine Learning의 Online 엔드포인트는 Azure Monitor의 자동 크기 조정 기능과의 통합을 통해 자동 크기 조정을 지원합니다.

Azure Monitor 자동 크기 조정을 사용하면 규칙 조건이 충족될 때 하나 이상의 자동 크기 조정 작업을 트리거하는 규칙을 설정할 수 있습니다. 메트릭 기반 크기 조정(예: CPU 사용률이 70% 초과), 일정 기반 크기 조정(예: 최대 업무 시간에 대한 크기 조정 규칙) 또는 둘의 조합을 구성할 수 있습니다. 자세한 내용은 Microsoft Azure의 자동 크기 조정 개요를 참조하세요.

필요에 따라 자동 크기 조정이 인스턴스를 추가하고 제거하는 방법을 보여 주는 다이어그램

현재 Azure CLI, REST API, Azure Resource Manager, Python SDK 또는 브라우저 기반 Azure Portal을 사용하여 자동 크기 조정을 관리할 수 있습니다.

필수 조건

  • 배포된 엔드포인트. 자세한 내용은 온라인 엔드포인트를 사용하여 기계 학습 모델 배포 및 점수 매기기를 참조하세요.

  • 자동 크기 조정을 사용하려면 자동 크기 조정을 관리하는 ID에 microsoft.insights/autoscalesettings/write 역할을 할당해야 합니다. 이 작업을 허용하는 기본 제공 또는 사용자 지정 역할을 사용할 수 있습니다. Azure Machine Learning의 역할 관리에 대한 일반적인 지침은 사용자 및 역할 관리를 참조하세요. Azure Monitor의 자동 크기 조정 설정에 대한 자세한 내용은 Microsoft.Insights 자동 크기 조정을 참조하세요.

  • Python SDK를 사용하여 Azure Monitor 서비스를 관리하려면 다음 명령을 사용하여 azure-mgmt-monitor 패키지를 설치합니다.

    pip install azure-mgmt-monitor
    

자동 크기 조정 프로필 정의

온라인 엔드포인트에 대해 자동 크기 조정을 사용하도록 설정하려면 먼저 자동 크기 조정 프로필을 정의합니다. 프로필은 기본, 최소 및 최대 확장 집합 용량을 지정합니다. 다음 예제에서는 기본, 최소 및 최대 크기 조정 용량에 대한 VM(가상 머신) 인스턴스 수를 설정하는 방법을 보여 줍니다.

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

Azure CLI에 대한 기본값을 아직 설정하지 않은 경우 기본 설정을 저장합니다. 구독, 작업 영역 및 리소스 그룹에 대한 값을 여러 번 전달하지 않으려면 다음 코드를 실행하세요.

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
  1. 엔드포인트 및 배포 이름을 설정합니다.

    # set your existing endpoint name
    ENDPOINT_NAME=your-endpoint-name
    DEPLOYMENT_NAME=blue
    
  2. 배포 및 엔드포인트의 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`
    
  3. 자동 크기 조정 프로필을 만듭니다.

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

참고 항목

자세한 내용은 az monitor 자동 크기 조정을 참조를 참조하세요.

배포 메트릭에 따라 스케일 아웃 규칙 만들기

일반적인 스케일 아웃 규칙은 평균 CPU 부하가 높을 때 VM 인스턴스 수를 늘리는 것입니다. 다음 예제에서는 CPU 평균 부하가 5분 동안 70%보다 큰 경우 최대 2개의 노드를 더 할당하는 방법을 보여 줍니다.

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

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

규칙은 autoscale-name 프로필의 name 부분과 일치하는 my-scale-settings 프로필의 일부입니다. 규칙 condition 인수의 값은 "VM 인스턴스 간의 평균 CPU 사용량이 5분 동안 70%를 초과할 때" 규칙이 트리거되는 것을 나타냅니다. 조건이 충족되면 두 개의 VM 인스턴스가 더 할당됩니다.

참고 항목

자세한 내용은 az monitor autoscale Azure CLI 구문 참조를 참조하세요.

배포 메트릭에 따라 규모 감축 규칙 만들기

평균 CPU 로드가 가벼우면 스케일 인 규칙이 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

지원되는 메트릭에 대한 ID 찾기

코드에서 다른 메트릭을 사용하여 Azure CLI 또는 SDK를 사용하여 자동 크기 조정 규칙을 설정하려면 사용 가능한 메트릭 표를 참조하세요.

일정에 따라 크기 조정 규칙 만들기

특정 요일이나 특정 시간에만 적용되는 규칙을 만들 수도 있습니다. 이 섹션에서는 주말에 노드 수를 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(현재)

az monitor autoscale update \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --enabled false

리소스 삭제

배포를 사용하지 않을 경우 다음 단계를 수행하여 리소스를 삭제합니다.

적용 대상: 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