다음을 통해 공유


Azure Databricks AutoML Python API를 사용하여 ML 모델 학습

이 문서에서는 API를 사용하여 Azure Databricks AutoML을 사용하는 모델을 학습시키는 방법을 보여줍니다. AutoML이란?에 대해 자세히 알아보세요. Python API는 분류, 회귀 및 예측 AutoML 실행을 시작하는 함수를 제공합니다. 각 함수 호출은 일련의 모델을 학습하고 각 모델에 대한 평가판 Notebook을 생성합니다.

다음 단계에서는 일반적으로 API를 사용하여 AutoML 실험을 설정하는 방법을 설명합니다.

  1. Notebook 을 만들고 Databricks Runtime ML을 실행하는 클러스터에 연결합니다.
  2. 기존 데이터 원본에서 사용할 테이블을 식별하거나 DBFS 에 데이터 파일을 업로드하고 테이블을 만듭니다.
  3. AutoML 실행을 시작하려면 테이블 이름을 적절한 API 사양 인 분류, 회귀 또는 예측에 전달합니다.
  4. AutoML 실행이 시작되면 MLflow 실험 URL이 콘솔에 나타납니다. 이 URL을 사용하여 실행 진행 상황을 모니터링합니다. MLflow 실험을 새로 고침하여 완료되는 시도를 확인합니다.
  5. AutoML 실행이 완료된 후:
    • 출력 요약의 링크를 사용하여 MLflow 실험 또는 최상의 결과를 생성한 Notebook으로 이동합니다.
    • 데이터 탐색 Notebook에 대한 링크를 사용하여 AutoML에 전달된 데이터에 대한 인사이트를 가져옵니다. 이 Notebook을 동일한 클러스터에 연결하고 Notebook을 다시 실행하여 결과를 재현하거나 추가 데이터 분석을 수행할 수도 있습니다.
    • AutoML 호출에서 반환된 요약 개체를 사용하여 시도에 대한 자세한 내용을 탐색하거나 주어진 시도에서 학습된 모델을 로드합니다. AutoMLSummary 개체에 대해 자세히 알아보세요.
    • 평가판에서 생성된 Notebook을 복제하고 동일한 클러스터에 연결하여 Notebook을 다시 실행하여 결과를 재현합니다. 필요한 편집 작업을 수행하고 다시 실행하여 추가 모델을 학습하고 동일한 실험에 기록할 수도 있습니다.

요구 사항

AutoML 실험에 대한 요구 사항을 참조하세요.

분류 사양

다음 코드 예제에서는 분류 모델 학습을 위해 AutoML 실행을 구성합니다. AutoML 실행을 추가로 사용자 지정하는 추가 매개 변수는 분류 및 회귀 매개 변수를 참조하세요.

참고 항목

max_trials 매개 변수는 Databricks Runtime 10.4 ML에서 더 이상 사용되지 않으며 Databricks Runtime 11.0 ML 이상에서는 지원되지 않습니다. timeout_minutes를 사용하여 AutoML 실행 기간을 제어합니다.

databricks.automl.classify(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  data_dir: Optional[str] = None,
  exclude_cols: Optional[List[str]] = None,                      # <DBR> 10.3 ML and above
  exclude_frameworks: Optional[List[str]] = None,                   # <DBR> 10.3 ML and above
  experiment_dir: Optional[str] = None,                             # <DBR> 10.4 LTS ML and above
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 11.3 LTS ML and above
  imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
  max_trials: Optional[int] = None,                                 # <DBR> 10.5 ML and below
  pos_label: Optional[Union[int, bool, str] = None,                 # <DBR> 11.1 ML and above
  primary_metric: str = "f1",
  time_col: Optional[str] = None,
  timeout_minutes: Optional[int] = None,
) -> AutoMLSummary

회귀 사양

다음 코드 예제에서는 회귀 모델 학습을 위해 AutoML 실행을 구성합니다. AutoML 실행을 추가로 사용자 지정하는 추가 매개 변수는 분류 및 회귀 매개 변수를 참조하세요.

참고 항목

max_trials 매개 변수는 Databricks Runtime 10.4 ML에서 더 이상 사용되지 않으며 Databricks Runtime 11.0 ML 이상에서는 지원되지 않습니다. timeout_minutes를 사용하여 AutoML 실행 기간을 제어합니다.

databricks.automl.regress(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  data_dir: Optional[str] = None,
  exclude_cols: Optional[List[str]] = None,                      # <DBR> 10.3 ML and above
  exclude_frameworks: Optional[List[str]] = None,                   # <DBR> 10.3 ML and above
  experiment_dir: Optional[str] = None,                             # <DBR> 10.4 LTS ML and above
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 11.3 LTS ML and above
  imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
  max_trials: Optional[int] = None,                                 # <DBR> 10.5 ML and below
  primary_metric: str = "r2",
  time_col: Optional[str] = None,
  timeout_minutes: Optional[int] = None,
) -> AutoMLSummary

예측 사양

다음 코드 예제에서는 예측 모델 학습을 위해 AutoML 실행을 구성합니다. AutoML 실행 매개 변수에 대한 자세한 내용은 예측 매개 변수를 참조하세요. Auto-ARIMA를 사용하려면 시계열이 규칙적인 빈도를 가져야 합니다(즉, 두 지점 사이의 간격이 시계열 전체에서 동일해야 함). 빈도는 API 호출에 지정된 빈도 단위와 일치해야 합니다. AutoML은 해당 값을 이전 값으로 채워 누락된 시간 단계를 처리합니다.

databricks.automl.forecast(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  time_col: str,
  country_code: str = "US",                                         # <DBR> 12.0 ML and above
  data_dir: Optional[str] = None,
  exclude_frameworks: Optional[List[str]] = None,
  experiment_dir: Optional[str] = None,
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 12.2 LTS ML and above
  frequency: str = "D",
  horizon: int = 1,
  identity_col: Optional[Union[str, List[str]]] = None,
  output_database: Optional[str] = None,                            # <DBR> 10.5 ML and above
  primary_metric: str = "smape",
  timeout_minutes: Optional[int] = None,
) -> AutoMLSummary

분류 및 회귀 매개 변수

참고 항목

분류 및 회귀 문제의 경우에만 다음이 가능합니다.

  • 학습에 포함할 열을 지정합니다.
  • 사용자 지정 대치 메서드를 선택합니다.
필드 이름 Type 설명
데이터 세트 str pandas. DataFrame pyspark. DataFrame pyspark.sql.DataFrame 학습 기능 및 대상이 포함된 입력 테이블 이름 또는 DataFrame입니다.

테이블 이름은 "." 형식일 수 있습니다. 또는 "." Unity 카탈로그가 아닌 테이블의 경우
target_col str 대상 레이블의 열 이름입니다.
data_dir 형식의 str
dbfs:/<folder-name>
(선택 사항) 학습 데이터 세트를 저장하는 데 사용되는 DBFS 경로입니다. 이 경로는 드라이버 및 작업자 노드 모두에 표시됩니다.

Databricks는 이 필드를 비워 두는 것이 좋습니다. 따라서 AutoML은 학습 데이터 세트를 MLflow 아티팩트로 저장할 수 있습니다.

사용자 지정 경로가 지정된 경우 데이터 세트는 AutoML 실험의 액세스 권한을 상속하지 않습니다.
exclude_cols List[str] (선택 사항) AutoML 계산 중에 무시할 열 목록입니다.

기본값: []
exclude_ frameworks List[str] (선택 사항) AutoML이 모델을 개발할 때 고려해서는 안 되는 알고리즘 프레임워크 목록입니다. 가능한 값: 빈 목록 또는 "sklearn", "lightgbm", "xgboost" 중 하나 이상입니다.

기본값: [](모든 프레임워크가 고려됨)
experiment_dir str (선택 사항) 생성된 Notebooks 및 실험을 저장할 작업 영역의 디렉터리 경로입니다.

기본값: /Users/<username>/databricks_automl/
experiment_name str (선택 사항) AutoML에서 만드는 MLflow 실험의 이름입니다.

기본값: 이름이 자동으로 생성됩니다.
feature_store_ lookups List[Dict] (선택 사항) 데이터 보강을 위한 Feature Store의 기능을 나타내는 사전 목록입니다. 각 사전의 유효한 키:

* table_name(str): 필수. 기능 테이블의 이름입니다.
* lookup_key(list 또는 str): 필수. 기능 테이블을
dataset 매개 변수에 전달된 데이터와 조인할 때 키로 사용할 열 이름입니다. 열 이름의 순서는 기능 테이블의 기본 키 순서와 일치해야 합니다.
* timestamp_lookup_key(str): 지정된 테이블이 시계열 기능 테이블인 경우 필수입니다. dataset 매개 변수에 전달된 데이터를 사용하여 기능 테이블에서 지정 시간 조회를 수행할 때 사용할 열 이름입니다.

기본값: []
대치자 Dict[str, Union[str, Dict[str, Any]]] (선택 사항) 각 키는 열 이름이고 각 값은 대치 전략을 설명하는 사전 또는 문자열인 사전입니다. 문자열로 지정된 경우 값은 "mean", "median" 또는 "most_frequent" 중 하나여야 합니다. 알려진 값을 사용하려면 값을 사전으로 지정합니다.
{"strategy": "constant", "fill_value": <desired value>}. 문자열 옵션을 사전으로 지정할 수도 있습니다(예: {"strategy": "mean"}).

열에 대치 전략이 제공되지 않으면 AutoML은 열 형식과 콘텐츠에 따라 기본 전략을 선택합니다. 기본값이 아닌 대치 메서드를 지정하면 AutoML이 의미 체계 유형 검색을 수행하지 않습니다.

기본값: {}
max_trials int (선택 사항) 실행할 최대 시도 횟수입니다.

이 매개 변수는 Databricks Runtime 10.5 ML 이하에서 사용할 수 있지만 Databricks Runtime 10.3 ML부터는 사용되지 않습니다. Databricks Runtime 11.0 ML 이상에서는 이 매개 변수가 지원되지 않습니다.

기본값: 20

timeout_minutes=None인 경우 AutoML은 최대 시도 횟수를 실행합니다.
pos_label Union[int, bool, str] (분류만 해당) 양수 클래스입니다. 정밀도 및 재현율과 같은 메트릭을 계산하는 데 유용합니다. 이진 분류 문제에 대해서만 지정해야 합니다.
primary_metric str 모델 성능을 평가하고 순위를 지정하는 데 사용되는 메트릭입니다.

회귀에 지원되는 메트릭: "r2"(기본값), "mae", "rmse", "mse"

분류에 지원되는 메트릭: "f1"(기본값), "log_loss", "precision", "accuracy", "roc_auc"
time_col str Databricks Runtime 10.1 ML 이상에서 사용할 수 있습니다.

(선택 사항) 시간 열의 열 이름입니다.

제공되는 경우 AutoML은 가장 이른 포인트를 학습 데이터로 사용하고 최신 포인트를 테스트 집합으로 사용하여 데이터 세트를 시간순으로 학습, 유효성 검사 및 테스트 집합으로 분할하려고 시도합니다.

허용되는 열 유형은 타임스탬프와 정수입니다. Databricks Runtime 10.2 ML 이상에서는 문자열 열도 지원됩니다. 열 유형이 문자열인 경우 AutoML은 의미 체계 검색을 사용하여 이를 타임스탬프로 변환하려고 시도합니다. 변환에 실패하면 AutoML 실행이 실패합니다.
timeout_minutes int (선택 사항) AutoML 시도가 완료될 때까지 기다리는 최대 시간입니다. 시간 초과가 길수록 AutoML은 더 많이 시도하여 더 나은 정확도로 모델을 식별할 수 있습니다.

기본값: 120분

최소값: 5분

제한 시간이 너무 짧아서 하나 이상의 시도를 완료할 수 없으면 오류가 보고됩니다.

예측 매개 변수

필드 이름 Type 설명
데이터 세트 str

팬더. DataFrame pyspark. DataFrame pyspark.sql.DataFrame
학습 기능 및 대상이 포함된 입력 테이블 이름 또는 DataFrame입니다.

테이블 이름은 "." 형식일 수 있습니다. 또는 "." Unity 카탈로그가 아닌 테이블의 경우
target_col str 대상 레이블의 열 이름입니다.
time_col str 예측을 위한 시간 열의 이름입니다.
frequency str 예측을 위한 시계열의 빈도입니다. 이벤트가 발생할 것으로 예상되는 기간입니다. 기본 설정은 "D" 또는 일일 데이터입니다. 데이터의 빈도가 다른 경우 이 설정을 변경해야 합니다.

가능한 값:

"W"(주)

“D” / “days” / “day”

“hours” / “hour” / “hr” / “h”

“m” / “minute” / “min” / “minutes” / “T”

“S” / “seconds” / “sec” / “second”

다음은 Databricks Runtime 12.0 ML 이상에서만 사용할 수 있습니다.

“M” / “month” / “months”

“Q” / “quarter” / “quarters”

“Y” / “year” / “years”

기본값: "D"
horizon int 예측이 반환되어야 하는 향후의 기간 수입니다. 단위는 시계열 주파수입니다. 기본값: 1
data_dir 형식의 str
dbfs:/<folder-name>
(선택 사항) 학습 데이터 세트를 저장하는 데 사용되는 DBFS 경로입니다. 이 경로는 드라이버 및 작업자 노드 모두에 표시됩니다.

Databricks는 이 필드를 비워 두는 것이 좋습니다. 따라서 AutoML은 학습 데이터 세트를 MLflow 아티팩트로 저장할 수 있습니다.

사용자 지정 경로가 지정된 경우 데이터 세트는 AutoML 실험의 액세스 권한을 상속하지 않습니다.
exclude_ frameworks List[str] (선택 사항) AutoML이 모델을 개발할 때 고려해서는 안 되는 알고리즘 프레임워크 목록입니다. 가능한 값: 빈 목록 또는 “prophet”, “arima” 중 하나 이상입니다. 기본값: [](모든 프레임워크가 고려됨)
experiment_dir str (선택 사항) 생성된 Notebooks 및 실험을 저장할 작업 영역의 디렉터리 경로입니다.

기본값: /Users/<username>/databricks_automl/
experiment_name str (선택 사항) AutoML에서 만드는 MLflow 실험의 이름입니다.

기본값: 이름이 자동으로 생성됩니다.
feature_store_ lookups List[Dict] (선택 사항) 데이터 보강을 위한 Feature Store의 기능을 나타내는 사전 목록입니다. 각 사전의 유효한 키:

* table_name(str): 필수. 기능 테이블의 이름입니다.
* lookup_key(list 또는 str): 필수. 기능 테이블을
dataset 매개 변수에 전달된 데이터와 조인할 때 키로 사용할 열 이름입니다. 열 이름의 순서는 기능 테이블의 기본 키 순서와 일치해야 합니다.
* timestamp_lookup_key(str): 지정된 테이블이 시계열 기능 테이블인 경우 필수입니다. dataset 매개 변수에 전달된 데이터를 사용하여 기능 테이블에서 지정 시간 조회를 수행할 때 사용할 열 이름입니다.

기본값: []
identity_col 합집합[str, list] (선택 사항) 다중 시리즈 예측을 위한 시계열을 식별하는 열입니다. AutoML은 이러한 열과 예측을 위한 시간 열을 기준으로 그룹화합니다.
output_database str (선택 사항) 제공되는 경우 AutoML은 지정된 데이터베이스의 새 테이블에 가장 적합한 모델의 예측을 저장합니다.

기본값: 예측은 저장되지 않습니다.
primary_metric str 모델 성능을 평가하고 순위를 지정하는 데 사용되는 메트릭입니다. 지원되는 메트릭: "smape"(기본값) "mse", "rmse", "mae" 또는 "mdape".
timeout_minutes int (선택 사항) AutoML 시도가 완료될 때까지 기다리는 최대 시간입니다. 시간 초과가 길수록 AutoML은 더 많이 시도하여 더 나은 정확도로 모델을 식별할 수 있습니다.

기본값: 120분

최소값: 5분

제한 시간이 너무 짧아서 하나 이상의 시도를 완료할 수 없으면 오류가 보고됩니다.
country_code str Databricks Runtime 12.0 ML 이상에서 사용할 수 있습니다. Prophet 예측 모델에서만 지원됩니다.

(선택 사항) 예측 모델에서 사용해야 하는 국가의 휴일을 나타내는 두 글자로 된 국가 코드입니다. 휴일을 무시하려면 이 매개 변수를 빈 문자열(“”)로 설정합니다. 지원되는 국가.

기본값: US(미국 휴일).

반환

AutoMLSummary

각 시도에 대한 메트릭, 매개 변수 및 기타 세부 정보를 설명하는 AutoML 실행에 대한 요약 개체입니다. 또한 이 개체를 사용하여 특정 시도에서 학습된 모델을 로드합니다.

속성 Type 설명
experiment mlflow.entities.Experiment 시도를 기록하는 데 사용되는 MLflow 실험입니다.
trials List[TrialInfo] 실행된 모든 시도에 대한 정보가 포함된 목록입니다.
best_trial TrialInfo 기본 메트릭에 대해 최고의 가중치 점수를 얻은 시도에 대한 정보입니다.
metric_distribution str 모든 시도에서 기본 메트릭에 대한 가중 점수 분포입니다.
output_table_name str output_database가 제공된 경우에만 예측과 함께 사용됩니다. 모델의 예측을 포함하는 output_database의 테이블 이름입니다.

TrialInfo

각 개별 시도에 대한 요약 개체입니다.

속성 Type 설명
notebook_path Optional[str] 작업 영역에서 이 평가판에 대해 생성된 Notebook의 경로입니다. 분류 및 회귀의 경우 이 값은 최상의 평가판에 대해서만 설정되지만 다른 모든 평가판의 경우 값은 로 설정됩니다 None. 예측의 경우 이 값은 모든 평가판에 존재합니다.
notebook_url Optional[str] 이 평가판에 대해 생성된 Notebook의 URL입니다. 분류 및 회귀의 경우 이 값은 최상의 평가판에 대해서만 설정되지만 다른 모든 평가판의 경우 값은 로 설정됩니다 None. 예측의 경우 이 값은 모든 평가판에 존재합니다.
artifact_uri Optional[str] 생성된 Notebook의 MLflow 아티팩트 URI입니다.
mlflow_run_id str 이 시험 실행과 연결된 MLflow 실행 ID입니다.
메트릭 Dict[str, float] 이 평가판에 대해 MLflow에 기록된 메트릭입니다.
params Dict[str, str] 이 평가판에 사용된 MLflow에 기록된 매개 변수입니다.
model_path str 이 시도에서 학습된 모델의 MLflow 아티팩트 URL입니다.
model_description str 이 모델을 학습하는 데 사용되는 모델 및 하이퍼 매개 변수에 대한 간략한 설명입니다.
duration str 학습 기간(분).
전처리기 str 모델을 학습하기 전에 실행되는 전처리기에 대한 설명입니다.
evaluation_metric_score float 유효성 검사 데이터 세트에 대해 평가된 기본 메트릭의 점수입니다.
메서드 설명
load_model() MLflow 아티팩트로 기록된 이 시도에서 생성된 모델을 로드합니다.

Notebook 가져오기

MLflow 아티팩트로 저장된 Notebook을 가져오려면 Python API를 databricks.automl.import_notebook 사용합니다.

def import_notebook(artifact_uri: str, path: str, overwrite: bool = False) -> ImportNotebookResult:
    """
    Import a trial notebook, saved as an MLflow artifact, into the workspace.

    :param artifact_uri: The URI of the MLflow artifact that contains the trial notebook.
    :param path: The path in the Databricks workspace where the notebook should be imported. This must be an absolute path. The directory will be created if it does not exist.
    :param overwrite: Whether to overwrite the notebook if it already exists. It is `False` by default.

    :return: ImportNotebookResult contains two fields, `path` and `url`, referring to the imported notebook
    """

사용 예제:

summary = databricks.automl.classify(...)
result = databricks.automl.import_notebook(summary.trials[5].artifact_uri, "/Users/you@yourcompany.com/path/to/directory")
print(result.path)
print(result.url)

모델 등록 및 배포

MLflow 모델 레지스트리에 등록된 모델과 마찬가지로 AutoML 학습 모델을 등록하고 배포할 수 있습니다. MLflow 모델 로그, 로드, 등록 및 배포를 참조하세요.

'pandas.core.indexes.numeric'이라는 모듈이 없습니다.

모델 제공과 함께 AutoML을 사용하여 빌드된 모델을 제공하는 경우 다음과 같은 오류가 발생할 No module named 'pandas.core.indexes.numeric수 있습니다.

이는 AutoML과 엔드포인트 환경을 제공하는 모델 간의 호환되지 않는 pandas 버전 때문입니다. add-pandas-dependency.py 스크립트실행하여 이 오류를 해결할 수 있습니다. 스크립트는 적절한 pandas 종속성 버전을 pandas==1.5.3포함하도록 기록된 모델을 편집 requirements.txt 합니다conda.yaml.

  1. 모델이 기록된 MLflow 실행을 포함 run_id 하도록 스크립트를 수정합니다.
  2. MLflow 모델 레지스트리에 모델을 다시 등록합니다.
  3. 새 버전의 MLflow 모델을 제공해 보세요.

Notebook 예제

AutoML을 시작하려면 이 Notebook을 검토합니다.

다음 Notebook에서는 AutoML을 사용하여 분류를 수행하는 방법을 보여 있습니다.

AutoML 분류 예제 Notebook

전자 필기장 가져오기

다음 Notebook에서는 AutoML을 사용하여 회귀를 수행하는 방법을 보여 있습니다.

AutoML 회귀 예제 Notebook

전자 필기장 가져오기

다음 Notebook에서는 AutoML을 사용하여 예측을 수행하는 방법을 보여 있습니다.

AutoML 예측 예제 Notebook

전자 필기장 가져오기

다음 Notebook에서는 AutoML 및 기능 저장소 기능 테이블을 사용하여 ML 모델을 학습하는 방법을 보여 줍니다.

Feature Store 예제 Notebook을 사용하여 AutoML 실험

전자 필기장 가져오기