Azure Machine Learning CLI 및 Python SDK를 사용하여 표 형식 데이터에 대한 AutoML 학습 설정

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

이 가이드에서는 Azure Machine Learning Python SDK v2를 사용하여 자동화된 Machine Learning, AutoML, 학습 작업을 설정하는 방법을 알아봅니다. 자동화된 ML은 알고리즘과 하이퍼 매개 변수를 자동으로 선택하고 배포할 준비가 된 모델을 생성합니다. 이 가이드에서는 자동화된 ML 실험을 구성하는 데 사용할 수 있는 다양한 옵션에 대해 자세히 설명합니다.

코드 없는 환경을 선호하는 경우 Azure Machine Learning 스튜디오에서 코드 없는 AutoML 학습을 설정할 수도 있습니다.

필수 구성 요소

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

SDK를 설치하려면 다음 중 하나를 수행할 수 있습니다.

작업 영역 설정

작업 영역에 연결하려면 구독, 리소스 그룹 및 작업 영역 이름을 제공해야 합니다.

작업 영역 세부 정보는 필수 Azure Machine Learning 작업 영역에 대한 핸들을 가져오기 위해 azure.ai.mlMLClient에서 사용됩니다.

다음 예에서 기본 Azure 인증은 기본 작업 영역 구성과 함께 사용되거나 폴더 구조에 복사했을 수 있는 모든 config.json 파일에서 사용됩니다. config.json이 없으면 MLClient를 만들 때 subscription_id, resource_group 및 작업 영역을 수동으로 도입해야 합니다.

from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient

credential = DefaultAzureCredential()
ml_client = None
try:
    ml_client = MLClient.from_config(credential)
except Exception as ex:
    print(ex)
    # Enter details of your Azure Machine Learning workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AZUREML_WORKSPACE_NAME>"
    ml_client = MLClient(credential, subscription_id, resource_group, workspace)

데이터 원본 및 형식

SDK v2의 AutoML에 학습 데이터를 제공하려면 MLTable을 통해 클라우드에 업로드해야 합니다.

MLTable에 데이터를 로드하기 위한 요구 사항:

  • 데이터는 테이블 형식이어야 합니다.
  • 예측하려는 값(대상 열)이 데이터에 있어야 합니다.

학습 데이터는 원격 컴퓨팅에서 액세스할 수 있어야 합니다. 자동화된 ML v2(Python SDK 및 CLI/YAML)는 MLTable 데이터 자산(v2)을 허용하지만 이전 버전과의 호환성을 위해 동일한 입력 데이터 세트 속성을 통해 v1(등록된 표 형식 데이터 세트)의 v1 표 형식 데이터 세트도 지원합니다. 그러나 권장 사항은 v2에서 사용 가능한 MLTable을 사용하는 것입니다. 이 예에서는 데이터가 로컬 경로 ./train_data/bank_marketing_train_data.csv에 저장되어 있다고 가정합니다.

다음 예와 같이 mltable Python SDK를 사용하여 MLTable을 만들 수 있습니다.

import mltable

paths = [
    {'file': './train_data/bank_marketing_train_data.csv'}
]

train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')

이 코드는 파일 형식과 로드 지침이 포함된 새 파일 ./train_data/MLTable을 만듭니다.

이제 ./train_data 폴더에는 MLTable 정의 파일과 데이터 파일 bank_marketing_train_data.csv가 있습니다.

MLTable에 대한 자세한 내용은 mltable 방법 문서를 참조하세요.

학습, 유효성 검사 및 테스트 데이터

별도의 학습 데이터 및 유효성 검사 데이터 집합를 지정할 수 있지만 학습 데이터는 자동화된 ML 작업의 팩터리 함수에서 training_data 매개 변수에 제공되어야 합니다.

validation_data 또는 n_cross_validation 매개 변수를 명시적으로 지정하지 않는 경우 자동화된 ML은 유효성 검사가 수행되는 방식을 결정하는 기본 기술을 적용합니다. 이러한 결정은 training_data 매개 변수에 할당된 데이터 세트의 행 수에 따라 달라집니다.

학습 데이터 크기 유효성 검사 기법
20,000개 행 이상인 경우 학습/유효성 검사 데이터 분할이 적용됩니다. 기본값은 초기 학습 데이터 세트의 10%를 유효성 검사 세트로 사용하는 것입니다. 그러면 해당 유효성 검사 집합이 메트릭 계산에 사용됩니다.
20,000행 이하 교차 유효성 검사 방법이 적용됩니다. 기본 접기 횟수는 행의 수에 따라 달라집니다.
데이터 세트가 1,000행 미만인 경우 10겹 접기가 사용됩니다.
행이 1,000개 이상이고 20,000개 이하인 경우 3겹 접기가 사용됩니다.

실험 실행 컴퓨팅

Python SDK v2(또는 CLI v2)를 사용한 자동화된 ML 작업은 현재 Azure Machine Learning 원격 컴퓨팅(클러스터 또는 컴퓨팅 인스턴스)에서만 지원됩니다.

Python SDKv2(또는 CLIv2)를 사용한 컴퓨팅 만들기에 대해 자세히 알아봅니다..

실험 설정 구성

자동화된 ML 실험을 구성하는 데 사용할 수 있는 몇 가지 옵션이 있습니다. 이러한 구성 매개 변수는 task 메서드에서 설정됩니다. traininglimits 설정을 사용하여 직업 학습 설정과 종료 기준을 설정할 수도 있습니다.

다음 예는 정확도를 기본 메트릭 및 5개의 교차 유효성 검사 폴드로 지정하는 분류 작업에 필요한 매개 변수를 보여 줍니다.

from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input

# note that this is a code snippet -- you might have to modify the variable values to run it successfully

# make an Input object for the training data
my_training_data_input = Input(
    type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)

# configure the classification job
classification_job = automl.classification(
    compute=my_compute_name,
    experiment_name=my_exp_name,
    training_data=my_training_data_input,
    target_column_name="y",
    primary_metric="accuracy",
    n_cross_validations=5,
    enable_model_explainability=True,
    tags={"my_custom_tag": "My custom value"}
)

# Limits are all optional
classification_job.set_limits(
    timeout_minutes=600, 
    trial_timeout_minutes=20, 
    max_trials=5,
    enable_early_termination=True,
)

# Training properties are optional
classification_job.set_training(
    blocked_training_algorithms=["logistic_regression"], 
    enable_onnx_compatible_models=True
)

기계 학습 작업 종류 선택(ML 문제)

자동화된 ML 작업을 제출하기 전에 해결하려는 기계 학습 문제의 종류를 결정해야 합니다. 이 문제는 자동화된 ML 작업이 사용하는 함수와 적용되는 모델 알고리즘을 결정합니다.

자동화된 ML은 표 형식 데이터 기반 작업(분류, 회귀, 예측), Computer Vision 작업(예: 이미지 분류 및 개체 감지), 자연어 처리 작업(예: 텍스트 분류 및 엔터티 인식 작업)을 지원합니다. 자세한 내용은 작업 유형에 대한 문서를 참조하세요. 예측 작업 설정에 대한 자세한 내용은 시계열 예측 가이드를 참조하세요.

지원되는 알고리즘

자동화된 Machine Learning은 자동화 및 튜닝 프로세스 동안 다양한 모델 및 알고리즘을 지원합니다. 사용자는 알고리즘을 지정할 필요가 없습니다.

task 메서드는 적용할 알고리즘/모델 목록을 결정합니다. 포함하거나 제외할 사용 가능한 모델로 반복을 추가로 수정하려면 AutoML 작업의 training 구성에서 allowed_training_algorithms 또는 blocked_training_algorithms 매개 변수를 사용합니다.

다음 링크 목록에서 아래 나열된 기계 학습 작업별로 지원되는 알고리즘을 탐색할 수 있습니다.

분류 회귀 시계열 예측
로지스틱 회귀* Elastic Net* AutoARIMA
Light GBM* Light GBM* Prophet
경사 부스팅* 경사 부스팅* Elastic Net
의사 결정 트리* 의사 결정 트리* Light GBM
K Nearest Neighbors* K Nearest Neighbors* K Nearest Neighbors
Linear SVC* LARS Lasso* 의사 결정 트리
SVC(Support Vector Classification)* SGD(Stochastic Gradient Descent)* Arimax
임의 포리스트* Random Forest LARS Lasso
Extremely Randomized Trees* Extremely Randomized Trees* Extremely Randomized Trees*
Xgboost* Xgboost* Random Forest
Naive Bayes* Xgboost TCNForecaster
SGD(Stochastic Gradient Descent)* SGD(Stochastic Gradient Descent) 경사 부스팅
ExponentialSmoothing
SeasonalNaive
평균
Naive
SeasonalAverage

아래의 추가 알고리즘을 사용합니다.

각 작업 종류의 Notebooks 예를 보려면 이 링크를 따릅니다.

기본 메트릭

primary_metric 매개 변수는 최적화를 위해 모델을 학습시키는 동안 사용할 메트릭을 결정합니다. 사용할 수 있는 메트릭은 선택한 작업 유형에 따라 결정됩니다.

자동화된 ML을 통해 최적화할 기본 메트릭 선택은 다양한 요인에 따라 달라집니다. 비즈니스 요구를 가장 잘 나타내는 메트릭을 선택하는 것이 가장 중요한 고려 사항입니다. 그런 다음, 메트릭이 데이터 세트 프로필(데이터 크기, 범위, 클래스 분포 등)에 적합한지를 고려합니다. 다음 섹션에는 작업 유형 및 비즈니스 시나리오에 따라 권장되는 기본 메트릭이 요약되어 있습니다.

자동화된 Machine Learning 결과 이해에서 이러한 메트릭의 정의에 대해 알아보세요.

다중 클래스 시나리오 분류를 위한 메트릭

이러한 메트릭은 표 형식 데이터, 이미지/Computer Vision 및 NLP-텍스트를 포함한 모든 분류 시나리오에 적용됩니다.

accuracy, recall_score_weighted, norm_macro_recallprecision_score_weighted와 같은 임계값 종속 메트릭은 데이터 세트가 작거나, 클래스 오차(클래스 불균형)가 크거나, 예상된 메트릭 값이 0.0 또는 1.0에 매우 근접한 경우에도 최적화되지 않을 수 있습니다. 이러한 경우 기본 메트릭에 대해 AUC_weighted를 선택하는 것이 더 적합할 수 있습니다. 자동화된 ML이 완료되면 비즈니스 요구에 가장 적합한 메트릭을 기준으로 최적 모델을 선택할 수 있습니다.

메트릭 사용 사례 예제
accuracy 이미지 분류, 정서 분석, 변동 예측
AUC_weighted 부정 행위 탐지, 이미지 분류, 변칙 탐지/스팸 탐지
average_precision_score_weighted 관심도 분석
norm_macro_recall 변동 예측
precision_score_weighted

다중 레이블 시나리오 분류를 위한 메트릭

  • 텍스트 분류 다중 레이블의 경우 현재 '정확도'가 지원되는 유일한 기본 메트릭입니다.

  • 이미지 분류 다중 레이블의 경우 지원되는 기본 메트릭은 ClassificationMultilabelPrimaryMetrics 열거형에 정의되어 있습니다.

NLP 텍스트 NER(명명된 엔터티 인식) 시나리오에 대한 메트릭

  • NLP 텍스트 NER(명명된 엔터티 인식)의 경우 현재 '정확도'가 지원되는 유일한 기본 메트릭입니다.

회귀 시나리오에 대한 메트릭

r2_score, normalized_mean_absolute_errornormalized_root_mean_squared_error는 모두 예측 오류를 최소화하려고 합니다. r2_scorenormalized_root_mean_squared_error는 모두 평균 제곱 오차를 최소화하는 반면 normalized_mean_absolute_error는 오차의 평균 절대값을 최소화합니다. 절대 값은 모든 크기의 오차를 동일하게 취급하고 제곱 오차는 오차의 절대값이 클수록 페널티가 커집니다. 오차가 클수록 페널티도 커야 하는지 여부에 따라 제곱 오차 또는 절대 오차를 최적화하도록 선택할 수 있습니다.

r2_scorenormalized_root_mean_squared_error의 주요 차이점은 정규화되는 방법 및 그 의미입니다. normalized_root_mean_squared_error는 범위를 기준으로 정규화되고 예측의 평균 오차 크기로 해석될 수 있는 제곱 평균 오차입니다. r2_score는 데이터의 분산 추정치로 정규화된 평균 제곱 오차를 의미합니다. 이는 모델에서 캡처할 수 있는 변화의 비율입니다.

참고 항목

r2_scorenormalized_root_mean_squared_error도 기본 메트릭과 비슷하게 동작합니다. 고정 유효성 검사 집합을 적용하는 경우 이 두 메트릭은 동일한 대상, 즉 평균 제곱 오차를 최적화하며, 동일한 모델에 의해 최적화됩니다. 학습 집합만 사용 가능하고 교차 유효성 검사를 적용하는 경우에는 두 메트릭이 약간 다릅니다. normalized_root_mean_squared_error의 노멀라이저는 학습 집합의 범위로 고정되지만 r2_score의 노멀라이저는 모든 접기에 따라 달라질 수 있습니다(각 접기에 대한 분산이기 때문).

정확한 값 대신 순위가 중요한 경우에는 spearman_correlation이 실제 값과 예측 간의 순위 상관 관계를 측정하므로 더 적합할 수 있습니다.

AutoML은 현재 예측과 관찰 간의 상대적 차이를 측정하는 기본 메트릭을 지원하지 않습니다. 메트릭 r2_score, normalized_mean_absolute_errornormalized_root_mean_squared_error는 모두 절대차의 척도입니다. 예를 들어, 예측이 관측치와 10단위만큼 다른 경우 관측치가 20단위 또는 20,000단위인 경우 이러한 메트릭은 동일한 값을 계산합니다. 대조적으로, 상대적 척도인 백분율 차이는 각각 50%와 0.05%의 오류를 제공합니다! 상대적인 차이를 최적화하려면 지원되는 기본 메트릭을 사용하여 AutoML을 실행한 다음 가장 적합한 mean_absolute_percentage_error 또는 root_mean_squared_log_error를 사용하여 모델을 선택할 수 있습니다. 관찰 값이 0인 경우 이러한 메트릭은 정의되지 않으므로 항상 좋은 선택이 아닐 수도 있습니다.

메트릭 사용 사례 예제
spearman_correlation
normalized_root_mean_squared_error 가격 예측(집/제품/팁), 점수 예측 검토
r2_score 항공 지연, 급여 추정, 버그 해결 시간
normalized_mean_absolute_error

시계열 예측 시나리오에 대한 메트릭

권장 사항은 회귀 시나리오에서 언급된 사항과 유사합니다.

메트릭 사용 사례 예제
normalized_root_mean_squared_error 가격 예측(예측), 재고 최적화, 수요 예측
r2_score 가격 예측(예측), 재고 최적화, 수요 예측
normalized_mean_absolute_error

이미지 개체 감지 시나리오에 대한 메트릭

  • 이미지 개체 감지의 경우 지원되는 기본 메트릭은 ObjectDetectionPrimaryMetrics 열거형에 정의되어 있습니다.

이미지 인스턴스 분할 시나리오에 대한 메트릭

  • 이미지 인스턴스 분할 시나리오의 경우 지원되는 기본 메트릭은 InstanceSegmentationPrimaryMetrics 열거형에 정의되어 있습니다.

데이터 기능화

모든 자동화된 ML 실험에서 데이터는 자동으로 숫자와 숫자 벡터로 변환되며, 다양한 규모의 기능에 중요한 알고리즘을 지원하기 위해 크기 조정 및 정규화됩니다. 이러한 데이터 변환을 기능화라고 합니다.

참고 항목

자동화된 Machine Learning 기능화 단계(기능 정규화, 누락된 데이터 처리, 텍스트를 숫자로 변환 등)는 기본 모델의 일부가 됩니다. 예측에 모델을 사용하는 경우 학습 중에 적용되는 동일한 기능화 단계가 입력 데이터에 자동으로 적용됩니다.

자동화된 ML 작업을 구성할 때 featurization 설정을 사용/사용하지 않도록 설정할 수 있습니다.

다음 표는 기능화에 대해 허용되는 설정을 보여 줍니다.

기능화 구성 설명
"mode": 'auto' 전처리의 일부로 데이터 가드 레일 및 기능화 단계가 자동으로 수행된다는 것을 나타냅니다. 기본 설정.
"mode": 'off' 기능화 단계를 자동으로 수행하면 안 된다는 것을 나타냅니다.
"mode": 'custom' 사용자 지정된 기능화 단계를 사용해야 한다는 것을 나타냅니다.

다음 코드는 이 경우 회귀 작업에 대해 사용자 지정 기능화를 제공할 수 있는 방법을 보여 줍니다.

from azure.ai.ml.automl import ColumnTransformer

transformer_params = {
    "imputer": [
        ColumnTransformer(fields=["CACH"], parameters={"strategy": "most_frequent"}),
        ColumnTransformer(fields=["PRP"], parameters={"strategy": "most_frequent"}),
    ],
}
regression_job.set_featurization(
    mode="custom",
    transformer_params=transformer_params,
    blocked_transformers=["LabelEncoding"],
    column_name_and_types={"CHMIN": "Categorical"},
)

종료 기준

작업 완료 전에 실험을 종료하기 위해 set_limits() 함수에서 정의할 수 있는 몇 가지 옵션이 있습니다.

조건 description
조건 없음 종료 매개 변수를 정의하지 않으면 기본 메트릭에서 더 이상 진행되지 않을 때까지 실험이 계속됩니다.
timeout 실험을 계속 실행해야 하는 시간(분)을 정의합니다. 지정하지 않으면 기본 작업의 총 시간 제한은 6일(8,640분)입니다. 시간 제한을 1시간(60초) 이하로 지정하려면 데이터 세트의 크기가 10,000,000(행 X 열)보다 크지 않거나 오류가 발생하는지 확인하세요.

이 시간 제한에는 설정, 기능화 및 학습 실행이 포함되지만 모든 시도(자식 작업)가 완료되면 이러한 작업이 발생해야 하므로 프로세스 마지막에 앙상블 및 모델 설명 실행은 포함되지 않습니다.
trial_timeout_minutes 각 시도(자식 작업)가 종료되기 전에 실행할 수 있는 최대 시간(분)입니다. 지정하지 않으면 1개월 또는 43,200분 값이 사용됩니다.
enable_early_termination 단기간에 점수가 개선되지 않을 경우 작업을 종료할지 여부
max_trials AutoML 작업 중에 시도할 알고리즘과 하이퍼 매개 변수의 서로 다른 조합으로 각각 시도/실행할 수 있는 최대 횟수입니다. 시도 수를 지정하지 않으면 기본값은 1000입니다. enable_early_termination을 사용하는 경우 사용되는 시도 수가 더 적을 수 있습니다.
max_concurrent_trials 병렬로 실행될 최대 시도(자식 작업) 수를 나타냅니다. 이 숫자를 클러스터 노드 수와 일치시키는 것이 좋습니다.

실험 실행

참고 항목

동일한 구성 설정과 기본 메트릭을 사용하여 여러 번 실험을 실행한 경우 각 실험의 최종 메트릭 점수 및 생성된 모델에 변동이 있을 가능성이 높습니다. 자동화된 ML이 채택하는 알고리즘에는 내재된 무작위성이 있어서 실험에 의한 모델 출력 및 권장된 모델의 최종 메트릭 점수(예: 정확도)에 약간의 변동을 일으킬 수 있습니다. 모델 이름이 동일한 결과가 표시될 수도 있지만 다른 하이퍼 매개 변수가 사용되었습니다.

Warning

작업 영역에 대해 방화벽 및/또는 네트워크 보안 그룹에 규칙을 설정한 경우 인바운드 및 아웃바운드 네트워크 트래픽 구성에 정의된 대로 인바운드 및 아웃바운드 네트워크 트래픽에 필요한 권한이 부여되었는지 확인합니다.

실행하려는 실험을 제출하고 모델을 생성합니다. 필수 조건에서 만들어진 MLClient를 사용하여 작업 영역에서 다음 명령을 실행할 수 있습니다.


# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
    classification_job
)  # submit the job to the backend

print(f"Created job: {returned_job}")

# Get a URL for the status of the job
returned_job.services["Studio"].endpoint

클러스터에서 여러 자식 실행

자동화된 ML 실험 자식 실행은 이미 다른 실험을 실행하고 있는 클러스터에서 수행할 수 있습니다. 그러나 타이밍은 클러스터에 포함된 노드 수와 해당 노드를 사용하여 다른 실험을 실행할 수 있는지 여부에 따라 달라집니다.

클러스터의 각 노드는 단일 학습 실행을 달성할 수 있는 개별 VM(가상 머신)의 역할을 합니다. 자동화된 ML의 경우 이는 자식 실행을 의미합니다. 모든 노드가 사용 중이면 새 실험이 큐에 추가됩니다. 그러나 무료 노드가 있는 경우 새 실험은 사용 가능한 노드/VM에서 병렬로 자동화된 ML 자식 실행을 실행합니다.

자식 실행 및 수행 가능한 시기를 관리하는 데 도움이 되도록 실험당 전용 클러스터를 만들고 실험의 max_concurrent_iterations 수를 클러스터의 노드 수와 일치시키는 것이 좋습니다. 이러한 방식으로 클러스터의 모든 노드를 동시에 사용하여 원하는 동시 자식 실행/반복 횟수를 지정할 수 있습니다.

limits 구성에서 max_concurrent_iterations를 구성합니다. 구성되지 않은 경우에는 기본적으로 실험당 하나의 동시 자식 실행/반복만 허용됩니다. 컴퓨팅 인스턴스의 경우 max_concurrent_trials를 컴퓨팅 인스턴스 VM의 코어 수와 동일하게 설정할 수 있습니다.

모델 및 메트릭 탐색

자동화된 ML은 학습 결과를 모니터링하고 평가할 수 있는 옵션을 제공합니다.

모델 페이지의 Azure Machine Learning UI에서 모델을 학습할 때 사용된 하이퍼 매개 변수를 확인하고 사용된 내부 모델의 학습 코드를 보고 사용자 지정할 수도 있습니다.

모델 등록 및 배포

모델을 테스트하고 프로덕션에서 사용할 수 있는지 확인한 후에는 나중에 사용하기 위해 모델을 등록할 수 있습니다.

등록된 모델의 경우 Azure Machine Learning 스튜디오를 통해 한 번 클릭으로 배포를 사용할 수 있습니다. 스튜디오에서 등록된 모델을 배포하는 방법을 참조하세요.

파이프라인의 AutoML

MLOps 워크플로에서 AutoML을 활용하려면 Azure Machine Learning 파이프라인에 AutoML 작업 단계를 추가하면 됩니다. 이를 통해 데이터 준비 스크립트를 AutoML에 연결한 다음 결과로 나온 최상의 모델을 등록하고 유효성을 검사하여 전체 워크플로를 자동화할 수 있습니다.

다음은 AutoML 분류 구성 요소와 결과 AutoML 출력을 보여 주는 명령 구성 요소가 있는 샘플 파이프라인입니다. 입력(학습 & 유효성 검사 데이터)과 출력(최상의 모델)이 서로 다른 단계에서 어떻게 참조되는지 유효성을 검사합니다.

# Define pipeline
@pipeline(
    description="AutoML Classification Pipeline",
    )
def automl_classification(
    classification_train_data,
    classification_validation_data
):
    # define the automl classification task with automl function
    classification_node = classification(
        training_data=classification_train_data,
        validation_data=classification_validation_data,
        target_column_name="y",
        primary_metric="accuracy",
        # currently need to specify outputs "mlflow_model" explictly to reference it in following nodes 
        outputs={"best_model": Output(type="mlflow_model")},
    )
    # set limits and training
    classification_node.set_limits(max_trials=1)
    classification_node.set_training(
        enable_stack_ensemble=False,
        enable_vote_ensemble=False
    )

    command_func = command(
        inputs=dict(
            automl_output=Input(type="mlflow_model")
        ),
        command="ls ${{inputs.automl_output}}",
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:latest"
    )
    show_output = command_func(automl_output=classification_node.outputs.best_model)


pipeline_job = automl_classification(
    classification_train_data=Input(path="./training-mltable-folder/", type="mltable"),
    classification_validation_data=Input(path="./validation-mltable-folder/", type="mltable"),
)

# set pipeline level compute
pipeline_job.settings.default_compute = compute_name

# submit the pipeline job
returned_pipeline_job = ml_client.jobs.create_or_update(
    pipeline_job,
    experiment_name=experiment_name
)
returned_pipeline_job

# ...
# Note that this is a snippet from the bankmarketing example you can find in our examples repo -> https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs/pipelines/1h_automl_in_pipeline/automl-classification-bankmarketing-in-pipeline

파이프라인에 AutoML을 포함하는 방법에 대한 더 많은 예를 보려면 예 리포지토리를 체크 아웃합니다.

대규모 AutoML: 분산 학습

대규모 데이터 시나리오의 경우 AutoML은 제한된 모델 집합에 대한 분산 학습을 지원합니다.

분산 알고리즘 지원되는 작업 데이터 크기 제한(대략)
LightGBM 분류, 회귀 1TB
TCNForecaster 예측 200GB

분산 학습 알고리즘은 모델 학습을 위해 여러 컴퓨팅 노드에 데이터를 자동으로 분할하고 배포합니다.

참고 항목

교차 유효성 검사, 앙상블 모델, ONNX 지원 및 코드 생성은 현재 분산 학습 모드에서 지원되지 않습니다. 또한 AutoML은 유효성 검사, 설명 가능성 및 모델 평가에 사용되는 하위 샘플링 데이터 및 사용 가능한 기능을 제한하는 등의 선택을 할 수 있습니다.

분류 및 회귀를 위한 분산 학습

분류 또는 회귀에 분산 학습을 사용하려면 작업 개체의 training_modemax_nodes 속성을 설정해야 합니다.

속성 설명
training_mode 학습 모드를 나타냅니다. distributed 또는 non_distributed. 기본값은 non_distributed입니다.
max_nodes 각 AutoML 시도에서 학습에 사용할 노드 수입니다. 이 설정은 4보다 크거나 같아야 합니다.

다음 코드 샘플은 분류 작업에 대한 이러한 설정의 예를 보여 줍니다.

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
classification_job.set_training(
    allowed_training_algorithms=["LightGBM"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes for each trial
classification_job.set_limits(
    max_nodes=4,
    # other limit settings
)

참고 항목

분류 및 회귀 작업을 위한 분산 학습은 현재 여러 동시 시도를 지원하지 않습니다. 모델 시도는 max_nodes 노드를 사용하여 각 시도마다 순차적으로 실행됩니다. max_concurrent_trials 제한 설정은 현재 무시됩니다.

예측을 위한 분산 학습

예측 작업에 분산 학습이 어떻게 작동하는지 알아보려면 규모에 따른 예측 문서를 참조하세요. 예측을 위해 분산 학습을 사용하려면 작업 개체의 training_mode, enable_dnn_training, max_nodes 및 선택적으로 max_concurrent_trials 속성을 설정해야 합니다.

속성 설명
training_mode 학습 모드를 나타냅니다. distributed 또는 non_distributed. 기본값은 non_distributed입니다.
enable_dnn_training 심층 신경망 모델을 사용하도록 설정하는 플래그입니다.
max_concurrent_trials 이는 동시에 학습할 최대 시험 모델 수입니다. 기본값은 1입니다.
max_nodes 학습에 사용할 총 노드 수입니다. 이 설정은 2보다 크거나 같아야 합니다. 예측 작업의 경우 각 시험 모델은 $\text{max}\left(2, \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$ 노드를 사용하여 학습됩니다.

다음 코드 샘플은 예측 작업에 대한 이러한 설정의 예를 보여 줍니다.

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
forecasting_job.set_training(
    enable_dnn_training=True,
    allowed_training_algorithms=["TCNForecaster"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes
# Train 2 trial models in parallel => 2 nodes per trial
forecasting_job.set_limits(
    max_concurrent_trials=2,
    max_nodes=4,
    # other limit settings
)

전체 구성 코드 샘플은 구성작업 제출에 대한 이전 섹션을 참조하세요.

다음 단계