이 페이지에서는 Google Cloud 콘솔이나 Vertex AI API를 사용하여 테이블 형식 데이터 세트에서 예측 모델을 학습시키는 방법을 보여줍니다.
시작하기 전에
예측 모델을 학습시키기 전에 다음을 완료해야 합니다.
모델 학습
Google Cloud 콘솔
Google Cloud 콘솔의 Vertex AI 섹션에서 데이터 세트 페이지로 이동합니다.
모델을 학습시키는 데 사용할 데이터 세트의 이름을 클릭하여 세부정보 페이지를 엽니다.
데이터 유형이 주석 세트를 사용하는 경우 이 모델에 사용할 주석 세트를 선택합니다.
새 모델 학습을 클릭합니다.
기타를 선택합니다.
학습 방법 페이지에서 다음과 같이 구성합니다.
모델 학습 방법을 선택합니다. 자세한 내용은 모델 학습 방법을 참조하세요.
계속을 클릭합니다.
모델 세부정보 페이지에서 다음과 같이 구성합니다.
새 모델의 표시 이름을 입력합니다.
타겟 열을 선택합니다.
타겟 열은 모델이 예측할 값입니다. 타겟 열 요구사항 자세히 알아보기
데이터 세트의 시계열 식별자 및 타임스탬프 열을 설정하지 않았다면 지금 선택합니다.
데이터 세부사항을 선택합니다. 휴일 효과 모델링을 사용하려면
Daily
를 선택합니다. 데이터 세부사항 선택 방법 알아보기선택사항: 공휴일 리전 드롭다운에서 지리적 리전을 하나 이상 선택하여 공휴일 효과 모델링을 사용 설정합니다. 학습 중에 Vertex AI는 타임스탬프 열의 날짜와 지정된 지리적 리전을 기준으로 모델 내에 휴일 범주형 특성을 만듭니다. 데이터 세부사항이
Daily
로 설정된 경우에만 이 옵션을 선택할 수 있습니다. 기본적으로 휴일 효과 모델링은 사용 중지됩니다. 휴일 효과 모델링에 사용되는 지리적 리전에 대한 자세한 내용은 휴일 리전을 참조하세요.환경설정 기간 및 예측 범위를 입력합니다.
예측 범위는 모델이 예측 데이터 각 행의 타겟 값 예측을 수행할 향후 기간을 결정합니다. 예측 범위는 데이터 세부사항 단위로 지정됩니다.
환경설정 기간은 학습 중(또는 예측 시) 모델이 찾을 이전 기간을 설정합니다. 즉, 각 학습 데이터 포인트의 환경설정 기간은 모델이 예측 패턴을 찾는 이전 기간의 범위를 결정합니다. 환경설정 기간은 데이터 세부사항 단위로 지정됩니다.
테스트 데이터 세트를 BigQuery로 내보내려면 BigQuery에 테스트 데이터 세트 내보내기를 선택하고 테이블 이름을 입력합니다.
데이터 분할을 수동으로 제어하거나 예측 창을 구성하려면 고급 옵션을 엽니다.
기본 데이터 분할은 시간순이며, 표준은 80/10/10%입니다. 어떤 분할에 어떤 행을 할당할지 수동으로 지정하려면 수동을 선택하고 데이터 분할 열을 지정합니다.
데이터 분할 자세히 알아보기
예측 기간 생성을 위한 순환 기간 전략을 선택합니다. 기본 전략은 개수입니다.
- 개수: 제공된 텍스트 상자에 최대 구간 수 값을 설정합니다.
- 스트라이트: 제공된 텍스트 상자에 스트라이드 길이 값을 설정합니다.
- 열: 제공된 드롭다운에서 적절한 열 이름을 선택합니다.
자세한 내용은 순환 기간 전략을 참조하세요.
계속을 클릭합니다.
학습 옵션 페이지에서 다음과 같이 구성합니다.
아직 클릭하지 않았다면 통계 생성을 클릭합니다.
통계를 생성하면 변환 드롭다운 메뉴가 채워집니다.
열 목록을 검토하고 모델 학습에 사용하지 않아야 하는 열을 학습에서 제외합니다.
데이터 분할 열을 사용하는 경우 해당 열을 포함해야 합니다.
포함된 특성에 대해 선택된 변환을 검토하고 필요한 업데이트를 수행합니다.
선택한 변환에 유효하지 않은 데이터가 포함된 행은 학습에서 제외됩니다. 변환에 대해 자세히 알아보세요.
학습에 포함한 각 열에서 해당 특성과 시계열의 관계 및 예측 시 사용 가능한 특성 유형을 지정합니다. 특성 유형 및 가용성에 대해 자세히 알아보세요.
가중치 열을 지정하거나, 최적화 목표를 기본값에서 변경하거나, 계층적 예측을 사용 설정하려면, 고급 옵션을 엽니다.
선택사항. 가중치 열을 지정하려면 드롭다운 목록에서 선택합니다. 가중치 열에 대해 자세히 알아보세요.
선택사항. 최적화 목표를 선택하려면 목록에서 선택합니다. 최적화 목표에 대해 자세히 알아보세요.
선택사항. 계층적 예측을 사용하려면 계층적 예측 사용 설정을 선택합니다. 다음 세 가지 그룹화 옵션 중에서 선택할 수 있습니다.
No grouping
Group by columns
Group all
다음과 같은 집계 손실 가중치를 설정할 수도 있습니다.
Group total weight
. 이 필드는Group by columns
또는Group all
옵션을 선택한 경우에만 설정할 수 있습니다.Temporal total weight
.Group temporal total weight
. 이 필드는Group by columns
또는Group all
옵션을 선택한 경우에만 설정할 수 있습니다.
계층적 예측에 대해 자세히 알아보세요.
계속을 클릭합니다.
컴퓨팅 및 가격 책정 페이지에서 다음과 같이 구성합니다.
모델을 학습시킬 최대 시간을 입력합니다. 이 설정은 학습 비용에 상한선을 설정하는 데 도움이 됩니다. 새 모델을 만드는 데 관련된 다른 작업이 있으므로 실제 경과 시간은 이 값보다 길 수 있습니다.
추천 학습 시간은 예측 범위의 크기 및 학습 데이터와 관련이 있습니다. 아래 표는 예측 학습 실행 예시 및 고품질 모델을 학습시키는 데 필요한 학습 시간 범위를 제공합니다.
행 기능 예측 범위 학습 시간 1,200만 개 10 6 3~6시간 2,000만 개 50 13 6~12시간 1,600만 개 30 365 24~48시간 학습 가격에 대한 자세한 내용은 가격 책정 페이지를 참조하세요.
학습 시작을 클릭합니다.
데이터의 규모 및 복잡성과 학습 예산(지정한 경우)에 따라 모델 학습에 많은 시간이 소요될 수 있습니다. 탭을 닫았다가 나중에 다시 돌아와도 됩니다. 모델 학습이 완료되면 이메일이 전송됩니다.
API
언어 또는 환경에 대한 탭을 선택합니다.
REST
trainingPipelines.create 명령어를 사용하여 모델을 학습시킵니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 리전
- PROJECT: 프로젝트 ID
- TRAINING_PIPELINE_DISPLAY_NAME: 이 작업에 대해 생성된 학습 파이프라인의 표시 이름입니다.
-
TRAINING_TASK_DEFINITION: 모델 학습 메서드
- Time series Dense Encoder(TiDE)
gs://google-cloud-aiplatform/schema/trainingjob/definition/time_series_dense_encoder_forecasting_1.0.0.yaml
- Temporal Fusion Transformer(TFT)
gs://google-cloud-aiplatform/schema/trainingjob/definition/temporal_fusion_transformer_time_series_forecasting_1.0.0.yaml
- AutoML(L2L)
gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_forecasting_1.0.0.yaml
- Seq2Seq+
gs://google-cloud-aiplatform/schema/trainingjob/definition/seq2seq_plus_time_series_forecasting_1.0.0.yaml
- Time series Dense Encoder(TiDE)
- TARGET_COLUMN: 이 모델에서 예측할 열(값)입니다.
- TIME_COLUMN: 시간 열입니다. 자세히 알아보기
- TIME_SERIES_IDENTIFIER_COLUMN: 시계열 식별자 열입니다. 자세히 알아보기
- WEIGHT_COLUMN: (선택사항) 가중치 열입니다. 자세히 알아보기
- TRAINING_BUDGET: 모델이 학습시키려는 최대 시간(밀리 노드 시간, 1,000밀리 노드 시간은 1노드 시간과 동일).
-
GRANULARITY_UNIT: 학습 데이터, 예측 범위, 환경설정 기간의 세부사항에 사용할 단위입니다.
minute
,hour
,day
,week
,month
,year
일 수 있습니다. 휴일 효과 모델링을 사용하려면day
를 선택합니다. 데이터 세부사항 선택 방법 알아보기 - GRANULARITY_QUANTITY: 학습 데이터에서 관찰 사이의 간격을 구성하는 세분화 단위 수입니다. 분을 제외한 모든 단위에 대해 하나여야 하며 1, 5, 10, 15 또는 30일 수 있습니다. 데이터 세부사항 선택 방법 알아보기
- GROUP_COLUMNS: 계층 구조 수준의 그룹화를 식별하는 학습 입력 테이블의 열 이름입니다. 열은 `time_series_attribute_columns`여야 합니다. 자세히 알아보기
- GROUP_TOTAL_WEIGHT: 개별 손실을 기준으로 한 그룹 집계 손실의 가중치입니다. `0.0` 으로 설정하거나 설정하지 않으면 사용 중지됩니다. 그룹 열이 설정되지 않으면 모든 시계열이 동일한 그룹의 일부로 취급되며 모든 시계열에서 집계됩니다. 자세히 알아보기
- TEMPORAL_TOTAL_WEIGHT: 개별 손실을 기준으로 한 시간 집계 손실의 가중치입니다. `0.0` 으로 설정하거나 설정하지 않으면 사용 중지됩니다. 자세히 알아보기
- GROUP_TEMPORAL_TOTAL_WEIGHT: 개별 손실을 기준으로 한 총(그룹 x 시간) 집계 손실의 가중치입니다. `0.0` 으로 설정하거나 설정하지 않으면 사용 중지됩니다. 그룹 열이 설정되지 않으면 모든 시계열이 동일한 그룹의 일부로 취급되며 모든 시계열에서 집계됩니다. 자세히 알아보기
-
HOLIDAY_REGIONS: (선택사항) 하나 이상의 지리적 리전을 선택하여 휴일 효과 모델링을 사용 설정할 수 있습니다. 학습 중에 Vertex AI는 TIME_COLUMN의 날짜와 지정된 지리적 리전을 기준으로 모델 내에 휴일 범주형 특성을 만듭니다. 사용 설정하려면 GRANULARITY_UNIT을
day
로 설정하고 HOLIDAY_REGIONS 필드에 하나 이상의 리전을 지정합니다. 기본적으로 휴일 효과 모델링은 사용 중지됩니다. 자세한 내용은 휴일 리전을 참조하세요. - FORECAST_HORIZON: 예측 범위는 모델에서 예측 데이터 각 행의 타겟 값을 예측할 향후 기간을 결정합니다. 예측 범위는 데이터 세부사항 단위(GRANULARITY_UNIT)로 지정됩니다. 자세히 알아보기
- CONTEXT_WINDOW: 컨텍스트 윈도우는 학습 중(및 예측 시) 모델에서 찾을 이전 기간을 설정합니다. 즉, 각 학습 데이터 포인트의 환경설정 기간은 모델이 예측 패턴을 찾는 이전 기간의 범위를 결정합니다. 환경설정 기간은 데이터 세부사항 단위(GRANULARITY_UNIT)로 지정됩니다. 자세히 알아보기
- OPTIMIZATION_OBJECTIVE: 기본적으로 Vertex AI는 평균 제곱근 오차(RMSE)를 최소화합니다. 예측 모델의 다른 최적화 목표를 원하는 경우 예측 모델의 최적화 목표에 있는 옵션 중 하나를 선택합니다. 분위수 손실을 최소화하려면 QUANTILES 값도 지정해야 합니다.
-
PROBABILISTIC_INFERENCE: (선택사항)
true
로 설정하면 Vertex AI에서 예측 확률 분포를 모델링합니다. 확률적 추론은 노이즈가 많은 데이터를 처리하고 불확실성을 수치화하여 모델 품질을 향상시킬 수 있습니다. QUANTILES가 지정되면 Vertex AI에서 확률 분포의 분위수도 반환합니다. 확률적 추론은Time series Dense Encoder (TiDE)
및AutoML (L2L)
학습 메서드와만 호환됩니다. 계층적 예측 및minimize-quantile-loss
최적화 목표와 호환되지 않습니다. -
QUANTILES:
minimize-quantile-loss
최적화 목표 및 확률적 추론에 사용할 분위수입니다.0
~1
사이(제외)에서 최대 5개까지 고유 숫자 목록을 제공합니다. - TIME_SERIES_ATTRIBUTE_COL: 시계열 속성인 열의 이름입니다. 자세히 알아보기
- AVAILABLE_AT_FORECAST_COL: 예측 시 값이 알려진 공변 열의 이름입니다. 자세히 알아보기
- UNAVAILABLE_AT_FORECAST_COL: 예측 시 값을 알 수 없는 공변 열의 이름입니다. 자세히 알아보기
- TRANSFORMATION_TYPE: 모델을 학습시키는 데 사용되는 각 열에 변환 유형이 제공됩니다. 자세히 알아보기
- COLUMN_NAME: 지정된 변환 유형이 있는 열의 이름입니다. 모델을 학습시키는 데 사용되는 모든 열을 지정해야 합니다.
- MODEL_DISPLAY_NAME: 새로 학습된 모델의 표시 이름입니다.
- DATASET_ID: 학습 데이터 세트의 ID입니다.
-
Split
객체를 제공하여 데이터 분할을 제어할 수 있습니다. 데이터 분할 제어에 대한 자세한 내용은 REST를 사용하여 데이터 분할 제어를 참조하세요. -
windowConfig
객체를 제공하여 예측 기간 생성을 위한 순환 기간 전략을 구성할 수 있습니다. 자세한 내용은 REST를 사용하여 순환 기간 전략 구성을 참조하세요. - PROJECT_NUMBER: 프로젝트의 자동으로 생성된 프로젝트 번호
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
JSON 요청 본문:
{ "displayName": "TRAINING_PIPELINE_DISPLAY_NAME", "trainingTaskDefinition": "TRAINING_TASK_DEFINITION", "trainingTaskInputs": { "targetColumn": "TARGET_COLUMN", "timeColumn": "TIME_COLUMN", "timeSeriesIdentifierColumn": "TIME_SERIES_IDENTIFIER_COLUMN", "weightColumn": "WEIGHT_COLUMN", "trainBudgetMilliNodeHours": TRAINING_BUDGET, "dataGranularity": {"unit": "GRANULARITY_UNIT", "quantity": GRANULARITY_QUANTITY}, "hierarchyConfig": {"groupColumns": GROUP_COLUMNS, "groupTotalWeight": GROUP_TOTAL_WEIGHT, "temporalTotalWeight": TEMPORAL_TOTAL_WEIGHT, "groupTemporalTotalWeight": GROUP_TEMPORAL_TOTAL_WEIGHT} "holidayRegions" : ["HOLIDAY_REGIONS_1", "HOLIDAY_REGIONS_2", ...] "forecast_horizon": FORECAST_HORIZON, "context_window": CONTEXT_WINDOW, "optimizationObjective": "OPTIMIZATION_OBJECTIVE", "quantiles": "QUANTILES", "enableProbabilisticInference": "PROBABILISTIC_INFERENCE", "time_series_attribute_columns": ["TIME_SERIES_ATTRIBUTE_COL_1", "TIME_SERIES_ATTRIBUTE_COL_2", ...] "available_at_forecast_columns": ["AVAILABLE_AT_FORECAST_COL_1", "AVAILABLE_AT_FORECAST_COL_2", ...] "unavailable_at_forecast_columns": ["UNAVAILABLE_AT_FORECAST_COL_1", "UNAVAILABLE_AT_FORECAST_COL_2", ...] "transformations": [ {"TRANSFORMATION_TYPE_1": {"column_name" : "COLUMN_NAME_1"} }, {"TRANSFORMATION_TYPE_2": {"column_name" : "COLUMN_NAME_2"} }, ... }, "modelToUpload": {"displayName": "MODEL_DISPLAY_NAME"}, "inputDataConfig": { "datasetId": "DATASET_ID", } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/trainingPipelines/TRAINING_PIPELINE_ID", "displayName": "myModelName", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "modelToUpload": { "displayName": "myModelName" }, "state": "PIPELINE_STATE_PENDING", "createTime": "2020-08-18T01:22:57.479336Z", "updateTime": "2020-08-18T01:22:57.479336Z" }
Python용 Vertex AI SDK
Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 Python용 Vertex AI SDK API 참조 문서를 확인하세요.
REST를 사용하여 데이터 분할 제어
학습 데이터가 학습, 검증, 테스트 세트 간에 분할되는 방식을 제어할 수 있습니다. 분할 열을 사용하여 각 행에 대한 데이터 분할을 수동으로 지정하고 JSON 요청의 inputDataConfig
에서 이를 PredefinedSplit
Split
객체의 일부로 제공합니다.
DATA_SPLIT_COLUMN은 데이터 분할 값(TRAIN
, VALIDATION
, TEST
)이 포함된 열입니다.
"predefinedSplit": {
"key": DATA_SPLIT_COLUMN
},
데이터 분할에 대해 자세히 알아보기
REST를 사용하여 순환 기간 전략 구성
windowConfig
객체를 제공하여 예측 기간 생성을 위한 순환 기간 전략을 구성할 수 있습니다. 기본 전략은 maxCount
입니다.
maxCount
옵션을 사용하려면 JSON 요청의trainingTaskInputs
에 다음을 추가합니다. MAX_COUNT_VALUE는 최대 구간 수를 나타냅니다."windowConfig": { "maxCount": MAX_COUNT_VALUE }, ```
strideLength
옵션을 사용하려면 JSON 요청의trainingTaskInputs
에 다음을 추가합니다. STRIDE_LENGTH_VALUE는 스트라이드 길이의 값을 나타냅니다."windowConfig": { "strideLength": STRIDE_LENGTH_VALUE }, ```
column
옵션을 사용하려면 JSON 요청의trainingTaskInputs
에 다음을 추가합니다. COLUMN_NAME는True
또는False
값이 있는 열의 이름을 나타냅니다."windowConfig": { "column": "COLUMN_NAME" }, ```
자세한 내용은 순환 기간 전략을 참조하세요.