Azure Machine Learning CLI, SDK 및 REST API를 사용하여 모델 학습

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

Azure Machine Learning은 ML 학습 작업을 제출하는 여러 가지 방법을 제공합니다. 이 문서에서는 다음 방법을 사용하여 작업을 제출하는 방법을 알아봅니다.

  • 기계 학습용 Azure CLI 확장: CLI v2라고도 하는 ml 확장입니다.
  • Azure Machine Learning용 Python SDK v2.
  • REST API: CLI 및 SDK가 빌드된 API입니다.

필수 구성 요소

SDK 정보를 사용하려면 Azure Machine Learning Python용 SDK v2를 설치합니다.

예제 리포지토리 복제

이 문서의 코드 조각은 Azure Machine Learning 예제 GitHub 리포지토리의 예제를 기반으로 합니다. 리포지토리를 개발 환경에 복제하려면 다음 명령을 사용합니다.

git clone --depth 1 https://github.com/Azure/azureml-examples

--depth 1을 사용하여 최신 커밋만 리포지토리에 복제하여 작업을 완료하는 데 걸리는 시간을 줄입니다.

예제 작업

이 문서의 예에서는 붓꽃 데이터 세트를 사용하여 MLFlow 모델을 학습합니다.

클라우드에서 학습

클라우드에서 학습할 때 Azure Machine Learning 작업 영역에 연결하고 학습 작업을 실행하는 데 사용할 컴퓨팅 리소스를 선택해야 합니다.

1. 작업 영역에 연결

아래 탭을 사용하여 모델 학습에 사용할 방법을 선택합니다. 탭을 선택하면 이 문서의 모든 탭이 동일한 탭으로 자동 전환됩니다. 언제든지 다른 탭을 선택할 수 있습니다.

작업 영역에 연결하려면 구독, 리소스 그룹 및 작업 영역 이름과 같은 식별자 매개 변수가 필요합니다. azure.ai.ml 네임스페이스의 MLClient에서 이러한 세부 정보를 사용하여 필요한 Azure Machine Learning 작업 영역에 대한 핸들을 가져옵니다. 인증하려면 기본 Azure 인증을 사용합니다. 자격 증명을 구성하고 작업 영역에 연결하는 방법에 대한 자세한 내용은 이 를 확인합니다.

#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'

#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)

2. 학습용 컴퓨팅 리소스 만들기

참고 항목

서버리스 컴퓨팅을 시도하려면 이 단계를 건너뛰고 3. 학습 작업 제출을 진행합니다.

Azure Machine Learning 컴퓨팅 클러스터는 학습 작업을 실행하는 데 사용할 수 있는 완전 관리형 컴퓨팅 리소스입니다. 다음 예에서는 cpu-compute라는 컴퓨팅 클러스터가 만들어집니다.

from azure.ai.ml.entities import AmlCompute

# specify aml compute name.
cpu_compute_target = "cpu-cluster"

try:
    ml_client.compute.get(cpu_compute_target)
except Exception:
    print("Creating a new cpu compute target...")
    compute = AmlCompute(
        name=cpu_compute_target, size="STANDARD_D2_V2", min_instances=0, max_instances=4
    )
    ml_client.compute.begin_create_or_update(compute).result()

3. 학습 작업 제출

이 스크립트를 실행하려면 ./sdk/python/jobs/single-step/lightgbm/iris/src/ 아래에 있는 main.py Python 스크립트를 실행하는 command를 사용합니다. 명령은 Azure Machine Learning에 job으로 제출하여 실행됩니다.

참고 항목

서버리스 컴퓨팅을 사용하려면 이 코드에서 compute="cpu-cluster"를 삭제합니다.

from azure.ai.ml import command, Input

# define the command
command_job = command(
    code="./src",
    command="python main.py --iris-csv ${{inputs.iris_csv}} --learning-rate ${{inputs.learning_rate}} --boosting ${{inputs.boosting}}",
    environment="AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu@latest",
    inputs={
        "iris_csv": Input(
            type="uri_file",
            path="https://azuremlexamples.blob.core.windows.net/datasets/iris.csv",
        ),
        "learning_rate": 0.9,
        "boosting": "gbdt",
    },
    compute="cpu-cluster",
)
# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url

위의 예에서는 다음을 구성했습니다.

  • code - 명령을 실행할 코드가 있는 경로
  • command - 실행해야 하는 명령
  • environment - 학습 스크립트를 실행하는 데 필요한 환경입니다. 이 예에서는 AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu라는 Azure Machine Learning에서 제공하는 큐레이트되거나 미리 만들어진 환경을 사용합니다. @latest 지시문을 사용하여 이 환경의 최신 버전을 사용합니다. 기본 Docker 이미지를 지정하고 그 위에 conda yaml을 지정하여 사용자 지정 환경을 사용할 수도 있습니다.
  • inputs - 명령에 대한 이름 값 쌍을 사용하는 입력 사전. 키는 작업의 컨텍스트 내에서 입력에 대한 이름이고 값은 입력 값입니다. 입력은 ${{inputs.<input_name>}} 식을 사용하여 command에서 참조됩니다. 파일 또는 폴더를 입력으로 사용하려면 Input 클래스를 사용할 수 있습니다. 자세한 내용은 SDK 및 CLI v2 식을 참조하세요.

자세한 내용은 참조 설명서를 참조하세요.

작업을 제출하면 URL이 Azure Machine Learning 스튜디오의 작업 상태로 반환됩니다. 스튜디오 UI를 사용하여 작업 진행 상황을 확인합니다. returned_job.status를 사용하여 작업의 현재 상태를 확인할 수도 있습니다.

학습된 모델 등록

다음 예에서는 Azure Machine Learning 작업 영역에서 모델을 등록하는 방법을 보여 줍니다.

학습 작업에서 반환된 name 속성은 모델 경로의 일부로 사용됩니다.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

run_model = Model(
    path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
    name="run-model-example",
    description="Model created from run.",
    type=AssetTypes.MLFLOW_MODEL
)

ml_client.models.create_or_update(run_model)

다음 단계

학습된 모델이 있으므로 온라인 엔드포인트를 사용하여 모델을 배포하는 방법에 대해 알아봅니다.

더 많은 예는 Azure Machine Learning 예 GitHub 리포지토리를 참조하세요.

이 문서에서 사용된 Azure CLI 명령, Python SDK 클래스 또는 REST API에 대한 자세한 내용은 다음 참조 설명서를 참조하세요.