Python을 사용하여 AutoML 학습 설정
적용 대상: Python SDK azureml v1
이 가이드에서는 Azure Machine Learning 자동화된 ML을 사용하여 Azure Machine Learning Python SDK로 AutoML(자동화된 ML) 학습 실행을 설정하는 방법을 알아봅니다. 자동화된 ML은 알고리즘과 하이퍼 매개 변수를 자동으로 선택하고 배포할 준비가 된 모델을 생성합니다. 이 가이드에서는 자동화된 ML 실험을 구성하는 데 사용할 수 있는 다양한 옵션에 대해 자세히 설명합니다.
엔드투엔드 예제는 자습서: AutoML - 회귀 모델 학습을 참조하세요.
코드 없는 환경을 선호하는 경우 Azure Machine Learning 스튜디오에서 코드 없는 AutoML 학습을 설정할 수도 있습니다.
필수 조건
이 문서의 내용을 진행하려면 다음 항목이 필요합니다.
Azure Machine Learning 작업 영역 작업 영역을 만들려면 작업 영역 리소스 만들기를 참조하세요.
설치된 Azure Machine Learning Python SDK. SDK를 설치하려면 다음 중 하나를 수행할 수 있습니다.
SDK를 자동으로 설치하고 ML 워크플로에 대해 미리 구성된 컴퓨팅 인스턴스를 만듭니다. 자세한 내용은 Azure Machine Learning 컴퓨팅 인스턴스 만들기 및 관리를 참조하세요.
automl
패키지를 직접 설치합니다. 여기에는 SDK의 기본 설치가 포함됩니다.
Important
이 문서의 Python 명령을 실행하려면 최신
azureml-train-automl
패키지 버전이 필요합니다.- 로컬 환경에 최신
azureml-train-automl
패키지를 설치합니다. - 최신
azureml-train-automl
패키지에 대한 자세한 내용은 릴리스 정보를 참조하세요.
Warning
Python 3.8은
automl
과 호환되지 않습니다.
실험 유형 선택
실험을 시작하기 전에 해결하려는 기계 학습 문제의 종류를 결정해야 합니다. 자동화된 Machine Learning은 classification
, regression
및 forecasting
의 작업 유형을 지원합니다. 작업 유형에 대해 자세히 알아보세요.
참고 항목
NLP(자연어 처리) 작업에 대한 지원: 이미지 분류(다중 클래스 및 다중 레이블) 및 명명된 엔터티 인식은 공개 미리 보기에서 사용할 수 있습니다. AutoML의 NLP 작업에 대해 자세히 알아보기.
이러한 미리 보기 기능은 서비스 수준 계약 없이 제공됩니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
다음 코드는 AutoMLConfig
생성자에서 task
매개 변수를 사용하여 실험 형식을 classification
으로 지정합니다.
from azureml.train.automl import AutoMLConfig
# task can be one of classification, regression, forecasting
automl_config = AutoMLConfig(task = "classification")
데이터 원본 및 형식
자동화된 Machine Learning은 로컬 데스크톱 또는 Azure Blob Storage와 같은 클라우드의 데이터를 지원합니다. 데이터를 Pandas 데이터 프레임 또는 Azure Machine Learning TabularDataset로 읽어 들일 수 있습니다. 데이터 세트에 대해 자세히 알아보세요.
기계 학습에서 데이터 학습을 위한 요구 사항:
- 데이터는 테이블 형식이어야 합니다.
- 예측하려는 값(대상 열)이 데이터에 있어야 합니다.
Important
자동화된 ML 실험은 ID 기반 데이터 액세스를 사용하는 데이터 세트에 대한 학습을 지원하지 않습니다.
원격 실험의 경우 원격 컴퓨팅에서 학습 데이터에 액세스할 수 있어야 합니다. 자동화된 ML은 원격 컴퓨팅에서 작업하는 경우에만 Azure Machine Learning TabularDatasets를 허용합니다.
Azure Machine Learning 데이터 세트는 다음과 같은 기능을 보여줍니다.
- 정적 파일 또는 URL 원본에서 작업 영역으로 데이터를 손쉽게 전송합니다.
- 클라우드 컴퓨팅 리소스에서 실행할 때 데이터를 학습 스크립트에 사용 가능
Dataset
클래스를 사용하여 원격 컴퓨팅 대상에 데이터를 탑재하는 예제는 데이터 세트를 사용하여 학습하는 방법을 참조하세요.
다음 코드는 웹 URL에서 TabularDataset을 만듭니다. 로컬 파일 및 데이터 저장소와 같은 다른 원본에서 데이터 세트를 만드는 방법에 대한 코드 예제는 TabularDataset 만들기를 참조하세요.
from azureml.core.dataset import Dataset
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
로컬 컴퓨팅 실험의 경우 처리 시간을 단축하기 위해 pandas 데이터 프레임을 권장합니다.
import pandas as pd
from sklearn.model_selection import train_test_split
df = pd.read_csv("your-local-file.csv")
train_data, test_data = train_test_split(df, test_size=0.1, random_state=42)
label = "label-col-name"
학습, 유효성 검사 및 테스트 데이터
별도의 학습 데이터 및 유효성 검사 데이터 세트를 AutoMLConfig
생성자에서 직접 지정할 수 있습니다. AutoML 실험에 대한 학습, 유효성 검사, 교차 유효성 검사 및 테스트 데이터를 구성하는 방법을 자세히 알아보세요.
validation_data
또는 n_cross_validation
매개 변수를 명시적으로 지정하지 않는 경우 자동화된 ML은 유효성 검사가 수행되는 방식을 결정하는 기본 기술을 적용합니다. 이러한 결정은 training_data
매개 변수에 할당된 데이터 세트의 행 수에 따라 달라집니다.
학습 데이터 크기 | 유효성 검사 기법 |
---|---|
20,000개 행 이상인 경우 | 학습/유효성 검사 데이터 분할이 적용됩니다. 기본값은 초기 학습 데이터 세트의 10%를 유효성 검사 세트로 사용하는 것입니다. 그러면 해당 유효성 검사 집합이 메트릭 계산에 사용됩니다. |
20,000개 행 이하인 경우 | 교차 유효성 검사 방법이 적용됩니다. 기본 접기 횟수는 행의 수에 따라 달라집니다. 데이터 세트의 행이 1,000개 이하인 경우 10겹 접기가 사용됩니다. 행이 1,000 ~ 2만 개 사이인 경우 세 개의 접기가 사용됩니다. |
팁
자동화된 ML이 생성한 모델을 평가하는 테스트 데이터(미리 보기)를 업로드할 수 있습니다. 이러한 기능은 실험적 미리 보기 기능이며 언제든지 변경될 수 있습니다. 다음의 방법을 알아보세요.
코드 없는 환경을 선호하는 경우 스튜디오 UI를 사용하여 AutoML 설정의 12단계를 참조하세요.
큰 데이터
자동화된 ML은 작은 가상 머신에서 빅 데이터에 대한 모델을 성공적으로 빌드할 수 있는 큰 데이터 학습에 대해 제한된 수의 알고리즘을 지원합니다. 자동화된 ML 추론은 데이터 크기, 가상 머신 메모리 크기, 실험 시간 제한, 기능화 설정과 같은 속성에 따라 이러한 큰 데이터 알고리즘을 적용해야 하는지 여부를 결정합니다. 자동화된 ML에서 지원되는 모델에 대해 자세히 알아보세요.
회귀의 경우 온라인 그라데이션 하강 회귀 변수 및 고속 선형 회귀 변수가 지원됩니다.
분류의 경우 평균 퍼셉트론 분류자 및 선형 SVM 분류자가 지원됩니다. 여기서 선형 SVM 분류자에는 큰 데이터 및 작은 데이터 버전이 있습니다.
이러한 추론을 재정의하려면 다음 설정을 적용하세요.
작업 | 설정 | 주의 |
---|---|---|
데이터 스트리밍 알고리즘 차단 | AutoMLConfig 개체의 blocked_models 이며 사용하지 않으려는 모델을 나열합니다. |
실행이 실패하거나 실행 시간이 길어집니다. |
데이터 스트리밍 알고리즘 사용 | AutoMLConfig 개체의 allowed_models 이며 사용하려는 모델을 나열합니다. |
|
데이터 스트리밍 알고리즘 사용 (Studio UI 실험) |
사용하려는 빅 데이터 알고리즘을 제외한 모든 모델을 차단합니다. |
실험 실행 컴퓨팅
다음으로, 모델을 학습할 위치를 결정합니다. 자동화된 ML 학습 실험은 다음과 같은 컴퓨팅 옵션에서 실행할 수 있습니다.
로컬 컴퓨팅 선택: 작은 데이터와 짧은 학습을 사용하는 초기 검색 또는 데모(예: 자식 실행당 몇 초 또는 몇 분)에 대한 시나리오인 경우 로컬 컴퓨터에 대한 학습이 더 적합할 수 있습니다. 설치 시간이 없으며, 인프라 리소스(PC 또는 VM)를 직접 사용할 수 있습니다. 로컬 계산 예는 이 Notebook 을 참조하세요.
원격 ML 컴퓨팅 클러스터 선택: 더 긴 학습이 필요한 모델을 생성하는 프로덕션 교육처럼 대규모 데이터세트를 사용하여 교육하는 경우,
AutoML
이 클러스터 노드 간에 학습을 병렬화하므로 원격 컴퓨팅은 엔드투엔드 시간 성능을 훨씬 더 향상할 수 있습니다. 원격 컴퓨팅에서 내부 인프라의 시작 시간은 자식 실행당 약 1.5분, VM이 아직 가동되지 않은 경우 클러스터 인프라의 시간이 추가됩니다. Azure Machine Learning Managed Compute는 Azure 가상 머신의 클러스터에서 기계 학습 모델을 학습시킬 수 있는 관리되는 서비스입니다. 컴퓨팅 인스턴스도 컴퓨팅 대상으로 지원됩니다.Azure 구독의 Azure Databricks 클러스터. 자세한 내용은 자동화된 ML에 대한 Azure Databricks 클러스터 설정에서 확인할 수 있습니다. Azure Databricks를 사용하는 Notebook의 예는 이 GitHub 사이트를 참조하세요.
컴퓨팅 대상을 선택하는 경우 고려해야 하는 요소는 다음과 같습니다.
장점 | 단점 | |
---|---|---|
로컬 컴퓨팅 대상 | ||
원격 ML 컴퓨팅 클러스터 |
실험 설정 구성
자동화된 ML 실험을 구성하는 데 사용할 수 있는 몇 가지 옵션이 있습니다. 이러한 매개 변수는 AutoMLConfig
개체를 인스턴스화하여 설정됩니다. 매개 변수의 전체 목록은 AutoMLConfig 클래스를 참조하세요.
다음은 분류 작업을 위한 예제입니다. 실험에서는 AUC 가중치를 기본 메트릭으로 사용하고 실험 시간 제한이 30분으로 설정되고 교차 유효성 검사 접기가 2회로 설정됩니다.
automl_classifier=AutoMLConfig(task='classification',
primary_metric='AUC_weighted',
experiment_timeout_minutes=30,
blocked_models=['XGBoostClassifier'],
training_data=train_data,
label_column_name=label,
n_cross_validations=2)
추가로 설치해야 하는 예측 작업을 구성할 수도 있습니다. 자세한 내용은 시계열 예측을 위한 AutoML 설정 문서를 참조하세요.
time_series_settings = {
'time_column_name': time_column_name,
'time_series_id_column_names': time_series_id_column_names,
'forecast_horizon': n_test_periods
}
automl_config = AutoMLConfig(
task = 'forecasting',
debug_log='automl_oj_sales_errors.log',
primary_metric='normalized_root_mean_squared_error',
experiment_timeout_minutes=20,
training_data=train_data,
label_column_name=label,
n_cross_validations=5,
path=project_folder,
verbosity=logging.INFO,
**time_series_settings
)
지원되는 모델
자동화된 Machine Learning은 자동화 및 튜닝 프로세스 동안 다양한 모델 및 알고리즘을 지원합니다. 사용자는 알고리즘을 지정할 필요가 없습니다.
적용할 알고리즘 또는 모델의 목록을 결정하는 세 가지 서로 다른 task
매개 변수 값이 있습니다. allowed_models
또는 blocked_models
매개 변수를 사용하여 가용 모델을 포함 또는 제외하도록 반복을 추가로 수정합니다.
다음 표에는 작업 유형별로 지원되는 모델이 요약되어 나와 있습니다.
참고 항목
자동화된 ML에서 만든 모델을 ONNX 모델로 내보내려는 경우 별표(*)가 표시된 알고리즘만 ONNX 형식으로 변환할 수 있습니다. 모델을 ONNX로 변환하는 방법에 대해 자세히 알아보세요.
ONNX는 현재 분류 및 회귀 작업만 지원한다는 사실도 기억하세요.
기본 메트릭
primary_metric
매개 변수는 최적화를 위해 모델을 학습시키는 동안 사용할 메트릭을 결정합니다. 사용할 수 있는 메트릭은 선택한 작업 유형에 따라 결정됩니다.
자동화된 ML을 통해 최적화할 기본 메트릭 선택은 다양한 요인에 따라 달라집니다. 비즈니스 요구를 가장 잘 나타내는 메트릭을 선택하는 것이 가장 중요한 고려 사항입니다. 그런 다음, 메트릭이 데이터 세트 프로필(데이터 크기, 범위, 클래스 분포 등)에 적합한지를 고려합니다. 다음 섹션에는 작업 유형 및 비즈니스 시나리오에 따라 권장되는 기본 메트릭이 요약되어 있습니다.
자동화된 Machine Learning 결과 이해에서 이러한 메트릭의 정의에 대해 알아보세요.
분류 시나리오에 대한 메트릭
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 |
회귀 시나리오에 대한 메트릭
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
이 실제 값과 예측 간의 순위 상관 관계를 측정하므로 더 적합할 수 있습니다.
그러나 현재 회귀에 대한 기본 메트릭은 상대 차이를 해결하지 않습니다. r2_score
, normalized_mean_absolute_error
및 normalized_root_mean_squared_error
는 두 데이터 요소가 회귀 분석을 위한 동일한 데이터 세트에 속하거나 시계열 식별자로 지정된 동일한 시계열인 경우, 2만 달러 예측 오차를 급여가 3만 달러인 작업자나 수입이 2천만 달러인 작업자 모두 동일하게 처리합니다. 실제로는 3만 달러에서 2만 달러를 예측하는 것은 근접하지 않은 반면(상대 오차가 67%로 큼), 2천만 달러 급여에서 2만 달러를 예측하는 것은 매우 근접합니다(상대 오차가 0.1%로 적음). 상대 차이의 문제를 해결하려면 사용 가능한 기본 메트릭을 사용하여 모델을 학습한 다음 최선의 mean_absolute_percentage_error
또는 root_mean_squared_log_error
를 갖는 모델을 선택할 수 있습니다.
메트릭 | 사용 사례 예제 |
---|---|
spearman_correlation |
|
normalized_root_mean_squared_error |
가격 예측(집/제품/팁), 점수 예측 검토 |
r2_score |
항공 지연, 급여 추정, 버그 해결 시간 |
normalized_mean_absolute_error |
시계열 예측 시나리오에 대한 메트릭
권장 사항은 회귀 시나리오에서 언급된 사항과 유사합니다.
메트릭 | 사용 사례 예제 |
---|---|
normalized_root_mean_squared_error |
가격 예측(예측), 재고 최적화, 수요 예측 |
r2_score |
가격 예측(예측), 재고 최적화, 수요 예측 |
normalized_mean_absolute_error |
데이터 기능화
모든 자동화된 ML 실험에서는 규모가 서로 다른 기능에 중요한 ‘특정’ 알고리즘을 지원할 수 있도록 데이터가 자동으로 스케일링 및 정규화됩니다. 이러한 스케일링 및 정규화를 기능화라고 합니다. 자세한 내용 및 코드 예제는 AutoML의 기능화를 참조하세요.
참고 항목
자동화된 Machine Learning 기능화 단계(기능 정규화, 누락된 데이터 처리, 텍스트를 숫자로 변환 등)는 기본 모델의 일부가 됩니다. 예측에 모델을 사용하는 경우 학습 중에 적용되는 동일한 기능화 단계가 입력 데이터에 자동으로 적용됩니다.
AutoMLConfig
개체에서 실험을 구성할 때 featurization
설정을 사용하거나 사용하지 않도록 설정할 수 있습니다. 다음 표는 AutoMLConfig 개체에서 기능화에 허용되는 설정을 보여 줍니다.
기능화 구성 | 설명 |
---|---|
"featurization": 'auto' |
전처리의 일부로 데이터 가드 레일 및 기능화 단계가 자동으로 수행된다는 것을 나타냅니다. 기본 설정. |
"featurization": 'off' |
기능화 단계를 자동으로 수행하면 안 된다는 것을 나타냅니다. |
"featurization": 'FeaturizationConfig' |
사용자 지정된 기능화 단계를 사용해야 한다는 것을 나타냅니다. 기능화를 사용자 지정하는 방법을 알아보세요. |
앙상블 구성
앙상블 모델은 기본적으로 사용하도록 설정되며, AutoML 실행에서 최종 실행 반복으로 표시됩니다. 현재 VotingEnsemble 및 StackEnsemble이 지원됩니다.
투표는 가중치 평균을 사용하는 소프트 투표를 구현합니다. 스택 구현은 2계층 구현을 사용하는데, 여기서 첫 번째 계층은 투표 앙상블과 동일한 모델을 사용하고, 두 번째 계층 모델은 첫 번째 계층에서 최적의 모델 조합을 찾는 데 사용됩니다.
ONNX 모델을 사용하는 경우 또는 모델 설명 가능성을 사용하도록 설정한 경우 스택이 사용되지 않고 투표만 사용됩니다.
앙상블 학습은 enable_voting_ensemble
및 enable_stack_ensemble
부울 매개 변수를 사용하여 비활성화할 수 있습니다.
automl_classifier = AutoMLConfig(
task='classification',
primary_metric='AUC_weighted',
experiment_timeout_minutes=30,
training_data=data_train,
label_column_name=label,
n_cross_validations=5,
enable_voting_ensemble=False,
enable_stack_ensemble=False
)
기본 앙상블 동작을 변경하기 위해 AutoMLConfig
개체에 kwargs
로 제공할 수 있는 여러 기본 인수가 있습니다.
Important
다음 매개 변수는 AutoMLConfig 클래스의 명시적 매개 변수가 아닙니다.
ensemble_download_models_timeout_sec
: VotingEnsemble 및 StackEnsemble 모델이 생성되는 동안 이전 자식 실행에서 여러 맞춤 모델이 다운로드됩니다.AutoMLEnsembleException: Could not find any models for running ensembling
오류가 발생할 경우 모델 다운로드 시간을 더 길게 해야 할 수도 있습니다. 모델을 병렬로 다운로드하는 기본값은 300초이고 최대 시간 제한은 없습니다. 시간이 더 필요한 경우 이 매개 변수를 300초보다 큰 값으로 구성합니다.참고 항목
시간 제한에 도달했을 때 다운로드된 모델이 있으면 그때까지 다운로드된 모델을 사용하여 앙상블이 진행됩니다. 시간 제한 내에 완료하려면 반드시 모든 모델을 다운로드해야 하는 것은 아닙니다. 다음 매개 변수는 StackEnsemble 모델에만 적용됩니다.
stack_meta_learner_type
: 메타 학습자은 개별 이기종 모델의 출력에 대해 학습된 모델입니다. 기본 메타 학습자는 분류 작업인 경우LogisticRegression
(또는 교차 유효성 검사를 사용하는 경우LogisticRegressionCV
)이고, 회귀/예측 작업인 경우ElasticNet
(교차 유효성 검사를 사용하는 경우ElasticNetCV
)입니다. 이 매개 변수는 문자열LogisticRegression
,LogisticRegressionCV
,LightGBMClassifier
,ElasticNet
,ElasticNetCV
,LightGBMRegressor
또는LinearRegression
중 하나입니다.stack_meta_learner_train_percentage
: (학습의 학습 및 유효성 검사 유형을 선택할 때) 메타 학습자의 학습을 위해 예약할 학습 세트의 비율을 지정합니다. 기본값은0.2
여야 합니다.stack_meta_learner_kwargs
: 메타 학습자의 이니셜라이저에 전달할 선택적 매개 변수입니다. 이러한 매개 변수 및 매개 변수 형식은 해당 모델 생성자의 매개 변수 및 매개 변수 형식을 미러링하며, 모델 생성자에 전달됩니다.
다음 코드는 AutoMLConfig
개체에서 사용자 지정 앙상블 동작을 지정하는 예를 보여줍니다.
ensemble_settings = {
"ensemble_download_models_timeout_sec": 600
"stack_meta_learner_type": "LogisticRegressionCV",
"stack_meta_learner_train_percentage": 0.3,
"stack_meta_learner_kwargs": {
"refit": True,
"fit_intercept": False,
"class_weight": "balanced",
"multi_class": "auto",
"n_jobs": -1
}
}
automl_classifier = AutoMLConfig(
task='classification',
primary_metric='AUC_weighted',
experiment_timeout_minutes=30,
training_data=train_data,
label_column_name=label,
n_cross_validations=5,
**ensemble_settings
)
종료 기준
실험을 종료하도록 AutoMLConfig에서 정의할 수 있는 몇 가지 옵션이 있습니다.
조건 | description |
---|---|
조건 없음 | 종료 매개 변수를 정의하지 않으면 기본 메트릭에서 더 이상 진행되지 않을 때까지 실험이 계속됩니다. |
일정 시간 후 | 설정에서 experiment_timeout_minutes 를 사용하여 실험을 계속 실행해야 하는 시간(분)을 정의합니다. 실험 시간 초과 실패를 방지하기 위해 최소 15분, 또는 행 * 열 크기가 1000만을 초과할 경우 60분으로 설정됩니다. |
특정 점수에 도달함 | experiment_exit_score 를 사용하면 지정한 기본 메트릭 점수에 도달한 후 실험이 완료됩니다. |
실험 실행
Warning
동일한 구성 설정과 기본 메트릭을 사용하여 여러 번 실험을 실행한 경우 각 실험의 최종 메트릭 점수 및 생성된 모델에 변동이 있을 가능성이 높습니다. 자동화된 ML이 채택하는 알고리즘에는 내재된 무작위성이 있어서 실험에 의한 모델 출력 및 권장된 모델의 최종 메트릭 점수(예: 정확도)에 약간의 변동을 일으킬 수 있습니다. 모델 이름이 동일한 결과가 표시될 수도 있지만 다른 하이퍼 매개 변수가 사용되었습니다.
자동화된 ML의 경우 실험을 실행하는 데 사용되는 Workspace
의 명명된 개체인 Experiment
개체를 만들 수 있습니다.
from azureml.core.experiment import Experiment
ws = Workspace.from_config()
# Choose a name for the experiment and specify the project folder.
experiment_name = 'Tutorial-automl'
project_folder = './sample_projects/automl-classification'
experiment = Experiment(ws, experiment_name)
실행하려는 실험을 제출하고 모델을 생성합니다. AutoMLConfig
를 submit
메서드에 전달하여 모델을 생성합니다.
run = experiment.submit(automl_config, show_output=True)
참고 항목
새 머신에 먼저 종속성이 설치됩니다. 출력이 표시되는 데 최대 10분이 걸릴 수 있습니다.
show_output
을 True
로 설정하면 출력이 콘솔에 표시됩니다.
클러스터에서 여러 자식 실행
자동화된 ML 실험 자식 실행은 이미 다른 실험을 실행하고 있는 클러스터에서 수행할 수 있습니다. 그러나 타이밍은 클러스터에 포함된 노드 수와 해당 노드를 사용하여 다른 실험을 실행할 수 있는지 여부에 따라 달라집니다.
클러스터의 각 노드는 단일 학습 실행을 달성할 수 있는 개별 VM(가상 머신)의 역할을 합니다. 자동화된 ML의 경우 이는 자식 실행을 의미합니다. 모든 노드가 사용 중이면 새 실험은 큐에 추가됩니다. 그러나 무료 노드가 있는 경우 새 실험은 사용 가능한 노드/VM에서 병렬로 자동화된 ML 자식 실행을 실행합니다.
자식 실행 및 수행 가능한 시기를 관리하는 데 도움이 되도록 실험당 전용 클러스터를 만들고 실험의 max_concurrent_iterations
수를 클러스터의 노드 수와 일치시키는 것이 좋습니다. 이러한 방식으로 클러스터의 모든 노드를 동시에 사용하여 원하는 동시 자식 실행/반복 횟수를 지정할 수 있습니다.
AutoMLConfig
개체에서 max_concurrent_iterations
을 구성합니다. 구성되지 않은 경우에는 기본적으로 실험당 하나의 동시 자식 실행/반복만 허용됩니다.
컴퓨팅 인스턴스의 경우 max_concurrent_iterations
를 컴퓨팅 인스턴스 VM의 코어 수와 동일하게 설정할 수 있습니다.
모델 및 메트릭 탐색
자동화된 ML은 학습 결과를 모니터링하고 평가할 수 있는 옵션을 제공합니다.
Notebook을 사용 중이면 위젯 또는 인라인에서 결과를 볼 수 있습니다. 자세한 내용은 자동화된 Machine Learning 실행 모니터링을 참조하세요.
각 실행에 대해 제공되는 성능 차트 및 메트릭의 정의와 예제는 자동화된 Machine Learning 실험 결과 평가를 참조하세요.
기능화 요약을 얻고 특정 모델에 추가된 기능을 이해하려면 기능화 투명도를 참조하세요.
사용자 지정 코드 솔루션 print_model()
을 사용하여 특정 자동화된 ML 실행에 적용되는 하이퍼 매개 변수, 스케일링 및 정규화 기술 및 알고리즘을 볼 수 있습니다.
팁
자동화된 ML을 사용하면 Auto ML 학습 모델에 대해 생성된 모델 학습 코드를 확인할 수도 있습니다. 이 기능은 공개 미리 보기로 제공되며 언제든지 변경될 수 있습니다.
자동화된 Machine Learning 실행 모니터링
자동화된 ML 실행에서 이전 실행의 차트에 액세스하려면 <<experiment_name>>
을 적절한 실험 이름으로 바꿉니다.
from azureml.widgets import RunDetails
from azureml.core.run import Run
experiment = Experiment (workspace, <<experiment_name>>)
run_id = 'autoML_my_runID' #replace with run_ID
run = Run(experiment, run_id)
RunDetails(run).show()
모델 테스트(미리 보기)
Important
자동화된 ML이 생성한 모델을 평가하기 위해 테스트 데이터 세트를 사용하여 모델을 테스트하는 기능은 미리 보기입니다. 이 기능은 실험적인 미리 보기 기능으로, 언제든지 변경할 수 있습니다.
Warning
다음 자동화된 ML 시나리오에서는 이 기능을 사용할 수 없습니다.
test_data
또는 test_size
매개 변수를 AutoMLConfig
에 전달하면 제공된 테스트 데이터를 사용하는 원격 테스트 실행을 자동으로 트리거하여 실험 완료 시 자동화된 ML에서 권장하는 최상의 모델을 평가합니다. 이 원격 테스트 실행은 실험의 끝부분에서 최상의 모델이 결정되면 수행됩니다. 테스트 데이터를 AutoMLConfig
에 전달하는 방법을 참조하세요.
테스트 작업 결과 가져오기
Azure Machine Learning 스튜디오에서 또는 다음 코드를 사용하여 원격 테스트 작업의 예측 및 메트릭을 가져올 수 있습니다.
best_run, fitted_model = remote_run.get_output()
test_run = next(best_run.get_children(type='automl.model_test'))
test_run.wait_for_completion(show_output=False, wait_post_processing=True)
# Get test metrics
test_run_metrics = test_run.get_metrics()
for name, value in test_run_metrics.items():
print(f"{name}: {value}")
# Get test predictions as a Dataset
test_run_details = test_run.get_details()
dataset_id = test_run_details['outputDatasets'][0]['identifier']['savedId']
test_run_predictions = Dataset.get_by_id(workspace, dataset_id)
predictions_df = test_run_predictions.to_pandas_dataframe()
# Alternatively, the test predictions can be retrieved via the run outputs.
test_run.download_file("predictions/predictions.csv")
predictions_df = pd.read_csv("predictions.csv")
모델 테스트 작업은 predictions.csv 파일을 생성하여 작업 영역을 사용하여 만든 기본 데이터 저장소에 저장합니다. 이 데이터 저장소는 동일한 구독의 모든 사용자에게 표시됩니다. 테스트 작업에 사용되거나 테스트 작업에 의해 만들어진 정보가 비공개로 유지되어야 하는 경우 테스트 작업은 시나리오에 권장되지 않습니다.
기존의 자동화된 ML 모델 테스트
기존에 빌드한 다른 자동화된 ML 모델, 최상의 작업 또는 자식 작업을 테스트하려면 주 AutoML 실행이 완료된 후 ModelProxy()
를 사용하여 모델을 테스트합니다. ModelProxy()
는 이미 예측 및 메트릭을 반환하며 출력을 검색하는 데 추가 처리가 필요하지 않습니다.
참고 항목
ModelProxy는 실험적 미리 보기 클래스이며 언제든지 변경될 수 있습니다.
다음 코드에서는 ModelProxy.test() 메서드를 사용하여 모든 실행에서 모델을 테스트하는 방법을 보여줍니다. test() 메서드에는 include_predictions_only
매개 변수를 사용하여 테스트 실행의 예측만 확인할지 여부를 지정하는 옵션이 있습니다.
from azureml.train.automl.model_proxy import ModelProxy
model_proxy = ModelProxy(child_run=my_run, compute_target=cpu_cluster)
predictions, metrics = model_proxy.test(test_data, include_predictions_only= True
)
모델 등록 및 배포
모델을 테스트하고 프로덕션에서 사용할 수 있는지 확인한 후에는 나중에 사용하기 위해 모델을 등록할 수 있습니다.
자동화된 ML 실행에서 모델을 등록하려면 register_model()
메서드를 사용합니다.
best_run = run.get_best_child()
print(fitted_model.steps)
model_name = best_run.properties['model_name']
description = 'AutoML forecast example'
tags = None
model = run.register_model(model_name = model_name,
description = description,
tags = tags)
배포 구성을 만들고 웹 서비스에 등록된 모델을 배포하는 방법에 대한 자세한 내용은 모델을 배포하는 방법 및 위치를 참조하세요.
팁
등록된 모델의 경우 Azure Machine Learning 스튜디오를 통해 한 번 클릭으로 배포를 사용할 수 있습니다. 스튜디오에서 등록된 모델을 배포하는 방법을 참조하세요.
모델 해석력
모델 해석력을 통해 모델이 예측을 수행한 이유와 기본 기능 중요도 값을 이해할 수 있습니다. SDK에는 로컬 모델과 배포된 모델의 학습 및 유추 시간에 모델 해석력 기능을 사용할 수 있도록 다양한 패키지가 포함되어 있습니다.
특히 자동화된 ML 실험 내에서 해석력 기능을 사용하도록 설정하는 방법을 참조하세요.
자동화된 Machine Learning 외부의 다른 SDK 영역에서 모델 설명 및 기능 중요도를 사용하는 방법에 대한 일반적인 내용은 해석력에 대한 개념 문서를 참조하세요.
참고 항목
ForecastTCN 모델은 현재 설명 클라이언트에서 지원되지 않습니다. 이 모델은 최상의 모델로 반환되고 주문형 설명 실행을 지원하지 않는 경우 설명 대시보드를 반환하지 않습니다.
다음 단계
모델 배포 방법 및 위치에 대해 자세히 알아봅니다.
자동화된 Machine Learning을 사용하여 회귀 모델을 학습시키는 방법을 자세히 알아봅니다.