이 페이지에서는 Google Cloud 콘솔 또는 Vertex AI API를 사용하여 테이블 형식의 데이터 세트에서 분류 또는 회귀 모델을 학습시키는 방법을 보여줍니다.
시작하기 전에
모델을 학습시키려면 먼저 다음을 완료해야 합니다.
모델 학습
Google Cloud 콘솔
Google Cloud 콘솔의 Vertex AI 섹션에서 데이터 세트 페이지로 이동합니다.
모델을 학습시키는 데 사용할 데이터 세트의 이름을 클릭하여 세부정보 페이지를 엽니다.
데이터 유형이 주석 세트를 사용하는 경우 이 모델에 사용할 주석 세트를 선택합니다.
새 모델 학습을 클릭합니다.
기타를 선택합니다.
새 모델 학습 페이지에서 다음 단계를 완료합니다.
모델 학습 방법을 선택합니다.
AutoML
은 광범위한 사용 사례에 적합합니다.
계속을 클릭합니다.
새 모델의 표시 이름을 입력합니다.
타겟 열을 선택합니다.
타겟 열은 모델이 예측할 값입니다.
타겟 열 요구사항 자세히 알아보기
선택사항: 테스트 데이터 세트를 BigQuery로 내보내려면 BigQuery에 테스트 데이터 세트 내보내기를 선택하고 테이블 이름을 입력합니다.
선택사항: 학습, 테스트, 검증 세트 간에 데이터를 분할하는 방법을 선택하려면 고급 옵션을 엽니다. 다음 데이터 분할 옵션 중에서 선택할 수 있습니다.
- 무작위(기본값): Vertex AI가 각 데이터 세트와 연결된 행을 무작위로 선택합니다. 기본적으로 Vertex AI는 학습 데이터 세트의 80%를 학습 세트로, 10%를 검증세트로, 10%를 테스트 세트로 선택합니다.
- 수동: Vertex AI가 데이터 분할 열의 값을 기준으로 각 데이터 세트의 데이터 행을 선택합니다. 데이터 분할 열의 이름을 제공합니다.
- 시간순: Vertex AI가 시간 열의 타임스탬프를 기준으로 데이터를 분할합니다. 시간 열의 이름을 제공합니다.
데이터 분할 자세히 알아보기
계속을 클릭합니다.
선택사항: 통계 생성을 클릭합니다. 통계를 생성하면 변환 드롭다운 메뉴가 채워집니다.
학습 옵션 페이지에서 열 목록을 검토하고 모델 학습에 사용하지 않아야 하는 열을 학습에서 제외합니다.
잘못된 데이터에 대한 허용 여부와 함께 포함된 특성에 대해 선택된 변환을 검토하고 필요한 업데이트를 수행합니다.
가중치 열을 지정하거나 최적화 목표를 기본값에서 변경하려면 고급 옵션을 열고 원하는 대로 선택합니다.
계속을 클릭합니다.
컴퓨팅 및 가격 책정 창에서 다음과 같이 구성합니다.
모델을 학습시킬 최대 시간을 입력합니다.
이 설정은 학습 비용에 상한선을 설정하는 데 도움이 됩니다. 새 모델을 만드는 데 관련된 다른 작업이 있으므로 실제 경과 시간은 이 값보다 길 수 있습니다.
추천 학습 시간은 학습 데이터의 크기와 관련이 있습니다. 아래 표는 행 수에 따른 추천 학습 시간 범위를 보여주며, 열 수가 늘어나면 필요한 학습 시간도 길어집니다.
행 추천 학습 시간 100,000개 미만 1~3시간 100,000~1,000,000개 1~6시간 1,000,000~10,000,000개 1~12시간 10,000,000개 초과 3~24시간 학습 시작을 클릭합니다.
데이터의 규모 및 복잡성과 학습 예산(지정한 경우)에 따라 모델 학습에 많은 시간이 소요될 수 있습니다. 탭을 닫았다가 나중에 다시 돌아와도 됩니다. 모델 학습이 완료되면 이메일이 전송됩니다.
API
테이블 형식 데이터 유형 목표를 선택합니다.
분류
언어 또는 환경에 대한 탭을 선택합니다.
REST
trainingPipelines.create 명령어를 사용하여 모델을 학습시킵니다.
모델을 학습시킵니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 리전
- PROJECT: 프로젝트 ID
- TRAININGPIPELINE_DISPLAY_NAME: 이 작업에 대해 생성된 학습 파이프라인의 표시 이름입니다.
- TARGET_COLUMN: 이 모델에서 예측할 열(값)입니다.
- WEIGHT_COLUMN: (선택사항) 가중치 열입니다. 자세히 알아보기
- TRAINING_BUDGET: 모델이 학습시키려는 최대 시간(밀리 노드 시간, 1,000밀리 노드 시간은 1노드 시간과 동일).
- OPTIMIZATION_OBJECTIVE: 예측 유형에 기본 최적화 목표를 원하지 않는 경우에만 필요합니다. 자세히 알아보기
- TRANSFORMATION_TYPE: 모델을 학습시키는 데 사용되는 각 열에 변환 유형이 제공됩니다. 자세히 알아보기
- COLUMN_NAME: 지정된 변환 유형이 있는 열의 이름입니다. 모델을 학습시키는 데 사용되는 모든 열을 지정해야 합니다.
- MODEL_DISPLAY_NAME: 새로 학습된 모델의 표시 이름입니다.
- DATASET_ID: 학습 데이터 세트의 ID입니다.
-
Split
객체를 제공하여 데이터 분할을 제어할 수 있습니다. 데이터 분할 제어에 대한 자세한 내용은 REST를 사용하여 데이터 분할 제어를 참조하세요. - PROJECT_NUMBER: 프로젝트의 자동으로 생성된 프로젝트 번호
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
JSON 요청 본문:
{ "displayName": "TRAININGPIPELINE_DISPLAY_NAME", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "trainingTaskInputs": { "targetColumn": "TARGET_COLUMN", "weightColumn": "WEIGHT_COLUMN", "predictionType": "classification", "trainBudgetMilliNodeHours": TRAINING_BUDGET, "optimizationObjective": "OPTIMIZATION_OBJECTIVE", "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/us-central1/trainingPipelines/4567", "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" }
Java
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Vertex AI Java API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Vertex AI Node.js API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
회귀
언어 또는 환경에 대한 탭을 선택합니다.
REST
trainingPipelines.create 명령어를 사용하여 모델을 학습시킵니다.
모델을 학습시킵니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 리전
- PROJECT: 프로젝트 ID
- TRAININGPIPELINE_DISPLAY_NAME: 이 작업에 대해 생성된 학습 파이프라인의 표시 이름입니다.
- TARGET_COLUMN: 이 모델에서 예측할 열(값)입니다.
- WEIGHT_COLUMN: (선택사항) 가중치 열입니다. 자세히 알아보기
- TRAINING_BUDGET: 모델이 학습시키려는 최대 시간(밀리 노드 시간, 1,000밀리 노드 시간은 1노드 시간과 동일).
- OPTIMIZATION_OBJECTIVE: 예측 유형에 기본 최적화 목표를 원하지 않는 경우에만 필요합니다. 자세히 알아보기
- TRANSFORMATION_TYPE: 모델을 학습시키는 데 사용되는 각 열에 변환 유형이 제공됩니다. 자세히 알아보기
- COLUMN_NAME: 지정된 변환 유형이 있는 열의 이름입니다. 모델을 학습시키는 데 사용되는 모든 열을 지정해야 합니다.
- MODEL_DISPLAY_NAME: 새로 학습된 모델의 표시 이름입니다.
- DATASET_ID: 학습 데이터 세트의 ID입니다.
-
Split
객체를 제공하여 데이터 분할을 제어할 수 있습니다. 데이터 분할 제어에 대한 자세한 내용은 REST를 사용하여 데이터 분할 제어를 참조하세요. - PROJECT_NUMBER: 프로젝트의 자동으로 생성된 프로젝트 번호
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
JSON 요청 본문:
{ "displayName": "TRAININGPIPELINE_DISPLAY_NAME", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "trainingTaskInputs": { "targetColumn": "TARGET_COLUMN", "weightColumn": "WEIGHT_COLUMN", "predictionType": "regression", "trainBudgetMilliNodeHours": TRAINING_BUDGET, "optimizationObjective": "OPTIMIZATION_OBJECTIVE", "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/us-central1/trainingPipelines/4567", "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" }
Java
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Vertex AI Java API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Vertex AI Node.js API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
REST를 사용하여 데이터 분할 제어
학습 데이터가 학습, 검증, 테스트 세트 간에 분할되는 방식을 제어할 수 있습니다. Vertex AI API를 사용할 경우 Split
객체를 사용하여 데이터 분할을 결정합니다. Split
객체는 inputDataConfig
객체에 여러 객체 유형 중 하나로 포함되어 있으며, 각 객체는 학습 데이터를 분할하는 다른 방법을 제공합니다.
데이터를 분할하는 데 사용할 수 있는 방법은 데이터 유형에 따라 다릅니다.
FractionSplit
:- TRAINING_FRACTION: 학습 세트에 사용할 학습 데이터의 비율입니다.
- VALIDATION_FRACTION: 검증 세트에 사용할 학습 데이터의 비율입니다.
- TEST_FRACTION: 테스트 세트에 사용할 학습 데이터의 비율입니다.
비율 중 하나라도 지정된 경우 모두 지정해야 합니다. 비율의 합은 1.0이 되어야 합니다. 자세히 알아보기
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },
PredefinedSplit
:- DATA_SPLIT_COLUMN: 데이터 분할 값(
TRAIN
,VALIDATION
,TEST
)이 포함된 열입니다.
분할 열을 사용하여 각 행에 대한 데이터 분할을 수동으로 지정합니다. 자세히 알아보기
"predefinedSplit": { "key": DATA_SPLIT_COLUMN },
- DATA_SPLIT_COLUMN: 데이터 분할 값(
TimestampSplit
:- TRAINING_FRACTION: 학습 세트에 사용할 학습 데이터의 비율입니다. 기본값은 0.80입니다.
- VALIDATION_FRACTION: 검증 세트에 사용할 학습 데이터의 비율입니다. 기본값은 0.10입니다.
- TEST_FRACTION: 테스트 세트에 사용할 학습 데이터의 비율입니다. 기본값은 0.10입니다.
- TIME_COLUMN: 타임스탬프가 포함된 열입니다.
비율 중 하나라도 지정된 경우 모두 지정해야 합니다. 비율의 합은 1.0이 되어야 합니다. 자세히 알아보기
"timestampSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION, "key": TIME_COLUMN }
분류 또는 회귀 모델의 최적화 목표
모델을 학습시킬 때 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)를 최소화합니다. 절댓값이 아닌 상대적 크기를 바탕으로 오류에 페널티를 적용합니다. 예측 값과 실제 값이 모두 상당히 클 때 유용합니다. |