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 학습을 설정할 수도 있습니다.
필수 구성 요소
- Azure 구독 Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다. Azure Machine Learning 평가판 또는 유료 버전을 사용해 보세요.
- Azure Machine Learning 작업 영역 리소스가 없으면 시작하려면 리소스 만들기 문서의 단계를 따릅니다.
SDK 정보를 사용하려면 Azure Machine Learning Python용 SDK v2를 설치합니다.
SDK를 설치하려면 다음 중 하나를 수행할 수 있습니다.
- 이미 최신 Azure Machine Learning Python SDK를 설치하고 ML 워크플로용으로 미리 구성된 컴퓨팅 인스턴스를 만듭니다. 자세한 내용은 Azure Machine Learning 컴퓨팅 인스턴스 만들기를 참조하세요.
- 로컬 컴퓨터에 SDK 설치
작업 영역 설정
작업 영역에 연결하려면 구독, 리소스 그룹 및 작업 영역 이름을 제공해야 합니다.
작업 영역 세부 정보는 필수 Azure Machine Learning 작업 영역에 대한 핸들을 가져오기 위해 azure.ai.ml
의 MLClient
에서 사용됩니다.
다음 예에서 기본 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 메서드에서 설정됩니다. training
및 limits
설정을 사용하여 직업 학습 설정과 종료 기준을 설정할 수도 있습니다.
다음 예는 정확도를 기본 메트릭 및 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 |
아래의 추가 알고리즘을 사용합니다.
- 이미지 분류 다중 클래스 알고리즘
- 이미지 분류 다중 레이블 알고리즘
- 이미지 개체 감지 알고리즘
- NLP 텍스트 분류 다중 레이블 알고리즘
- NLP 텍스트 NER(명명된 엔터티 인식) 알고리즘
각 작업 종류의 Notebooks 예를 보려면 이 링크를 따릅니다.
기본 메트릭
primary_metric
매개 변수는 최적화를 위해 모델을 학습시키는 동안 사용할 메트릭을 결정합니다. 사용할 수 있는 메트릭은 선택한 작업 유형에 따라 결정됩니다.
자동화된 ML을 통해 최적화할 기본 메트릭 선택은 다양한 요인에 따라 달라집니다. 비즈니스 요구를 가장 잘 나타내는 메트릭을 선택하는 것이 가장 중요한 고려 사항입니다. 그런 다음, 메트릭이 데이터 세트 프로필(데이터 크기, 범위, 클래스 분포 등)에 적합한지를 고려합니다. 다음 섹션에는 작업 유형 및 비즈니스 시나리오에 따라 권장되는 기본 메트릭이 요약되어 있습니다.
자동화된 Machine Learning 결과 이해에서 이러한 메트릭의 정의에 대해 알아보세요.
다중 클래스 시나리오 분류를 위한 메트릭
이러한 메트릭은 표 형식 데이터, 이미지/Computer Vision 및 NLP-텍스트를 포함한 모든 분류 시나리오에 적용됩니다.
accuracy
, recall_score_weighted
, norm_macro_recall
및 precision_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_error
및 normalized_root_mean_squared_error
는 모두 예측 오류를 최소화하려고 합니다. r2_score
및 normalized_root_mean_squared_error
는 모두 평균 제곱 오차를 최소화하는 반면 normalized_mean_absolute_error
는 오차의 평균 절대값을 최소화합니다. 절대 값은 모든 크기의 오차를 동일하게 취급하고 제곱 오차는 오차의 절대값이 클수록 페널티가 커집니다. 오차가 클수록 페널티도 커야 하는지 여부에 따라 제곱 오차 또는 절대 오차를 최적화하도록 선택할 수 있습니다.
r2_score
및 normalized_root_mean_squared_error
의 주요 차이점은 정규화되는 방법 및 그 의미입니다. normalized_root_mean_squared_error
는 범위를 기준으로 정규화되고 예측의 평균 오차 크기로 해석될 수 있는 제곱 평균 오차입니다. r2_score
는 데이터의 분산 추정치로 정규화된 평균 제곱 오차를 의미합니다. 이는 모델에서 캡처할 수 있는 변화의 비율입니다.
참고 항목
r2_score
및 normalized_root_mean_squared_error
도 기본 메트릭과 비슷하게 동작합니다. 고정 유효성 검사 집합을 적용하는 경우 이 두 메트릭은 동일한 대상, 즉 평균 제곱 오차를 최적화하며, 동일한 모델에 의해 최적화됩니다. 학습 집합만 사용 가능하고 교차 유효성 검사를 적용하는 경우에는 두 메트릭이 약간 다릅니다. normalized_root_mean_squared_error
의 노멀라이저는 학습 집합의 범위로 고정되지만 r2_score
의 노멀라이저는 모든 접기에 따라 달라질 수 있습니다(각 접기에 대한 분산이기 때문).
정확한 값 대신 순위가 중요한 경우에는 spearman_correlation
이 실제 값과 예측 간의 순위 상관 관계를 측정하므로 더 적합할 수 있습니다.
AutoML은 현재 예측과 관찰 간의 상대적 차이를 측정하는 기본 메트릭을 지원하지 않습니다. 메트릭 r2_score
, normalized_mean_absolute_error
및 normalized_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은 학습 결과를 모니터링하고 평가할 수 있는 옵션을 제공합니다.
각 실행에 대해 제공되는 성능 차트 및 메트릭의 정의와 예제는 자동화된 Machine Learning 실험 결과 평가를 참조하세요.
기능화 요약을 얻고 특정 모델에 추가된 기능을 이해하려면 기능화 투명도를 참조하세요.
모델 페이지의 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_mode
및 max_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
)
전체 구성 코드 샘플은 구성 및 작업 제출에 대한 이전 섹션을 참조하세요.
다음 단계
- 모델 배포 방법 및 위치에 대해 자세히 알아봅니다.
- 시계열 예측 모델 학습을 위해 AutoML을 설정하는 방법에 대해 자세히 알아봅니다.