Azure Machine Learning CLI 및 Python SDK를 사용하여 표 형식 데이터에 대한 AutoML 학습 설정
적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)
이 문서에서는 Azure Machine Learning Python SDK v2를 사용하여 AutoML(자동화된 기계 학습) 학습 작업을 설정하는 방법을 알아봅니다. 자동화된 ML은 알고리즘과 하이퍼 매개 변수를 자동으로 선택하고 배포할 준비가 된 모델을 생성합니다. 이 문서에서는 자동화된 기계 학습 실험을 구성하는 데 사용할 수 있는 다양한 옵션에 대해 자세히 설명합니다.
코드 없는 환경을 선호하는 경우 스튜디오 UI를 사용하여 테이블 형식 데이터에 대한 코드 없는 자동화된 ML 학습을 설정할 수도 있습니다.
필수 구성 요소
- 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
에서 사용됩니다.
다음 예제에서는 폴더 구조의 파일에서 기본 작업 영역 구성 또는 구성으로 config.json
기본 Azure 인증을 사용합니다. 없는 config.json
경우 구독 ID, 리소스 그룹 및 작업 영역을 만들 MLClient
때 수동으로 도입해야 합니다.
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에서 학습 데이터를 제공하려면 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에 대한 자세한 내용은 Azure Machine Learning의 테이블 작업을 참조 하세요.
학습, 유효성 검사 및 테스트 데이터
별도의 학습 데이터 및 유효성 검사 데이터 집합을 지정할 수 있습니다. 학습 데이터는 자동화된 training_data
기계 학습 작업의 팩터리 함수에서 매개 변수에 제공해야 합니다.
명시적으로 또는 n_cross_validation
매개 변수를 validation_data
지정하지 않으면 자동화된 ML은 유효성 검사 수행 방법을 결정하는 기본 기술을 적용합니다. 이러한 결정은 training_data
매개 변수에 할당된 데이터 세트의 행 수에 따라 달라집니다.
학습 데이터 크기 | 유효성 검사 기법 |
---|---|
20,000개 행 이상인 경우 | 학습 및 유효성 검사 데이터 분할이 적용됩니다. 기본값은 초기 학습 데이터 세트의 10%를 유효성 검사 세트로 사용하는 것입니다. 그러면 해당 유효성 검사 집합이 메트릭 계산에 사용됩니다. |
20,000행 이하 | 교차 유효성 검사 방법이 적용됩니다. 기본 접기 횟수는 행의 수에 따라 달라집니다. 데이터 세트가 1,000개 미만의 행인 경우 10개의 접이식이 사용됩니다. 행이 1,000에서 20,000 사이인 경우 세 개의 접이식이 사용됩니다. |
실험 실행 컴퓨팅
Python SDK v2(또는 CLI v2)를 사용하는 자동화된 기계 학습 작업은 현재 Azure Machine Learning 원격 컴퓨팅 클러스터 또는 컴퓨팅 인스턴스에서만 지원됩니다. Python SDKv2 또는 CLIv2를 사용하여 컴퓨팅을 만드는 방법에 대한 자세한 내용은 Azure Machine Learning CLI, SDK 및 REST API를 사용하여 모델 학습을 참조하세요.
실험 설정 구성
자동화된 Machine Learning 실험을 구성하는 데 사용할 수 있는 옵션에 대해 알아봅니다. 이러한 구성 매개 변수는 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은 다음과 같은 다양한 작업 유형을 지원합니다.
테이블 형식 데이터 기반 작업
- 분류
- 재발
- 예측
Computer Vision 작업(다음 포함)
- 이미지 분류
- 개체 감지
자연어 처리 작업(다음 포함)
- 텍스트 분류
- 엔터티 인식
자세한 내용은 작업 유형을 참조 하세요. 예측 작업 설정에 대한 자세한 내용은 시계열 예측 모델을 학습하도록 AutoML 설정을 참조하세요.
지원되는 알고리즘
자동화된 Machine Learning은 자동화 및 튜닝 프로세스 동안 다양한 모델 및 알고리즘을 지원합니다. 사용자는 알고리즘을 지정할 필요가 없습니다.
작업 메서드는 적용할 알고리즘 또는 모델 목록을 결정합니다. 포함하거나 제외할 사용 가능한 모델을 사용하여 반복을 추가로 수정하려면 작업 구성에 해당 또는 blocked_training_algorithms
매개 변수를 training
사용합니다allowed_training_algorithms
.
다음 표에서는 기계 학습 작업당 지원되는 알고리즘을 살펴봅니다.
다른 알고리즘을 사용하는 경우:
- 이미지 분류 다중 클래스 알고리즘
- 이미지 분류 다중 레이블 알고리즘
- 이미지 개체 감지 알고리즘
- NLP 텍스트 분류 다중 레이블 알고리즘
- NLP 텍스트 NER(명명된 엔터티 인식) 알고리즘
각 작업 유형의 Notebook 예제는 automl-standalone-jobs를 참조 하세요.
기본 메트릭
primary_metric
매개 변수는 최적화를 위해 모델을 학습시키는 동안 사용할 메트릭을 결정합니다. 선택한 작업 유형에 따라 선택할 수 있는 메트릭이 결정됩니다.
자동화된 기계 학습을 최적화하기 위한 기본 메트릭을 선택하는 것은 여러 요인에 따라 달라집니다. 비즈니스 요구를 가장 잘 나타내는 메트릭을 선택하는 것이 가장 중요한 고려 사항입니다. 그런 다음 데이터 크기, 범위 및 클래스 배포를 포함하여 메트릭이 데이터 세트 프로필에 적합한지 고려합니다. 다음 섹션에는 작업 유형 및 비즈니스 시나리오에 따라 권장되는 기본 메트릭이 요약되어 있습니다.
이러한 메트릭의 특정 정의에 대해 알아보려면 자동화된 기계 학습 실험 결과 계산을 참조하세요.
다중 클래스 시나리오 분류를 위한 메트릭
이러한 메트릭은 테이블 형식 데이터, 이미지 또는 컴퓨터 비전 및 NLP-Text(자연어 처리 텍스트)를 비롯한 모든 분류 시나리오에 적용됩니다.
임계값 종속 메트릭(예: accuracy
< recall_score_weighted
norm_macro_recall
a0/>precision_score_weighted
)은 작거나, 클래스 오차가 크거나(클래스 불균형) 또는 예상 메트릭 값이 0.0 또는 1.0에 매우 가까운 경우 데이터 세트에 최적화되지 않을 수 있습니다. 이러한 경우 기본 메트릭에 대해 AUC_weighted
를 선택하는 것이 더 적합할 수 있습니다. 자동화된 기계 학습이 완료되면 비즈니스 요구 사항에 가장 적합한 메트릭을 기반으로 성공적인 모델을 선택할 수 있습니다.
메트릭 | 사용 사례 예 |
---|---|
accuracy |
이미지 분류, 정서 분석, 변동 예측 |
AUC_weighted |
부정 행위 탐지, 이미지 분류, 변칙 탐지/스팸 탐지 |
average_precision_score_weighted |
관심도 분석 |
norm_macro_recall |
변동 예측 |
precision_score_weighted |
다중 레이블 시나리오 분류를 위한 메트릭
텍스트 분류 다중 레이블의 경우 현재 '정확도'가 지원되는 유일한 기본 메트릭입니다.
이미지 분류 다중 레이블의 경우 지원되는 기본 메트릭이 열거형에 ClassificationMultilabelPrimaryMetrics
정의됩니다.
NLP 텍스트 명명된 엔터티 인식 시나리오에 대한 메트릭
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
있는 경우 더 나은 선택이 될 수 있습니다. 실제 값과 예측 간의 순위 상관 관계를 측정합니다.
자동화된 ML은 현재 예측과 관찰 간의 상대적 차이를 측정하는 기본 메트릭을 지원하지 않습니다. 메트릭 r2_score
, normalized_mean_absolute_error
및 normalized_root_mean_squared_error
는 모두 절대차의 척도입니다. 예를 들어, 예측이 관측치와 10단위만큼 다른 경우 관측치가 20단위 또는 20,000단위인 경우 이러한 메트릭은 동일한 값을 계산합니다. 반면 상대 측정값인 백분율 차이는 각각 50%와 0.05%의 오류를 제공합니다. 상대적 차이에 최적화하려면 지원되는 기본 메트릭을 사용하여 자동화된 ML을 실행한 다음 최적 또는 root_mean_squared_log_error
가장 적합한 mean_absolute_percentage_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
정의됩니다.
이미지 인스턴스 분할 시나리오에 대한 메트릭
Image Instance Segmentation 시나리오의 경우 지원되는 기본 메트릭이 열거형에 InstanceSegmentationPrimaryMetrics
정의됩니다.
데이터 기능화
자동화된 모든 기계 학습 실험에서 데이터는 자동으로 숫자 및 숫자 벡터로 변환됩니다. 또한 데이터는 크기가 조정되고 정규화되어 서로 다른 배율의 기능에 민감한 알고리즘을 지원합니다. 이러한 데이터 변환을 기능화라고 합니다.
참고 항목
기능 정규화, 누락된 데이터 처리 및 텍스트를 숫자로 변환하는 등의 자동화된 기계 학습 기능화 단계가 기본 모델의 일부가 됩니다. 예측을 위해 모델을 사용하는 경우 학습 중에 적용된 동일한 기능화 단계가 입력 데이터에 자동으로 적용됩니다.
자동화된 기계 학습 작업을 구성할 때 설정을 사용하거나 사용하지 않도록 설정할 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 열)보다 크지 않거나 오류가 발생하는지 확인하세요. 이 시간 제한에는 설정, 기능화 및 학습 실행이 포함되지만 모든 평가판(자식 작업)이 완료된 후에 해당 작업이 수행되어야 하므로 프로세스 종료 시의 ensembling 및 모델 설명 실행은 포함되지 않습니다. |
trial_timeout_minutes |
각 시도(자식 작업)가 종료되기 전에 실행할 수 있는 최대 시간(분)입니다. 지정하지 않으면 1개월 또는 43,200분 값이 사용됩니다. |
enable_early_termination |
점수가 단기적으로 개선되지 않는 경우 작업을 종료할지 여부입니다. |
max_trials |
작업 중에 시도할 알고리즘과 하이퍼 매개 변수의 조합이 각각 다른 최대 평가판/실행 수입니다. 지정하지 않으면 기본값은 1,000회 평가판입니다. 사용하는 enable_early_termination 경우 사용된 평가판 수가 더 적을 수 있습니다. |
max_concurrent_trials |
병렬로 실행될 최대 시도(자식 작업) 수를 나타냅니다. 이 숫자를 클러스터의 노드 수와 일치시킬 수 있는 것이 좋습니다. |
실험 실행
실행하려는 실험을 제출하고 모델을 생성합니다.
참고 항목
동일한 구성 설정과 기본 메트릭을 여러 번 사용하여 실험을 실행하는 경우 각 실험의 최종 메트릭 점수 및 생성된 모델에 변형이 표시될 수 있습니다. 자동화된 기계 학습이 사용하는 알고리즘에는 실험에 의한 모델 출력 및 권장 모델의 최종 메트릭 점수(예: 정확도)에 약간의 변화를 일으킬 수 있는 내재된 임의성이 있습니다. 모델 이름이 같지만 사용된 하이퍼 매개 변수가 서로 다른 결과가 표시될 수도 있습니다.
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의 경우 이 사실은 자식 실행을 의미합니다. 모든 노드가 사용 중이면 새 실험이 큐에 추가됩니다. 사용 가능한 노드가 있는 경우 새 실험은 사용 가능한 노드 또는 가상 머신에서 자식 실행을 병렬로 실행합니다.
자식 실행을 관리하고 수행할 수 있는 경우를 관리하려면 실험당 전용 클러스터를 만들고 실험 수를 클러스터의 max_concurrent_iterations
노드 수와 일치시키는 것이 좋습니다. 이렇게 하면 동시 자식 실행 수와 원하는 반복 수와 함께 클러스터의 모든 노드를 동시에 사용합니다.
limits
구성에서 max_concurrent_iterations
를 구성합니다. 구성되지 않은 경우 기본적으로 실험당 하나의 동시 자식 실행/반복만 허용됩니다. 컴퓨팅 인스턴스의 경우 컴퓨팅 인스턴스 max_concurrent_trials
가상 머신의 코어 수와 동일하게 설정할 수 있습니다.
모델 및 메트릭 탐색
자동화된 ML은 학습 결과를 모니터링하고 평가할 수 있는 옵션을 제공합니다.
각 실행에 대해 제공되는 성능 차트 및 메트릭의 정의와 예제는 자동화된 Machine Learning 실험 결과 평가를 참조하세요.
기능화 요약을 얻고 특정 모델에 추가된 기능을 이해하려면 기능화 투명도를 참조하세요.
모델 페이지의 Azure Machine Learning UI에서 특정 모델을 학습할 때 사용되는 하이퍼 매개 변수를 보고 사용된 내부 모델의 학습 코드를 보고 사용자 지정할 수도 있습니다.
모델 등록 및 배포
모델을 테스트하고 프로덕션에서 사용할 수 있는지 확인한 후에는 나중에 사용하기 위해 모델을 등록할 수 있습니다.
팁
등록된 모델의 경우 Azure Machine Learning 스튜디오 사용하여 원클릭 배포를 사용할 수 있습니다. 모델 배포를 참조하세요.
파이프라인에서 AutoML 사용
기계 학습 작업 워크플로에서 자동화된 ML을 사용하려면 Azure Machine Learning 파이프라인에 AutoML 작업 단계를 추가할 수 있습니다. 이 방법을 사용하면 데이터 준비 스크립트를 자동화된 ML에 연결하여 전체 워크플로를 자동화할 수 있습니다. 그런 다음 결과 최상의 모델을 등록하고 유효성을 검사합니다.
이 코드는 자동화된 ML 분류 구성 요소와 결과 출력을 보여 주는 명령 구성 요소가 있는 샘플 파이프라인 입니다. 이 코드는 다양한 단계에서 입력(학습 및 유효성 검사 데이터) 및 출력(최상의 모델)을 참조합니다.
# 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
파이프라인에 자동화된 ML을 포함하는 방법에 대한 자세한 예제는 예제 리포지토리를 참조하세요.
대규모 AutoML 사용: 분산 학습
대규모 데이터 시나리오의 경우 자동화된 ML은 제한된 모델 집합에 대한 분산 학습을 지원합니다.
분산 알고리즘 | 지원되는 작업 | 데이터 크기 제한(대략) |
---|---|---|
LightGBM | 분류, 회귀 | 1TB |
TCNForecaster | 예측 | 200GB |
분산 학습 알고리즘은 모델 학습을 위해 여러 컴퓨팅 노드에 데이터를 자동으로 분할하고 배포합니다.
참고 항목
교차 유효성 검사, 앙상블 모델, ONNX 지원 및 코드 생성은 현재 분산 학습 모드에서 지원되지 않습니다. 또한 자동 ML은 유효성 검사, 설명 가능성 및 모델 평가에 사용되는 사용 가능한 기능화기 및 하위 샘플링 데이터 제한과 같은 선택을 할 수 있습니다.
분류 및 회귀를 위한 분산 학습
분류 또는 회귀에 분산 학습을 사용하려면 작업 개체의 training_mode
속성과 max_nodes
속성을 설정합니다.
속성 | 설명 |
---|---|
training_mode | 학습 모드를 distributed 나타냅니다. 또는 non_distributed . 기본값은 non_distributed 입니다. |
max_nodes | 각 평가판의 학습에 사용할 노드 수입니다. 이 설정은 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을 설정하는 방법에 대해 자세히 알아봅니다.