이 페이지에서는 Google Cloud 콘솔 또는 Vertex AI API를 사용하여 이미지 데이터 세트에서 AutoML 객체 감지 모델을 학습시키는 방법을 보여줍니다.
AutoML 모델 학습
Google Cloud 콘솔
Google Cloud 콘솔의 Vertex AI 섹션에서 데이터 세트 페이지로 이동합니다.
모델을 학습시키는 데 사용할 데이터 세트의 이름을 클릭하여 세부정보 페이지를 엽니다.
새 모델 학습을 클릭합니다.
학습 메서드로
AutoML을 선택합니다.모델을 사용할 위치 선택 섹션에서 모델 호스트 위치를
클라우드 , 에지 또는 Vertex AI 비전 중에서 선택합니다.계속을 클릭합니다.
모델의 이름을 입력합니다.
학습 데이터 분할 방법을 수동으로 설정하려면 고급 옵션을 펼치고 데이터 분할 옵션을 선택합니다. 자세히 알아보기
학습 시작을 클릭합니다.
데이터의 규모 및 복잡성과 학습 예산(지정한 경우)에 따라 모델 학습에 많은 시간이 소요될 수 있습니다. 탭을 닫았다가 나중에 다시 돌아와도 됩니다. 모델 학습이 완료되면 이메일이 전송됩니다.
API
아래에서 언어 또는 환경에 대한 탭을 선택하세요.
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 데이터 세트가 있고 모델이 생성된 리전입니다. 예를 들면
us-central1
입니다. - PROJECT: 프로젝트 ID
- TRAININGPIPELINE_DISPLAYNAME: 필수. trainingPipeline의 표시 이름입니다.
- DATASET_ID: 학습에 사용할 데이터 세트의 ID 번호입니다.
fractionSplit
: 선택사항. 가능한 여러 ML 중 하나가 데이터에 분할 옵션을 사용합니다.fractionSplit
의 경우 값은 합계가 1이어야 합니다. 예를 들면 다음과 같습니다.-
{"trainingFraction": "0.7","validationFraction": "0.15","testFraction": "0.15"}
-
- MODEL_DISPLAYNAME*: TrainingPipeline에서 업로드(생성)한 모델의 표시 이름입니다.
- MODEL_DESCRIPTION*: 모델에 대한 설명입니다.
- modelToUpload.labels*: 모델을 구성할 모든 키-값 쌍 세트입니다. 예를 들면 다음과 같습니다.
- "env": "prod"
- "tier": "backend"
- MODELTYPE†: 학습시킬 클라우드 호스팅 모델의 유형입니다. 옵션은 다음과 같습니다.
CLOUD_1
- Google Cloud 내에서 사용하기에 가장 적합한 모델이며 내보낼 수 없습니다. 위 CLOUD_HIGH_ACCURACY_1 및 CLOUD_LOW_LATENCY_1 모델과 비교하여 예측 품질이 높고 지연 시간이 짧을 것으로 예상됩니다.CLOUD_HIGH_ACCURACY_1
- Google Cloud 내에서 사용하기에 가장 적합한 모델이며 내보낼 수 없습니다. 이 모델은 지연 시간이 더 길지만 예측 품질도 다른 클라우드 모델보다 높아야 합니다.CLOUD_LOW_LATENCY_1
- Google Cloud 내에서 사용하기에 가장 적합한 모델이며 내보낼 수 없습니다. 이 모델의 지연 시간이 짧지만 예측 품질이 다른 클라우드 모델보다 낮을 수 있습니다.
- NODE_HOUR_BUDGET†: 실제 학습 비용은 이 값보다 작거나 같습니다. Cloud 모델의 경우 예산은 20,000~900,000밀리 노드 시간이어야 합니다(20,000, 900,000 포함). 기본값은 실제 경과 시간으로 1일을 나타내는 216,000이며, 9개의 노드가 사용되었음을 의미합니다.
- PROJECT_NUMBER: 프로젝트의 자동으로 생성된 프로젝트 번호
* | trainingTaskDefinition 에서 지정한 스키마 파일의 설명은 이 필드의 사용법을 설명합니다. |
† | trainingTaskDefinition 에서 지정한 스키마 파일은 이 필드를 선언하고 설명합니다. |
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
JSON 요청 본문:
{ "displayName": "TRAININGPIPELINE_DISPLAYNAME", "inputDataConfig": { "datasetId": "DATASET_ID", "fractionSplit": { "trainingFraction": "DECIMAL", "validationFraction": "DECIMAL", "testFraction": "DECIMAL" } }, "modelToUpload": { "displayName": "MODEL_DISPLAYNAME", "description": "MODEL_DESCRIPTION", "labels": { "KEY": "VALUE" } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_image_object_detection_1.0.0.yaml", "trainingTaskInputs": { "modelType": ["MODELTYPE"], "budgetMilliNodeHours": NODE_HOUR_BUDGET } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content
응답에는 사양 및 TRAININGPIPELINE_ID에 대한 정보가 포함됩니다.
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
객체는 InputConfig
객체에 여러 객체 유형 중 하나로 포함되어 있으며, 각 객체는 학습 데이터를 분할하는 다른 방법을 제공합니다. 하나의 방법만 선택할 수 있습니다.
-
FractionSplit
:- TRAINING_FRACTION: 학습 세트에 사용할 학습 데이터의 비율입니다.
- VALIDATION_FRACTION: 검증 세트에 사용할 학습 데이터의 비율입니다. 동영상 데이터에는 사용되지 않습니다.
- TEST_FRACTION: 테스트 세트에 사용할 학습 데이터의 비율입니다.
비율 중 하나라도 지정된 경우 모두 지정해야 합니다. 비율의 합은 1.0이 되어야 합니다. 비율에 대한 기본값은 데이터 유형에 따라 다릅니다. 자세히 알아보기
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },
-
FilterSplit
: - TRAINING_FILTER: 이 필터와 일치하는 데이터 항목은 학습 세트에 사용됩니다.
- VALIDATION_FILTER: 이 필터와 일치하는 데이터 항목은 검증 세트에 사용됩니다. 동영상 데이터는 '-'여야 합니다.
- TEST_FILTER: 이 필터와 일치하는 데이터 항목은 테스트 세트에 사용됩니다.
이 필터는 ml_use
라벨 또는 데이터에 적용하는 모든 라벨과 함께 사용할 수 있습니다. ml-use 라벨과 기타 라벨을 사용하여 데이터를 필터링하는 방법을 자세히 알아보세요.
다음 예시에서는 검증 세트가 포함된 ml_use
라벨과 함께 filterSplit
객체를 사용하는 방법을 보여줍니다.
"filterSplit": { "trainingFilter": "labels.aiplatform.googleapis.com/ml_use=training", "validationFilter": "labels.aiplatform.googleapis.com/ml_use=validation", "testFilter": "labels.aiplatform.googleapis.com/ml_use=test" }