Azure Machine Learning 컴퓨팅 클러스터 만들기

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

이 문서에서는 Azure Machine Learning 작업 영역에서 컴퓨팅 클러스터를 만들고 관리하는 방법을 설명합니다.

Azure Machine Learning 컴퓨팅 클러스터를 사용하여 클라우드의 CPU 또는 GPU 컴퓨팅 노드 클러스터에 학습 또는 일괄 처리 유추 프로세스를 배포할 수 있습니다. GPU를 포함하는 VM 크기에 대한 자세한 내용은 GPU 최적화 가상 머신 크기를 참조하세요.

다음의 방법을 알아보세요.

  • 컴퓨팅 클러스터를 만듭니다.
  • 낮은 우선 순위 VM으로 컴퓨팅 클러스터 비용을 낮춥니다.
  • 클러스터에 대한 관리 ID를 설정합니다.

참고 항목

컴퓨팅 클러스터를 만드는 대신 서버리스 컴퓨팅을 사용하여 컴퓨팅 수명 주기 관리를 Azure Machine Learning으로 오프로드합니다.

필수 조건

  • Azure Machine Learning 작업 영역 자세한 내용은 Azure Machine Learning 작업 영역 관리를 참조하세요.

  • Machine Learning Service(v2)에 대한 Azure CLI 확장, Azure Machine Learning Python SDK 또는 Azure Machine Learning Visual Studio Code 확장.

  • Python SDK를 사용하는 경우 작업 영역으로 개발 환경을 설정합니다. 환경이 설정되면 Python 스크립트의 작업 영역에 연결합니다.

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

    이 코드를 실행하여 Azure ML 작업 영역에 연결합니다.

    아래 코드에서 구독 ID, 리소스 그룹 이름 및 작업 영역 이름을 바꿉니다. 이러한 값을 찾으려면 다음을 수행합니다.

    1. Azure Machine Learning Studio에 로그인합니다.
    2. 사용하려는 작업 영역을 엽니다.
    3. 오른쪽 위 Azure Machine Learning 스튜디오 도구 모음에서 작업 영역 이름을 선택합니다.
    4. 작업 영역, 리소스 그룹 및 구독 ID의 값을 코드에 복사합니다.
    5. 스튜디오 내에서 Notebook을 사용하는 경우 하나의 값을 복사하고 영역을 닫고 붙여넣은 다음, 다음으로 돌아가야 합니다.
    # Enter details of your AML workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AML_WORKSPACE_NAME>"
    # get a handle to the workspace
    from azure.ai.ml import MLClient
    from azure.identity import DefaultAzureCredential
    
    ml_client = MLClient(
        DefaultAzureCredential(), subscription_id, resource_group, workspace
    )

    ml_client는 다른 리소스와 작업을 관리하는 데 사용할 작업 영역에 대한 처리기입니다.

컴퓨팅 클러스터란?

Azure Machine Learning 컴퓨팅 클러스터는 사용자가 단일 또는 다중 노드 컴퓨팅을 간편하게 만들 수 있는 관리형 컴퓨팅 인프라입니다. 컴퓨팅 클러스터는 작업 영역의 다른 사용자와 공유할 수 있는 리소스입니다. 작업이 제출될 때 컴퓨팅이 자동으로 확장되어 Azure Virtual Network에 배치될 수 있습니다. 컴퓨팅 클러스터는 가상 네트워크에서 공용 IP 배포도 지원하지 않습니다. 컴퓨팅은 컨테이너화된 환경에서 실행되며 모델 종속성을 Docker 컨테이너로 패키지합니다.

컴퓨팅 클러스터는 기업이 SSH 포트를 열지 않고도 관리되는 가상 네트워크 또는 Azure Virtual Network에서 작업을 안전하게 실행할 수 있습니다. 작업은 컨테이너화된 환경에서 실행되며 모델 종속성을 Docker 컨테이너로 패키지합니다.

제한 사항

  • 컴퓨팅 클러스터를 작업 영역과 다른 지역에 만들 수 있습니다. 이 기능은 컴퓨팅 인스턴스가 아닌 컴퓨팅 클러스터에서만 사용할 수 있습니다.

    Warning

    작업 영역이나 데이터 저장소와 다른 지역에서 컴퓨팅 클러스터를 사용하는 경우 네트워크 대기 시간과 데이터 전송 비용이 증가할 수 있습니다. 클러스터를 생성할 때와 클러스터에서 작업을 실행할 때 대기 시간과 비용이 발생할 수 있습니다.

  • Azure Machine Learning 컴퓨팅에는 할당할 수 있는 코어 수와 같은 기본적인 제한이 있습니다. 자세한 내용은 Azure 리소스에 대한 할당량 관리 및 요청을 참조하세요.

  • Azure를 사용하면 리소스를 삭제할 수 없도록 하거나 읽기 전용이 되도록 리소스에 잠금을 설정할 수 있습니다. 작업 영역을 포함하는 리소스 그룹에 리소스 잠금을 적용하지 마세요. 작업 영역이 포함된 리소스 그룹에 잠금을 적용하면 Azure Machine Learning 컴퓨팅 클러스터에 대한 크기 조정 작업이 방지됩니다. 리소스 잠금에 대한 자세한 내용은 예기치 않은 변경을 방지하기 위한 리소스 잠금을 참조하세요.

만들기

예상 시간: 약 5분.

참고 항목

서버리스 컴퓨팅을 사용하는 경우 컴퓨팅 클러스터를 만들 필요가 없습니다.

Azure Machine Learning 컴퓨팅은 실행 전반에서 다시 사용할 수 있습니다. 컴퓨팅은 작업 영역에 있는 다른 사용자와 공유할 수 있으며, 실행 간에 유지되고 제출된 실행 수와 클러스터에 설정된 max_nodes에 따라 노드를 자동으로 확장 또는 축소합니다. min_nodes 설정은 사용 가능한 최소 노드 수를 제어합니다.

컴퓨터 클러스터 만들기에 적용되는 VM 제품군 할당량 및 총 지역 할당량당 지역별 전용 코어는 Azure Machine Learning 학습 컴퓨팅 클러스터 할당량과 통합되고 공유됩니다.

Important

실행 중인 작업이 없는 경우 요금이 부과되지 않도록 최소 노드를 0으로 설정합니다. 이 설정을 사용하면 Azure Machine Learning에서 사용하지 않을 때 노드를 할당 취소할 수 있습니다. 0보다 큰 값은 사용하지 않더라도 실행 중인 노드 수가 유지됩니다.

사용되지 않는 경우 컴퓨팅은 0개 노드로 자동 축소됩니다. 필요에 따라 작업을 실행하기 위해 전용 VM이 만들어집니다.

다음 예를 사용하여 컴퓨팅 클러스터를 만듭니다.

Python에서 영구적 Azure Machine Learning 컴퓨팅 리소스를 만들려면 sizemax_instances 속성을 지정합니다. 그런 다음, Azure Machine Learning은 다른 속성에 스마트 기본값을 사용합니다.

  • size: Azure Machine Learning 컴퓨팅에서 만든 노드의 VM 제품군입니다.
  • max_instances: Azure Machine Learning 컴퓨팅에서 작업을 실행할 때 자동으로 확장할 최대 노드 수입니다.

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

from azure.ai.ml.entities import AmlCompute

cluster_basic = AmlCompute(
    name="basic-example",
    type="amlcompute",
    size="STANDARD_DS3_v2",
    location="westus",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
)
ml_client.begin_create_or_update(cluster_basic).result()

Azure Machine Learning 컴퓨팅을 만들 때 여러 고급 속성을 구성할 수도 있습니다. 속성을 사용하면 고정 크기로 또는 구독의 기존 Azure Virtual Network 내에서 영구적 클러스터를 만들 수 있습니다. 자세한 내용은 AmlCompute 클래스를 참조하세요.

Warning

location 매개 변수를 설정할 때 작업 영역이나 데이터 저장소와 다른 지역인 경우 네트워크 대기 시간과 데이터 전송 비용이 증가할 수 있습니다. 클러스터를 생성할 때와 클러스터에서 작업을 실행할 때 대기 시간과 비용이 발생할 수 있습니다.

낮은 우선 순위 VM으로 컴퓨팅 클러스터 비용 절감

낮은 우선 순위 VM을 사용하여 워크로드의 일부 또는 전체를 실행하도록 선택할 수도 있습니다. 이러한 VM은 가용성이 보장되지 않고 사용 중에 선점될 수 있습니다. 선점된 작업을 다시 시작해야 합니다.

Azure 낮은 우선 순위 Virtual Machines를 사용하면 Azure의 사용되지 않는 용량을 활용하여 비용을 크게 절감할 수 있습니다. Azure에 용량이 다시 필요할 때마다 Azure 인프라는 Azure 낮은 우선 순위 Virtual Machines를 제거합니다. 따라서 Azure 낮은 우선 순위 가상 머신은 중단을 처리할 수 있는 워크로드에 적합합니다. 사용 가능한 용량의 크기는 크기, 지역, 하루 중 시간 등에 따라 달라질 수 있습니다. Azure 낮은 우선 순위 Virtual Machines를 배포할 때 Azure는 사용 가능한 용량이 있는 경우 VM을 할당하지만 이러한 VM에 대한 SLA는 없습니다. Azure 낮은 우선 순위 Virtual Machine은 고가용성을 보장하지 않습니다. Azure에 용량이 다시 필요할 때마다 Azure 인프라는 Azure 낮은 우선 순위 Virtual Machines를 제거합니다.

이러한 방법 중 하나를 사용하여 우선 순위가 낮은 VM을 지정합니다.

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

from azure.ai.ml.entities import AmlCompute

cluster_low_pri = AmlCompute(
    name="low-pri-example",
    size="STANDARD_DS3_v2",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
    tier="low_priority",
)
ml_client.begin_create_or_update(cluster_low_pri).result()

관리 ID 설정

컴퓨팅 클러스터를 사용하여 관리 ID를 구성하는 방법에 대한 자세한 내용은 Azure Machine Learning 및 기타 서비스 간의 인증 설정을 참조하세요.

문제 해결

GA 릴리스 전에 Azure Portal에서 Azure Machine Learning 작업 영역을 만든 일부 사용자가 해당 작업 영역에서 AmlCompute를 만들 수 없는 경우가 있을 수 있습니다. 서비스에 대해 지원 요청을 제기하거나 포털 또는 SDK를 통해 새 작업 영역을 만들어 즉시 차단을 직접 해제할 수 있습니다.

Important

컴퓨팅 인스턴스 또는 컴퓨팅 클러스터가 이러한 시리즈를 기반으로 하는 경우 서비스 중단을 방지하려면 사용 중지 날짜 전에 다른 VM 크기로 다시 만듭니다.

다음 시리즈는 2023년 8월 31일에 사용 중지됩니다.

다음 시리즈는 2024년 8월 31일에 사용 중지됩니다.

크기 조정 시 중단

Azure Machine Learning 컴퓨팅 클러스터가 노드 상태에 대한 크기 조정(0 -> 0)에서 멈춘 것처럼 보이는 경우 Azure 리소스 잠금이 원인일 수 있습니다.

Azure를 사용하면 리소스를 삭제하거나 읽기 전용이 되도록 리소스에 잠금을 설정할 수 있습니다. 리소스를 잠그면 예기치 않은 결과가 발생할 수 있습니다. 리소스를 수정하지 않는 것처럼 보이는 일부 작업에는 실제로 잠금에 의해 차단되는 작업이 필요합니다.

Azure Machine Learning을 사용하여 작업 영역의 리소스 그룹에 삭제 잠금을 적용하면 Azure ML 컴퓨팅 클러스터에 대한 크기 조정 작업이 차단됩니다. 이 문제를 해결하려면 리소스 그룹에서 잠금을 제거하고 대신 그룹의 개별 항목에 적용하는 것이 좋습니다.

Important

다음 리소스에 잠금을 적용하지 마십시오.

리소스 이름 리소스 종류
<GUID>-azurebatch-cloudservicenetworksecurityggroup 네트워크 보안 그룹
<GUID>-azurebatch-cloudservicepublicip 공용 IP 주소
<GUID>-azurebatch-cloudserviceloadbalancer 부하 분산 장치

이러한 리소스는 컴퓨팅 클러스터와 통신하고 크기 조정 등의 작업을 수행하는 데 사용됩니다. 이러한 리소스에서 리소스 잠금을 제거하면 컴퓨팅 클러스터에 자동 크기 조정을 사용할 수 있습니다.

리소스 잠금에 대한 자세한 내용은 예기치 않은 변경을 방지하기 위해 리소스 잠금을 참조하세요.

다음 단계

컴퓨팅 클러스터를 사용하여 다음을 수행합니다.