엔드 투 엔드 AutoML로 모델 학습

이 페이지에서는 엔드 투 엔드 AutoML의 테이블 형식 워크플로를 사용하여 테이블 형식의 데이터 세트에서 분류 또는 회귀 모델을 학습시키는 방법을 설명합니다.

시작하기 전에

모델을 학습시키려면 먼저 다음을 완료해야 합니다.

엔드 투 엔드 AutoML에 대해 테이블 형식 워크플로를 실행하는 동안 할당량 관련 오류가 발생하면 더 높은 할당량을 요청해야 할 수 있습니다. 자세한 내용은 테이블 형식 워크플로의 할당량 관리를 참조하세요.

이전 초매개변수 조정 결과의 URI 가져오기

이전에 엔드 투 엔드 AutoML 워크플로 실행을 완료한 경우 이전 실행의 초매개변수 조정 결과를 사용하여 학습 시간과 리소스를 절약할 수 있습니다. Google Cloud 콘솔을 사용하거나 API를 사용하여 프로그래매틱 방식으로 로드하여 이전 초매개변수 조정 결과를 찾을 수 있습니다.

Google Cloud 콘솔

Google Cloud 콘솔을 사용하여 초매개변수 조정 결과 URI를 찾으려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 파이프라인 페이지로 이동합니다.

    파이프라인 페이지로 이동

  2. 실행 탭을 선택합니다.

  3. 사용할 파이프라인 실행을 선택합니다.

  4. 아티팩트 펼치기를 선택합니다.

  5. 구성요소 exit-handler-1을 클릭합니다.

  6. 구성요소 stage_1_tuning_result_artifact_uri_empty를 클릭합니다.

  7. 구성요소 automl-tabular-cv-trainer-2를 찾습니다.

  8. 연결된 아티팩트 tuning_result_output을 클릭합니다.

  9. 노드 정보 탭을 선택합니다.

  10. 모델 학습 단계에서 사용할 URI를 복사합니다.

아키텍처 검색결과

API: Python

다음 샘플 코드에서는 API를 사용하여 초매개변수 조정 결과를 로드하는 방법을 보여줍니다. job 변수는 이전 모델 학습 파이프라인 실행을 나타냅니다.


def get_task_detail(
  task_details: List[Dict[str, Any]], task_name: str
) -> List[Dict[str, Any]]:
  for task_detail in task_details:
      if task_detail.task_name == task_name:
          return task_detail

pipeline_task_details = job.gca_resource.job_detail.task_details

stage_1_tuner_task = get_task_detail(
    pipeline_task_details, "automl-tabular-stage-1-tuner"
)
stage_1_tuning_result_artifact_uri = (
    stage_1_tuner_task.outputs["tuning_result_output"].artifacts[0].uri
)

모델 학습

Google Cloud 콘솔

Google Cloud 콘솔을 사용하여 모델을 학습시키려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 파이프라인 페이지로 이동합니다.

    파이프라인 페이지로 이동

  2. 템플릿 갤러리 탭을 선택합니다.

  3. 테이블 형식 분류/회귀용 AutoML 카드에서 실행 만들기를 클릭합니다.

  4. 실행 세부정보 페이지에서 다음과 같이 구성합니다.

    1. 파이프라인 실행 이름을 입력합니다.
    2. 선택사항: Vertex AI Pipelines 서비스 계정 또는 Dataflow 작업자 서비스 계정을 설정하려면 고급 옵션을 엽니다. 서비스 계정 자세히 알아보기
    3. 계속을 클릭합니다.

  5. 런타임 구성 페이지에서 다음과 같이 구성합니다.

    1. Cloud Storage 버킷 또는 루트 출력 디렉터리로 사용할 버킷 내 폴더를 입력합니다. 이 디렉터리는 구체화된 데이터 세트 및 모델과 같은 중간 파일을 저장하는 데 사용됩니다. 학습이 완료되고 모델 및 기타 중요한 아티팩트가 다른 Cloud Storage 버킷에 복사된 후에는 디렉터리를 정리해야 합니다. 또는 Cloud Storage 버킷에 TTL(수명)을 설정합니다.

      프로젝트의 버킷은 Google Cloud 콘솔의 Cloud Storage 섹션에 나열됩니다.

      버킷 페이지로 이동

    2. 계속을 클릭합니다.

  6. 학습 방법 페이지에서 다음과 같이 구성합니다.

    1. 모델을 학습시키는 데 사용할 데이터 세트의 이름을 선택합니다.
    2. 타겟 열을 선택합니다. 타겟 열은 모델이 예측할 값입니다. 타겟 열 요구사항 자세히 알아보기
    3. 새 모델의 표시 이름을 입력합니다.
    4. 선택사항: 학습, 테스트, 검증 세트 간에 데이터를 분할하는 방법을 선택하려면 고급 옵션을 엽니다. 다음 데이터 분할 옵션 중에서 선택할 수 있습니다.
      • 무작위(기본값): Vertex AI가 각 데이터 세트와 연결된 행을 무작위로 선택합니다. 기본적으로 Vertex AI는 학습 데이터 세트의 80%를 학습 세트로, 10%를 검증 세트로, 10%를 테스트 세트로 선택합니다. 각 데이터 세트와 연결할 데이터 행의 비율을 설정합니다.
      • 수동: Vertex AI가 데이터 분할 열의 값을 기준으로 각 데이터 세트의 데이터 행을 선택합니다. 데이터 분할 열의 이름을 제공합니다.
      • 시간순: Vertex AI가 시간 열의 타임스탬프를 기준으로 데이터를 분할합니다. 시간 열의 이름을 제공합니다. 학습 세트, 검증 세트, 테스트 세트와 연결할 데이터 행의 비율을 설정할 수도 있습니다.
      • 계층화: Vertex AI가 각 데이터 세트와 연결된 행을 무작위로 선택하지만, 타겟 열 값의 분포를 유지합니다. 타겟 열의 이름을 제공합니다. 학습 세트, 검증 세트, 테스트 세트와 연결할 데이터 행의 비율을 설정할 수도 있습니다.
      데이터 분할 자세히 알아보기
    5. 선택사항: 아키텍처를 검색하지 않고 파이프라인을 실행할 수 있습니다. 아키텍처 검색 건너뛰기를 선택하면 학습 옵션 페이지에서 이전 파이프라인 실행의 초매개변수 집합을 제공하라는 메시지가 표시됩니다.
    6. 계속을 클릭합니다.

  7. 학습 옵션 페이지에서 다음과 같이 구성합니다.

    1. 선택사항: 통계 생성을 클릭합니다. 통계를 생성하면 변환 드롭다운 메뉴가 채워집니다.
    2. 열 목록을 검토하고 모델 학습에 사용하지 않아야 하는 열을 학습에서 제외합니다.
    3. 잘못된 데이터에 대한 허용 여부와 함께 포함된 특성에 대해 선택된 변환을 검토하고 필요한 업데이트를 수행합니다. 변환잘못된 데이터 자세히 알아보기
    4. 학습 방법 페이지에서 아키텍처 검색을 건너뛰도록 선택한 경우 이전 파이프라인 실행의 초매개변수 조정 결과 경로를 제공합니다.
    5. 선택사항: 가중치 열을 지정하려면 고급 옵션을 열고 원하는 대로 선택합니다. 가중치 열 자세히 알아보기
    6. 선택사항: 최적화 목표를 기본값에서 변경하려면 고급 옵션을 열고 원하는 대로 선택합니다. 최적화 목표 자세히 알아보기
    7. 선택사항: 학습 방법 페이지에서 아키텍처 검색을 수행하기로 선택한 경우 병렬 시도 수를 지정할 수 있습니다. 고급 옵션을 열고 원하는 값을 입력합니다.
    8. 선택사항: 초매개변수의 하위 집합에 고정 값을 제공할 수 있습니다. Vertex AI는 고정되지 않은 나머지 초매개변수의 최적 값을 검색합니다. 이 옵션은 모델 유형에 대한 선호도가 높은 경우에 적합합니다. 모델 유형에 신경망이나 부스팅된 트리를 선택할 수 있습니다. 고급 옵션을 열고 JSON 형식으로 연구 사양 재정의를 제공합니다.

      예를 들어 모델 유형을 신경망(NN)으로 설정하려면 다음을 입력합니다.

      [
        {
          "parameter_id": "model_type",
          "categorical_value_spec": {
            "values": ["nn"]
          }
        }
      ]
      

    9. 계속을 클릭합니다.

  8. 컴퓨팅 및 가격 책정 페이지에서 다음과 같이 구성합니다.

    1. 모델을 학습시킬 최대 시간을 입력합니다. 가격 책정 자세히 알아보기
    2. 선택사항: Compute 설정 섹션에서 워크플로의 단계별로 머신 유형과 머신 수를 구성할 수 있습니다. 이 옵션은 대규모 데이터 세트가 있고 이에 따라 머신 하드웨어를 최적화하려는 경우에 적합합니다.

  9. 제출을 클릭합니다.

API: Python

다음 샘플 코드에서는 모델 학습 파이프라인을 실행하는 방법을 보여줍니다.

job = aiplatform.PipelineJob(
    ...
    template_path=template_path,
    parameter_values=parameter_values,
    ...
)
job.run(service_account=SERVICE_ACCOUNT)

job.run()의 선택사항인 service_account 매개변수를 사용하면 Vertex AI Pipelines 서비스 계정을 원하는 계정으로 설정할 수 있습니다.

파이프라인과 매개변수 값은 다음 함수로 정의됩니다. 학습 데이터는 Cloud Storage의 CSV 파일이거나 BigQuery의 테이블일 수 있습니다.

template_path, parameter_values = automl_tabular_utils.get_automl_tabular_pipeline_and_parameters(...)

다음은 get_automl_tabular_pipeline_and_parameters 매개변수의 하위 집합입니다.

매개변수 이름 유형 정의
data_source_csv_filenames 문자열 Cloud Storage에 저장된 CSV의 URI입니다.
data_source_bigquery_table_path 문자열 BigQuery 테이블의 URI입니다.
dataflow_service_account 문자열 (선택사항) Dataflow 작업을 실행하기 위한 커스텀 서비스 계정입니다. 비공개 IP와 특정 VPC 서브넷을 사용하도록 Dataflow 작업은 비공개 IP와 특정 VPC 서브넷을 사용하도록 구성할 수 있습니다. 이 매개변수는 기본 Dataflow 작업자 서비스 계정을 재정의하는 역할을 합니다.
prediction_type 문자열 분류 모델을 학습시키려면 classification을 선택하고 회귀 모델을 학습시키려면 regression을 선택합니다.
optimization_objective 문자열 이진 분류 모델을 학습시키는 경우 기본 목표는 AUC ROC입니다. 회귀 모델을 학습시키는 경우 기본 목표는 RMSE입니다. 모델에 다른 최적화 목표가 필요한 경우 분류 또는 회귀 모델의 최적화 목표에 설명된 옵션 중 하나를 선택합니다.
enable_probabilistic_inference 불리언 회귀 모델을 학습시키는 중이고 이 값을 true로 설정하면 Vertex AI가 예측의 확률 분포를 모델링합니다. 확률적 추론은 노이즈가 많은 데이터를 처리하고 불확실성을 수치화하여 모델 품질을 향상시킬 수 있습니다. quantiles가 지정되면 Vertex AI에서 분포의 분위수를 반환합니다.
quantiles List[float] 확률적 추론에 사용할 분위수입니다. 분위수는 대상이 지정된 값보다 작을 가능성을 나타냅니다. 0~1 사이(제외)에서 최대 5개까지 고유 숫자 목록을 제공합니다.

워크플로 맞춤설정 옵션

파이프라인 정의 중에 전달되는 인수 값을 정의하여 엔드 투 엔드 AutoML 워크플로를 맞춤설정할 수 있습니다. 다음 방법으로 워크플로를 맞춤설정할 수 있습니다.

  • 검색 공간 재정의
  • 하드웨어 구성
  • 모델 추출
  • 아키텍처 검색 건너뛰기

검색 공간 재정의

다음 get_automl_tabular_pipeline_and_parameters 매개변수를 사용하면 초매개변수의 하위 집합에 고정 값을 제공할 수 있습니다. Vertex AI는 고정되지 않은 나머지 초매개변수의 최적 값을 검색합니다. 신경망과 부스팅된 트리 중 하나를 모델 유형으로 선택하려면 이 매개변수를 사용합니다.

매개변수 이름 유형 정의
study_spec_parameters_override 목록[사전[문자열, 무관]] (선택사항) 초매개변수의 커스텀 하위 집합입니다. 이 매개변수는 파이프라인의 automl-tabular-stage-1-tuner 구성요소를 구성합니다.

다음은 모델 유형을 신경망(NN)으로 설정하는 방법을 보여주는 코드입니다.

study_spec_parameters_override = [
  {
    "parameter_id": "model_type",
    "categorical_value_spec": {
      "values": ["nn"] # The default value is ["nn", "boosted_trees"], this reduces the search space
    }
  }
]

하드웨어 구성

다음 get_automl_tabular_pipeline_and_parameters 매개변수를 사용하면 학습에 사용할 머신 유형과 머신 수를 구성할 수 있습니다. 이 옵션은 대규모 데이터 세트가 있고 이에 따라 머신 하드웨어를 최적화하려는 경우에 적합합니다.

매개변수 이름 유형 정의
stage_1_tuner_worker_pool_specs_override 사전[문자열, 무관] (선택사항) 학습에 사용할 머신 유형과 머신 수에 대한 커스텀 구성입니다. 이 매개변수는 파이프라인의 automl-tabular-stage-1-tuner 구성요소를 구성합니다.
cv_trainer_worker_pool_specs_override 사전[문자열, 무관] (선택사항) 학습에 사용할 머신 유형과 머신 수에 대한 커스텀 구성입니다. 이 매개변수는 파이프라인의 automl-tabular-stage-1-tuner 구성요소를 구성합니다.

다음은 TensorFlow chief 노드의 n1-standard-8 머신 유형과 TensorFlow 평가자 노드의 n1-standard-4 머신 유형을 설정하는 방법을 보여주는 코드입니다.

worker_pool_specs_override = [
  {"machine_spec": {"machine_type": "n1-standard-8"}}, # override for TF chief node
  {},  # override for TF worker node, since it's not used, leave it empty
  {},  # override for TF ps node, since it's not used, leave it empty
  {
    "machine_spec": {
        "machine_type": "n1-standard-4" # override for TF evaluator node
    }
  }
]

모델 추출

get_automl_tabular_pipeline_and_parameters 매개변수를 사용하면 더 작은 앙상블 모델 버전을 만들 수 있습니다. 모델이 작을수록 예측의 지연 시간과 비용이 줄어듭니다.

매개변수 이름 유형 정의
run_distillation 불리언 TRUE이면 더 작은 앙상블 모델 버전을 만듭니다.

아키텍처 검색 건너뛰기

다음 get_automl_tabular_pipeline_and_parameters 매개변수를 사용하면 아키텍처를 검색하지 않고 파이프라인을 실행하고 대신 이전 파이프라인 실행의 초매개변수 집합을 제공할 수 있습니다.

매개변수 이름 유형 정의
stage_1_tuning_result_artifact_uri 문자열 (선택사항) 이전 파이프라인 실행의 초매개변수 조정 결과에 대한 URI입니다.

분류 또는 회귀 모델의 최적화 목표

모델을 학습시킬 때 Vertex AI는 모델 유형과 타겟 열에 사용된 데이터 유형을 기반으로 기본 최적화 목표를 선택합니다.

분류 모델은 다음 경우에 가장 적합합니다.
최적화 목표 API 값 목표 사용 목적
AUC ROC maximize-au-roc 수신자 조작 특성(ROC) 곡선 아래의 면적을 극대화합니다. 각 클래스를 구분합니다. 이진 분류의 기본값입니다.
로그 손실 minimize-log-loss 예측 확률을 최대한 정확하게 유지합니다. 다중 클래스 분류에만 지원되는 목표입니다.
AUC PR maximize-au-prc 정밀도-재현율 곡선 아래의 영역을 최대화합니다. 잘 사용하지 않는 클래스의 예측 결과를 최적화합니다.
재현율의 정밀도 maximize-precision-at-recall 특정 재현율 값에서 정밀도를 최적화합니다.
정밀도의 재현율 maximize-recall-at-precision 특정 정밀도 값에서 재현율을 최적화합니다.
회귀 모델은 다음과 같은 경우에 가장 적합합니다.
최적화 목표 API 값 목표 사용 목적
RMSE minimize-rmse 평균 제곱근 오차(RMSE)를 최소화합니다. 더 극한의 값을 정확하게 캡처합니다. 기본값
MAE minimize-mae 평균 절대 오차(MAE)를 최소화합니다. 극한 값을 모델에 미치는 영향이 적은 이상점으로 봅니다.
RMSLE minimize-rmsle 평균 제곱근 로그 오차(RMSLE)를 최소화합니다. 절댓값이 아닌 상대적 크기를 바탕으로 오류에 페널티를 적용합니다. 예측 값과 실제 값이 모두 상당히 클 때 유용합니다.

다음 단계