이 페이지에서는 Python을 사용해서 Vertex AI Vizier에 API 요청을 수행하는 방법을 설명합니다. Vertex AI Vizier 작동 방법은 Vertex AI Vizier 개요를 참조하세요.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Python용 Vertex AI SDK를 설치합니다.
상수 정의
상수를 정의하려면 다음 명령어를 실행하여 REGION
및 PROJECT_ID
를 리전 및 프로젝트 ID로 바꿉니다.
자체 학습 이름을 만들거나 추천 값을 사용합니다.
import json
import datetime
from google.cloud import aiplatform
REGION = "REGION"
PROJECT_ID = "PROJECT_ID"
# The following placeholder variables are automatically filled in.
STUDY_DISPLAY_NAME = '{}_study_{}'.format(PROJECT_ID.replace('-', ''), datetime.datetime.now().strftime('%Y%m%d_%H%M%S')) #@param {type: 'string'}
ENDPOINT = REGION + '-aiplatform.googleapis.com'
PARENT = 'projects/{}/locations/{}'.format(PROJECT_ID, REGION)
API 요청 생성
다음 명령줄 API 요청은 Python으로 작성되어 있습니다.
학습 만들기
학습이란 초매개변수 또는 매개변수를 최적화하는 데 도움이 되는 일련의 실험 또는 시도입니다.
다음 예시에서 목표는 [-10. 10] 범위에서 x
를 사용하여 y = x^2
를 최대화하는 것입니다. 이 예시에는 매개변수가 하나뿐이며, 쉽게 계산할 수 있는 함수를 사용하여 Vertex AI Vizier를 사용하는 방법을 보여줍니다.
param_x = {
'parameter_id': 'x',
'double_value_spec': {
'min_value': -10.0,
'max_value': 10.0
}
}
metric_y = {
'metric_id': 'y',
'goal': 'MAXIMIZE'
}
study = {
'display_name': STUDY_DISPLAY_NAME,
'study_spec': {
'algorithm': 'RANDOM_SEARCH',
'parameters': [param_x],
'metrics': [metric_y],
}
}
학습 구성을 사용하여 학습을 만들려면 VizierServiceClient
를 통해 다음 요청을 보냅니다. 반환된 STUDY_NAME
을 사용하여 학습을 쿼리합니다.
vizier_client = aiplatform.gapic.VizierServiceClient(client_options=dict(api_endpoint=ENDPOINT))
study = vizier_client.create_study(parent=PARENT, study=study)
STUDY_NAME = study.name
학습 보기
학습이 생성되면 Google Cloud Console 실험 페이지의 Vertex AI 섹션에서 학습을 찾을 수 있습니다.
학습 가져오기
학습을 가져오려면 다음 요청을 전송합니다.
vizier_client.get_study({'name': STUDY_NAME})
학습 나열
특정 프로젝트 및 리전의 학습을 나열하려면 다음 요청을 전송합니다.
vizier_client.list_studies({'parent': PARENT})
추천 시도 가져오기
Vertex AI Vizier에서 시도 추천을 가져오려면 SUGGEST_COUNT
및 CLIENT_ID
가 포함된 요청을 만듭니다. 요청을 보내서 이 정보를 Vertex AI Vizier로 전달합니다.
다음 명령어를 사용하여 요청을 만듭니다. SUGGEST_COUNT
를 각 요청에서 가져오려는 추천 수로 변경합니다.
suggest_response = vizier_client.suggest_trials({
'parent': STUDY_NAME,
'suggestion_count': SUGGEST_COUNT,
'client_id': CLIENT_ID
})
suggest_trials
는 시도를 생성하기 위해 장기 실행 작업을 시작합니다.
응답을 통해 Vertex AI Vizier가 시도 추천 시 작동하는지 알 수 있습니다.
반환된 결과를 기다리려면 result()
함수를 사용합니다.
suggest_response.result().trials
다음 형식은 예시 시도를 보여줍니다. 이 시도는 x
매개변수에 0.1
값을 사용할 것을 권장합니다.
name: "TRIAL_ID"
state: ACTIVE
parameters {
parameter_id: "x"
value {
number_value: 0.1
}
}
start_time {
seconds: 1618011215
}
이전 응답의 TRIAL_ID
를 사용하여 시도를 가져옵니다.
vizier_client.get_trial({
'name': TRIAL_ID
})
테스트 결과 평가하기
시도 추천을 받은 후 각 시도를 평가하고 각 결과를 측정값으로 기록합니다.
예를 들어 최적화하려는 함수가 y = x^2
이면 시도에서 추천하는 값 x
를 사용하여 함수를 평가합니다.
이 함수는 추천 값 0.1
을 사용하여 y = 0.1 * 0.1
로 계산되며 결과는 0.01
이 됩니다.
측정값 추가
시도 추천을 평가하여 측정값을 얻은 다음 이 측정값을 시도에 추가합니다.
다음 명령어를 사용하여 측정값을 저장하고 요청을 보냅니다.
이 예시에서는 RESULT
를 측정값으로 바꿉니다. 최적화하는 함수가 y = x^2
이고 x
의 추천 값이 0.1
이면 결과는 0.01
입니다.
vizier_client.add_trial_measurement({
'trial_name': TRIAL_ID,
'measurement': {
'metrics': [{'metric_id': 'y', 'value':RESULT }]
}
})
시도 완료
시도에 대해 모든 측정값을 추가한 다음에는 명령어를 전송하여 시도를 완료해야 합니다.
시도를 완료할 때는 시도만 완료하는 명령어를 전송하거나 최종 측정값을 추가하고 시도를 완료하는 명령어를 전송할 수 있습니다.
최종 측정값 제외
최종 측정값을 추가하지 않고 시도를 완료하려면 다음 요청을 전송합니다.
vizier_client.complete_trial({
'name': TRIAL_ID
})
최종 측정값 포함
시도를 완료하고 최종 측정값을 포함하려면 다음 명령어를 사용하고 RESULT
를 최종 측정값으로 바꿉니다.
vizier_client.complete_trial({
'name': TRIAL_ID
'final_measurement': {
'metrics': [{'metric_id': 'y', 'value': RESULT}]
}
})
시도 나열
특정 학습의 시도를 나열하려면 다음 요청을 보냅니다.
vizier_client.list_trials({
'parent': STUDY_NAME
})
대기중인 시도를 모두 완료하면 suggestTrials
을 호출하여 추가 추천을 확인하고 시도 평가 프로세스를 반복할 수 있습니다.
최적 시도 나열
다음 예시는 다중 객관 학습에 대한 파타토 최적화 시도 또는 단일 목표 학습에 대한 최적 시도를 반환하는 list_optimal_trials
을 보여줍니다.
vizier_client.list_optimal_trials({
'parent': STUDY_NAME
})
다음 단계
- 연구에서 REST 참조를 확인하세요.