초매개변수는 배치 크기 또는 심층신경망의 히든 레이어 수와 같이 모델 학습 프로세스를 제어하는 변수입니다. 초매개변수 조정은 일련의 시도에서 측정항목 값을 최적화하여 최적의 초매개변수 값 조합을 검색합니다. 측정항목은 모델 정확성과 같이 트레이너에 추가하는 스칼라 요약입니다.
Vertex AI에서 초매개변수 조정 자세히 알아보기 단계별 예시는 Vertex AI: 초매개변수 조정 Codelab을 참조하세요.
이 페이지에서는 다음 방법을 보여줍니다.
초매개변수를 명령줄 인수로 허용하고 Vertex AI에 측정항목 값을 보고하도록 학습 애플리케이션을 업데이트하여 초매개변수 조정을 위해 준비합니다.
초매개변수 학습 작업을 만듭니다. 구성 옵션에 대한 자세한 내용은 초매개변수 조정 구성의 이해를 참조하세요.
학습 애플리케이션 준비
초매개변수 조정 작업에서 Vertex AI는 여러 초매개변수 집합을 사용하여 학습 작업의 시도를 만들고 지정된 측정항목을 사용하여 시도의 효과를 평가합니다. Vertex AI는 초매개변수 값을 명령줄 인수로 학습 애플리케이션에 전달합니다. Vertex AI가 시도의 효과를 평가하려면 학습 애플리케이션이 측정항목을 Vertex AI에 보고해야 합니다.
다음 섹션에서는 다음을 설명합니다.
- Vertex AI가 학습 애플리케이션에 초매개변수를 전달하는 방법
- 학습 애플리케이션의 Vertex AI로 측정항목을 전달하는 옵션
Vertex AI에서 실행되는 커스텀 학습 애플리케이션의 요구사항에 대한 자세한 내용은 학습 코드 요구사항을 참조하세요.
조정할 초매개변수에 대한 명령줄 인수 처리
Vertex AI는 학습 애플리케이션을 호출할 때 명령줄 인수를 설정합니다. 다음의 단계에 따라 코드의 명령줄 인수를 활용하세요.
각 초매개변수 인수의 이름을 정의하고
argparse
와 같이 원하는 인수 파서를 사용하여 파싱합니다. 초매개변수 학습 작업을 구성할 때 동일한 인수 이름을 사용합니다.예를 들어 학습 애플리케이션이
my_trainer
라는 Python 모듈이고learning_rate
라는 초매개변수를 조정하는 경우 Vertex AI는 각 시도를 다음과 같은 명령어로 시작합니다.python3 -m my_trainer --learning_rate learning-rate-in-this-trial
Vertex AI가 learning-rate-in-this-trial을 결정하고
learning_rate
인수를 사용하여 전달합니다.명령줄 인수의 값을 학습 코드의 초매개변수에 할당합니다.
Vertex AI에 측정항목 보고
Vertex AI에 측정항목을 보고하려면 cloudml-hypertune
Python 패키지를 사용합니다. 이 라이브러리는 Vertex AI에 측정항목을 보고하는 도우미 함수를 제공합니다.
초매개변수 조정 작업 만들기
HyperparameterTuningJob
을 만드는 데 사용하려는 도구에 따라 다음 탭 중 하나를 선택합니다.
콘솔
Google Cloud 콘솔에서는 HyperparameterTuningJob
리소스를 직접 만들 수 없습니다. 하지만 HyperparameterTuningJob
을 만드는 TrainingPipeline
리소스를 만들 수 있습니다.
다음 안내에서는 HyperparameterTuningJob
을 만들고 다른 작업을 수행하지 않는 TrainingPipeline
을 만드는 방법을 설명합니다. 관리형 데이터 세트를 사용한 학습과 같은 추가 TrainingPipeline
기능을 사용하려면 학습 파이프라인 만들기를 참조하세요.
Google Cloud Console의 Vertex AI 섹션에서 학습 파이프라인 페이지로 이동합니다.
만들기를 클릭하여 새 모델 학습 창을 엽니다.
학습 방법 단계에서 다음 설정을 지정합니다.
데이터 세트 드롭다운 목록에서 관리형 데이터 세트 없음을 선택합니다.
커스텀 학습(고급)을 선택합니다.
계속을 클릭합니다.
모델 세부정보 단계에서 새 모델 학습 또는 새 버전 학습을 선택합니다. 새 모델 학습을 선택한 경우 모델에 사용할 이름(MODEL_NAME)을 입력합니다. 계속을 클릭합니다.
학습 컨테이너 단계에서 다음 설정을 지정합니다.
학습에 사전 빌드된 컨테이너를 사용할지 커스텀 컨테이너를 사용할지 선택합니다.
선택에 따라 다음 중 하나를 실행합니다.
사전 빌드된 컨테이너를 학습에 사용하려면 Cloud Storage에 업로드한 학습 패키지를 사용하는 데 필요한 정보를 Vertex AI에 제공합니다.
모델 프레임워크 및 모델 프레임워크 버전 드롭다운 목록을 사용하여 사용할 사전 빌드된 컨테이너를 지정합니다.
패키지 위치 필드에 만들어 업로드한 Python 학습 애플리케이션의 Cloud Storage URI를 지정합니다. 이 파일은 일반적으로
.tar.gz
로 끝납니다.Python 모듈 필드에 학습 애플리케이션 진입점의 모듈 이름을 입력합니다.
학습용 커스텀 컨테이너를 사용하려면 컨테이너 이미지 필드에서 컨테이너 이미지의 Artifact Registry 또는 Docker Hub URI를 지정합니다.
모델 출력 디렉터리 필드에서 액세스 권한이 있는 버킷에 있는 디렉터리의 Cloud Storage URI를 지정할 수 있습니다. 아직 디렉터리가 존재하지 않아도 됩니다.
이 값은
baseOutputDirectory
API 필드의 Vertex AI로 전달되어 학습 애플리케이션이 실행되면 액세스할 수 있는 여러 환경 변수를 설정합니다.선택사항: 인수 필드에서 학습 코드 실행을 시작할 때 사용할 Vertex AI의 인수를 지정할 수 있습니다. 결합된 모든 인수의 최대 길이는 100,000자입니다. 이 인수의 동작은 사용하는 컨테이너 유형에 따라 달라집니다.
사전 빌드된 컨테이너를 사용하는 경우 Vertex AI가 인수를 Python 모듈에 명령줄 플래그로 전달합니다.
커스텀 컨테이너를 사용하는 경우 Vertex AI는 인수의
CMD
명령어를 인수로 재정의합니다.
계속을 클릭합니다.
초매개변수 조정 단계에서 초매개변수 조정 사용 체크박스를 선택하고 다음 설정을 지정합니다.
새 초매개변수 섹션에서 조정할 초매개변수의 매개변수 이름과 유형을 지정합니다. 지정한 유형에 따라 표시되는 초매개변수 설정을 추가로 구성합니다.
초매개변수 유형 및 구성에 대해 자세히 알아보세요.
둘 이상의 초매개변수를 조정하려면 새 매개변수 추가를 클릭하고 표시되는 새 섹션에서 이전 단계를 반복합니다.
조정할 각 초매개변수에 대해 이 과정을 반복합니다.
최적화할 측정항목 필드와목표 드롭다운 목록에서 최적화하려는 측정항목의 이름과 목표를 지정합니다.
최대 시도 횟수 필드에 Vertex AI가 초매개변수 조정 작업에 실행할 최대 시도 횟수를 지정합니다.
최대 동시 시도 횟수 필드에 Vertex AI가 동시에 실행할 수 있는 최대 시도 횟수를 지정합니다.
검색 알고리즘 드롭다운 목록에서 Vertex AI가 사용할 검색 알고리즘을 지정합니다.
조기 중단 사용 토글은 아무 영향이 없으므로 무시합니다.
계속을 클릭합니다.
컴퓨팅 및 가격 책정 단계에서 다음 설정을 지정합니다.
리전 드롭다운 목록에서 "커스텀 학습을 지원하는 리전"을 선택합니다.
작업자 풀 0 섹션에서 학습에 사용할 컴퓨팅 리소스를 지정합니다.
가속기를 지정하는 경우 선택한 가속기를 선택한 리전에서 사용할 수 있는지 확인합니다.
분산형 학습을 수행하려면 작업자 풀 추가를 클릭하고 원하는 각 추가 작업자 풀에 대해 컴퓨팅 리소스 세트를 추가로 지정합니다.
계속을 클릭합니다.
예측 컨테이너 단계에서 예측 컨테이너 없음을 선택합니다.
학습 시작을 클릭하여 커스텀 학습 파이프라인을 시작합니다.
gcloud
다음 단계에서는 Google Cloud CLI를 사용하여 상대적으로 최소한의 구성으로 HyperparameterTuningJob
을 만드는 방법을 보여줍니다. 이 태스크에 사용할 수 있는 모든 구성 옵션에 대한 자세한 내용은 gcloud ai hp-tuning-jobs create
명령어 및 HyperparameterTuningJob
API 리소스의 참조 문서를 확인하세요.
새
HyerparameterTuningJob
에 지정할 일부 API 필드를 사용하여config.yaml
이라는 YAML 파일을 만듭니다.config.yaml
studySpec: metrics: - metricId: METRIC_ID goal: METRIC_GOAL parameters: - parameterId: HYPERPARAMETER_ID doubleValueSpec: minValue: DOUBLE_MIN_VALUE maxValue: DOUBLE_MAX_VALUE trialJobSpec: workerPoolSpecs: - machineSpec: machineType: MACHINE_TYPE replicaCount: 1 containerSpec: imageUri: CUSTOM_CONTAINER_IMAGE_URI
다음을 바꿉니다.
METRIC_ID
: 최적화할 초매개변수 측정항목의 이름입니다. 학습 코드가 실행되면 이 측정항목을 보고해야 합니다.METRIC_GOAL
: 초매개변수 측정항목의 목표(MAXIMIZE
또는MINIMIZE
)입니다.HYPERPARAMETER_ID
: 조정할 초매개변수의 이름입니다. 학습 코드는 이 이름으로 명령줄 플래그를 파싱해야 합니다. 이 예시에서 초매개변수는 부동 소수점 값을 사용해야 합니다. 다른 초매개변수 데이터 유형에 대해 알아보세요.DOUBLE_MIN_VALUE
: Vertex AI에서 이 초매개변수에 시도할 최솟값(숫자)입니다.DOUBLE_MAX_VALUE
: Vertex AI에서 이 초매개변수에 시도할 최댓값(숫자)입니다.MACHINE_TYPE
: 학습에 사용할 VM 유형입니다.CUSTOM_CONTAINER_IMAGE_URI
: 학습 코드가 포함된 Docker 컨테이너 이미지의 URI입니다. 커스텀 컨테이너 이미지를 만드는 방법을 알아보세요.이 예시에서는 커스텀 컨테이너를 사용해야 합니다. 또한
HyperparameterTuningJob
리소스는 커스텀 컨테이너 대신 Python 소스 배포의 학습 코드를 지원합니다.
config.yaml
파일과 같은 디렉터리에서 다음 셸 명령어를 실행합니다.gcloud ai hp-tuning-jobs create \ --region=LOCATION \ --display-name=DISPLAY_NAME \ --max-trial-count=MAX_TRIAL_COUNT \ --parallel-trial-count=PARALLEL_TRIAL_COUNT \ --config=config.yaml
다음을 바꿉니다.
LOCATION
:HyperparameterTuningJob
을 만들려는 리전입니다. 커스텀 학습을 지원하는 리전을 사용합니다.DISPLAY_NAME
: 기억하기 쉬운HyperparameterTuningJob
선택의 표시 이름입니다. 리소스 이름 요구사항에 대해 알아보세요.MAX_TRIAL_COUNT
: 실행할 최대 학습 수입니다.PARALLEL_TRIAL_COUNT
: 동시에 실행할 최대 학습 수입니다.
REST
hyperparameterTuningJob
리소스의 create
메서드를 사용하여 초매개변수 조정 작업을 만들려면 다음 코드 샘플을 사용하세요.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
-
LOCATION
:HyperparameterTuningJob
을 만들려는 리전입니다. 커스텀 학습을 지원하는 리전을 사용합니다. - PROJECT: 프로젝트 ID
-
DISPLAY_NAME
: 기억하기 쉬운HyperparameterTuningJob
선택의 표시 이름입니다. 리소스 이름 요구사항에 대해 알아보세요. - 측정항목을 지정합니다.
-
METRIC_ID
: 최적화할 초매개변수 측정항목의 이름입니다. 학습 코드가 실행되면 이 측정항목을 보고해야 합니다. -
METRIC_GOAL
: 초매개변수 측정항목의 목표(MAXIMIZE
또는MINIMIZE
)입니다.
-
- 초매개변수를 지정합니다.
-
HYPERPARAMETER_ID
: 조정할 초매개변수의 이름입니다. 학습 코드는 이 이름으로 명령줄 플래그를 파싱해야 합니다. - PARAMETER_SCALE: (선택사항) 매개변수 조정 방법입니다. 범주형 매개변수를 설정하지 않습니다.
UNIT_LINEAR_SCALE
,UNIT_LOG_SCALE
,UNIT_REVERSE_LOG_SCALE
또는SCALE_TYPE_UNSPECIFIED
일 수 있습니다. - 초매개변수의 유형이 DOUBLE이면 초매개변수의 최솟값(DOUBLE_MIN_VALUE)과 최댓값(DOUBLE_MAX_VALUE)을 지정합니다.
- 초매개변수 유형이 INTEGER이면 초매개변수의 최솟값(INTEGER_MIN_VALUE)과 최댓값(INTEGER_MAX_VALUE)을 지정합니다.
- 초매개변수 유형이 CATEGORICAL이면 허용되는 값(CATEGORICAL_VALUES)을 문자열 배열로 지정합니다.
- 초매개변수 유형이 DISCRETE이면 허용되는 값(DISCRETE_VALUES)을 숫자 배열로 지정합니다.
- 조건부 초매개변수를 지정합니다. 상위 초매개변수의 값이 지정한 조건과 일치하면 조건부 초매개변수가 시도에 추가됩니다. 조건부 초매개변수에 대해 자세히 알아보세요.
- CONDITIONAL_PARAMETER: 조건부 매개변수의
ParameterSpec
입니다. 이 사양에는 매개변수 이름, 규모, 값 범위, 초매개변수에 따른 조건부 매개변수가 포함됩니다. - 상위 초매개변수 유형이 INTEGER인 경우 정수 목록을 INTEGERS_TO_MATCH로 지정합니다. 상위 초매개변수의 값이 지정된 값 중 하나와 일치하면 조건부 매개변수가 시도에 추가됩니다.
- 상위 초매개변수 유형이 CATEGORICAL인 경우 카테고리 목록을 CATEGORIES_TO_MATCH로 지정합니다. 상위 초매개변수의 값이 지정된 값 중 하나와 일치하면 조건부 매개변수가 시도에 추가됩니다.
- 상위 초매개변수 유형이 DISCRETE인 경우 정수 목록을 DISCRETE_VALUES_TO_MATCH로 지정합니다. 상위 초매개변수의 값이 지정된 값 중 하나와 일치하면 조건부 매개변수가 시도에 추가됩니다.
- CONDITIONAL_PARAMETER: 조건부 매개변수의
-
- ALGORITHM: (선택사항) 초매개변수 조정 작업에서 사용할 검색 알고리즘입니다.
ALGORITHM_UNSPECIFIED
,GRID_SEARCH
또는RANDOM_SEARCH
일 수 있습니다. -
MAX_TRIAL_COUNT
: 실행할 최대 학습 수입니다. -
PARALLEL_TRIAL_COUNT
: 동시에 실행할 최대 학습 수입니다. - MAX_FAILED_TRIAL_COUNT: 초매개변수 조정 작업이 실패하기 전에 실패할 수 있는 작업 수입니다.
- 시도 커스텀 학습 작업을 정의합니다.
-
MACHINE_TYPE
: 학습에 사용할 VM 유형입니다. - ACCELERATOR_TYPE: (선택사항) 각 시도에 연결할 가속기 유형입니다.
- ACCELERATOR_COUNT: (선택사항) 각 시도에 연결할 가속기 수입니다.
- REPLICA_COUNT: 각 시도에서 사용할 작업자 복제본 수입니다.
- 학습 애플리케이션이 커스텀 컨테이너에서 실행되는 경우 다음을 지정합니다.
-
CUSTOM_CONTAINER_IMAGE_URI
: 학습 코드가 포함된 Docker 컨테이너 이미지의 URI입니다. 커스텀 컨테이너 이미지를 만드는 방법을 알아보세요. - CUSTOM_CONTAINER_COMMAND: (선택사항) 컨테이너가 시작될 때 호출되는 명령어입니다. 이 명령어는 컨테이너의 기본 진입점을 재정의합니다.
- CUSTOM_CONTAINER_ARGS: (선택사항) 컨테이너 시작 시 전달될 인수입니다.
-
- 학습 애플리케이션이 사전 빌드된 컨테이너에서 실행되는 Python 패키지인 경우 다음을 지정합니다.
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: 제공된 Python 패키지를 실행하는 컨테이너 이미지의 URI입니다. 학습용 사전 빌드 컨테이너에 대해 자세히 알아보세요.
- PYTHON_PACKAGE_URIS: 학습 프로그램 및 종속 패키지인 Python 패키지 파일의 Cloud Storage 위치입니다. 패키지 URI의 최대 개수는 100개입니다.
- PYTHON_MODULE: 패키지를 설치한 후 실행할 Python 모듈 이름입니다.
- PYTHON_PACKAGE_ARGS: (선택사항) Python 모듈로 전달할 명령줄 인수입니다.
- SERVICE_ACCOUNT: (선택사항) Vertex AI가 코드 실행을 위해 사용할 서비스 계정입니다. 커스텀 서비스 계정 연결에 대해 자세히 알아보세요.
- TIMEOUT: (선택사항) 각 시도의 최대 실행 시간입니다.
-
- 초매개변수 조정 작업에 적용할 모든 라벨에 LABEL_NAME 및 LABEL_VALUE를 지정합니다.
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/hyperparameterTuningJobs
JSON 요청 본문:
{ "displayName": DISPLAY_NAME, "studySpec": { "metrics": [ { "metricId": METRIC_ID, "goal": METRIC_GOAL } ], "parameters": [ { "parameterId": PARAMETER_ID, "scaleType": PARAMETER_SCALE, // Union field parameter_value_spec can be only one of the following: "doubleValueSpec": { "minValue": DOUBLE_MIN_VALUE, "maxValue": DOUBLE_MAX_VALUE }, "integerValueSpec": { "minValue": INTEGER_MIN_VALUE, "maxValue": INTEGER_MAX_VALUE }, "categoricalValueSpec": { "values": [ CATEGORICAL_VALUES ] }, "discreteValueSpec": { "values": [ DISCRETE_VALUES ] } // End of list of possible types for union field parameter_value_spec. "conditionalParameterSpecs": [ "parameterSpec": { CONDITIONAL_PARAMETER } // Union field parent_value_condition can be only one of the following: "parentIntValues": { "values": [INTEGERS_TO_MATCH] } "parentCategoricalValues": { "values": [CATEGORIES_TO_MATCH] } "parentDiscreteValues": { "values": [DISCRETE_VALUES_TO_MATCH] } // End of list of possible types for union field parent_value_condition. ] } ], "ALGORITHM": ALGORITHM }, "maxTrialCount": MAX_TRIAL_COUNT, "parallelTrialCount": PARALLEL_TRIAL_COUNT, "maxFailedTrialCount": MAX_FAILED_TRIAL_COUNT, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT }, "serviceAccount": SERVICE_ACCOUNT }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/12345/locations/us-central1/hyperparameterTuningJobs/6789", "displayName": "myHyperparameterTuningJob", "studySpec": { "metrics": [ { "metricId": "myMetric", "goal": "MINIMIZE" } ], "parameters": [ { "parameterId": "myParameter1", "integerValueSpec": { "minValue": "1", "maxValue": "128" }, "scaleType": "UNIT_LINEAR_SCALE" }, { "parameterId": "myParameter2", "doubleValueSpec": { "minValue": 1e-07, "maxValue": 1 }, "scaleType": "UNIT_LINEAR_SCALE" } ], "ALGORITHM": "RANDOM_SEARCH" }, "maxTrialCount": 20, "parallelTrialCount": 1, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-4" }, "replicaCount": "1", "pythonPackageSpec": { "executorImageUri": "us-docker.pkg.dev/vertex-ai/training/training-tf-cpu.2-1:latest", "packageUris": [ "gs://my-bucket/my-training-application/trainer.tar.bz2" ], "pythonModule": "my-trainer.trainer" } } ] } }
Java
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Vertex AI Java API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
초매개변수 학습 작업 구성
초매개변수 조정 작업은 측정항목을 최적화하기 위한 최적의 초매개변수 조합을 검색합니다. 초매개변수 조정 작업은 다른 초매개변수 집합을 사용하여 학습 애플리케이션 시도를 여러 번 실행하여 이 작업을 수행합니다.
초매개변수 조정 작업을 구성할 때 다음 세부정보를 지정해야 합니다.
조정할 초매개변수와 시도를 평가하는 데 사용할 측정항목
다음과 같이 이 조정 작업의 일부로 실행할 시도 횟수에 대한 세부정보
다음과 같이 각 시도에서 실행되는 커스텀 학습 작업에 대한 세부정보
시도 작업이 실행되는 머신 유형과 작업에서 사용되는 가속기
커스텀 컨테이너 또는 Python 패키지 작업의 세부정보
시도 횟수 제한
서비스가 실행되고 HyperparameterTuningJob 객체의 maxTrialCount
값을 설정하도록 허용할 시도 횟수를 결정합니다.
허용할 시도 횟수를 결정할 때 고려해야 할 상충되는 두 가지의 관심 항목이 있습니다.
- 시간(및 그에 따른 비용)
- 정확성
일반적으로 시도 횟수를 늘리면 더 나은 결과가 산출되지만 항상 그렇지는 않습니다. 일반적으로 반환이 감소하는 시점이 있으며 그 이후에는 추가 시도가 정확도에 거의 또는 전혀 영향을 미치지 않습니다. 많은 시도 횟수로 작업을 시작하기 전에 선택한 초매개변수가 모델의 정확성에 미치는 영향을 판별하기 위해 시도 횟수를 적게 설정하여 시작하는 것이 좋습니다.
초매개변수 조정을 최대한 활용하려면 최댓값을 사용하는 초매개변수 수의 10배 미만으로 설정해서는 안됩니다.
병렬 시도
HyperparameterTuningJob에서 parallelTrialCount
를 설정하여 동시에 실행할 수 있는 시도 횟수를 지정할 수 있습니다.
병렬 시도를 실행하면 학습 작업에 걸리는 시간을 단축할 수 있습니다(실시간 - 필요한 총 처리 시간은 일반적으로 변경되지 않음). 하지만 병렬로 실행하면 조정 작업의 전체 효율성이 떨어질 수 있습니다. 이는 초매개변수 조정이 이전 시도에서 나온 결과를 사용하여 이후 시도의 초매개변수에 할당할 값을 알려주기 때문입니다. 병렬로 실행하는 경우 일부 시도는 여전히 실행 중인 시도의 결과를 활용하는 혜택 없이 시작됩니다.
동시 시도를 사용하는 경우 초매개변수 조정 서비스가 여러 학습 처리 클러스터(또는 단일 프로세스 트레이너의 경우 여러 개별 머신)를 프로비저닝합니다. 작업에 설정한 작업 풀 사양은 각 개별 학습 클러스터에 사용됩니다.
실패한 시도 처리
초매개변수 조정 시도가 오류와 함께 종료된다면 학습 작업을 조기에 끝내야 할 수 있습니다. HyperparameterTuningJob의 maxFailedTrialCount
필드를 허용할 실패 시도 횟수로 설정합니다. 시도가 이 횟수만큼 실패하면 Vertex AI가 학습 작업을 종료합니다. maxFailedTrialCount
값은 maxTrialCount
보다 작거나 같아야 합니다.
maxFailedTrialCount
를 설정하지 않거나 0
으로 설정할 경우 Vertex AI가 다음 규칙을 사용하여 실패 시도를 처리합니다.
- 작업의 첫 시도가 실패하면 Vertex AI에서 작업을 즉시 종료합니다. 첫 시도가 실패했다면 학습 코드에 문제가 있는 것이므로 후속 시도도 실패할 가능성이 높습니다. 작업을 종료하면 더 많은 시도로 인해 추가 비용이 발생하기 전에 문제를 진단할 수 있습니다.
- 첫 시도가 성공하면 Vertex AI는 다음 기준 중 하나에 따라 후속 시도가 실패하면 작업을 종료할 수 있습니다.
- 시도 실패 횟수가 너무 많은 경우
- 시도 성공에 비해 시도 실패가 너무 많은 경우
규칙은 변경될 수 있습니다. 특정한 동작을 적용하려면 maxFailedTrialCount
필드를 설정하세요.
초매개변수 조정 작업 관리
다음 섹션에서는 초매개변수 조정 작업을 관리하는 방법을 설명합니다.
초매개변수 조정 작업에 대한 정보 검색
다음 코드 샘플에서는 초매개변수 조정 작업을 검색하는 방법을 보여줍니다.
gcloud
gcloud ai hp-tuning-jobs describe
명령어를 사용합니다.
gcloud ai hp-tuning-jobs describe ID_OR_NAME \
--region=LOCATION
다음을 바꿉니다.
ID_OR_NAME
: 이름 또는HyperparameterTuningJob
의 숫자 ID입니다. (ID는 이름의 마지막 부분입니다.)HyperparameterTuningJob
을 만들 때 ID나 이름을 확인했을 수 있습니다. ID나 이름을 모르는 경우gcloud ai hp-tuning-jobs list
명령어를 실행하고 적절한 리소스를 찾을 수 있습니다.LOCATION
:HyperparameterTuningJob
이 생성된 리전입니다.
REST
hyperparameterTuningJob
리소스의 get
메서드를 사용하여 초매개변수 조정 작업을 검색하려면 다음 코드 샘플을 사용하세요.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
-
LOCATION
:HyperparameterTuningJob
이 생성된 리전입니다. - NAME: 초매개변수 조정 작업의 이름입니다. 작업 이름은 다음 형식을 사용합니다.
projects/{project}/LOCATIONS/{LOCATION}/hyperparameterTuningJobs/{hyperparameterTuningJob}
HTTP 메서드 및 URL:
GET https://LOCATION-aiplatform.googleapis.com/v1/NAME
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/12345/LOCATIONs/us-central1/hyperparameterTuningJobs/6789", "displayName": "my-hyperparameter-tuning-job", "studySpec": { "metrics": [ { "metricId": "my_metric", "goal": "MINIMIZE" } ], "parameters": [ { "parameterId": "my_parameter", "doubleValueSpec": { "minValue": 1e-05, "maxValue": 1 } } ] }, "maxTrialCount": 3, "parallelTrialCount": 1, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-4" }, "replicaCount": "1", "pythonPackageSpec": { "executorImageUri": "us-docker.pkg.dev/vertex-ai/training/training-tf-cpu.2-1:latest", "packageUris": [ "gs://my-bucket/my-training-application/trainer.tar.bz2" ], "pythonModule": "my-trainer.trainer" } } ] }, "trials": [ { "id": "2", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.71426874725564571 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30007445812225342 } ] }, "startTime": "2020-09-09T23:39:15.549112551Z", "endTime": "2020-09-09T23:47:08Z" }, { "id": "3", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.3078893356622992 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30000102519989014 } ] }, "startTime": "2020-09-09T23:49:22.451699360Z", "endTime": "2020-09-09T23:57:15Z" }, { "id": "1", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.500005 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30005377531051636 } ] }, "startTime": "2020-09-09T23:23:12.283374629Z", "endTime": "2020-09-09T23:36:56Z" } ], "state": "JOB_STATE_SUCCEEDED", "createTime": "2020-09-09T23:22:31.777386Z", "startTime": "2020-09-09T23:22:34Z", "endTime": "2020-09-10T01:31:24.271307Z", "updateTime": "2020-09-10T01:31:24.271307Z" }
Java
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Vertex AI Java API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
초매개변수 조정 작업 취소
다음 코드 샘플에서는 초매개변수 조정 작업을 취소하는 방법을 보여줍니다.
gcloud
gcloud ai hp-tuning-jobs cancel
명령어를 사용합니다.
gcloud ai hp-tuning-jobs cancel ID_OR_NAME \
--region=LOCATION
다음을 바꿉니다.
ID_OR_NAME
: 이름 또는HyperparameterTuningJob
의 숫자 ID입니다. (ID는 이름의 마지막 부분입니다.)HyperparameterTuningJob
을 만들 때 ID나 이름을 확인했을 수 있습니다. ID나 이름을 모르는 경우gcloud ai hp-tuning-jobs list
명령어를 실행하고 적절한 리소스를 찾을 수 있습니다.LOCATION
:HyperparameterTuningJob
이 생성된 리전입니다.
REST
hyperparameterTuningJob
리소스의 cancel
메서드를 사용하여 초매개변수 조정 작업을 취소하려면 다음 코드 샘플을 사용하세요.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
-
LOCATION
:HyperparameterTuningJob
이 생성된 리전입니다. - NAME: 초매개변수 조정 작업의 이름입니다. 작업 이름은 다음 형식을 사용합니다.
projects/{project}/locations/{location}/hyperparameterTuningJobs/{hyperparameterTuningJob}
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/NAME:cancel
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
초매개변수 조정 작업 삭제
다음 코드 샘플은 Python용 Vertex AI SDK 및 REST API를 사용하여 초매개변수 조정 작업을 삭제하는 방법을 보여줍니다.
REST
hyperparameterTuningJob
리소스의 delete
메서드를 사용하여 초매개변수 조정 작업을 삭제하려면 다음 코드 샘플을 사용하세요.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 리전입니다.
- NAME: 초매개변수 조정 작업의 이름입니다. 작업 이름은 다음 형식을 사용합니다.
projects/{project}/LOCATIONs/{LOCATION}/hyperparameterTuningJobs/{hyperparameterTuningJob}
HTTP 메서드 및 URL:
DELETE https://LOCATION-aiplatform.googleapis.com/v1/NAME
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
다음 단계
- 초매개변수 조정에 관련된 개념 자세히 알아보기
- 리소스 가용성을 기반으로 커스텀 학습 작업을 예약하는 방법을 알아보세요.