AI Platform Vizier에 API 요청 보내기
이 페이지에서는 curl
을 사용하여 AI Platform Vizier에 대한 API를 요청하는 방법을 설명합니다.
시작하기 전에
- AI Platform Vizier 개요를 읽고 AI Platform Vizier의 작동 방식을 알아보세요.
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the AI Platform Training and Prediction API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the AI Platform Training and Prediction API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Cloud Billing 계정에 로그인
다음 명령어를 사용하여 Google Cloud 계정에 로그인합니다.
gcloud auth application-default login
gcloud auth login
상수 정의
USERNAME 및 PROJECT_ID를 사용자 이름 및 프로젝트 ID 정보로 바꿔 다음 명령어를 실행합니다. 자체 학습 이름과 클라이언트 ID를 만들거나 추천 값을 사용합니다.
export USER=USERNAME
export PROJECT_ID=PROJECT_ID{"</var>"}}
export REGION=us-central1
export STUDY_NAME=${USER}_vizier_study_$(date +%Y%m%d%H%M%S)
export CLIENT_ID=${USER}_client_1
export ENDPOINT=https://$REGION-ml.googleapis.com/v1
API 요청 생성
다음은 curl
을 사용하여 AI Platform Vizier에 명령줄 API 요청을 생성하는 방법을 설명합니다.
학습 만들기
학습이란 초매개변수 또는 매개변수를 최적화하는 데 도움이 되는 일련의 실험 또는 시도입니다.
학습을 만들려면 JSON 형식으로 학습 구성을 만든 다음 구성을 AI Platform Vizier로 전달하는 POST
요청을 전송합니다.
학습 구성은 다음과 비슷합니다. AI Platform Training 및 Prediction API 문서에서 알고리즘 옵션, 목표 유형, 기타 옵션에 대해 자세히 알아보세요.
다음 예시에서 목표는 [-10. 10] 범위에서 x
를 사용하여 y = x^2
를 최대화하는 것입니다. 이 예시에는 매개변수가 하나뿐이며, 쉽게 계산할 수 있는 함수를 사용하여 AI Platform Vizier를 사용하는 방법을 보여줍니다.
AI Platform Vizier를 사용하여 복잡한 최적화 문제를 해결하는 방법과 한 번에 여러 함수를 최적화하는 방법에 대해 자세히 알아보세요.
cat > /tmp/create_study.json <<EOF
{
"studyConfig": {
"algorithm": 0,
"metrics": [
{
"goal": "MAXIMIZE",
"metric": "y"
}
],
"parameters": [
{
"doubleValueSpec": {
"maxValue": 10.0,
"minValue": -10.0
},
"parameter": "x",
"type": "DOUBLE"
}
]
}
}
EOF
학습 구성을 사용하여 학습을 만들려면 다음 POST
요청을 보냅니다.
curl -X POST -H "Content-Type: application/json" \
-d @/tmp/create_study.json \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies?study_id=${STUDY_NAME}"
학습 가져오기
학습을 가져오려면 다음 요청을 전송합니다.
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}"
학습 나열
특정 프로젝트 및 리전의 학습을 나열하려면 다음 요청을 전송합니다.
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/"
추천 시도 가져오기
AI Platform Vizier에서 시도 추천을 가져오려면 suggestionCount
와 클라이언트 ID가 포함된 JSON 파일을 만듭니다.
그런 다음 이 정보를 AI Platform Vizier로 전달하는 POST
요청을 보냅니다.
다음 명령어를 사용하여 JSON 파일을 만듭니다. suggestionCount
를 각 요청에서 가져오려는 추천 수로 변경합니다.
cat > /tmp/suggest_trial.json <<EOF
{
"suggestionCount": 1,
"clientId": "${CLIENT_ID}"
}
EOF
추천을 가져오려면 다음 POST
요청을 보냅니다.
curl -X POST -H "Content-Type: application/json" \
-d @/tmp/suggest_trial.json \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials:suggest"
suggestTrial
은 시도 생성 시 작동하는 장기 실행 작업을 시작합니다. 응답을 통해 AI Platform Vizier가 시도 추천 시 작동하는지 알 수 있습니다. 이 응답의 형식은 다음과 같습니다.
{
"name": "projects/<project>/locations/<region>/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.ml.v1.SuggestTrialsMetadata",
"study": <study-name>,
"createTime": <create-time>,
"suggestionCount": <suggestion-count>
}
}
이전 응답의 작업 ID를 사용하여 추천 작업을 폴링하고 시도 추천을 가져올 수 있습니다. 다음 명령어를 사용하세요.
SUGGEST_OPERATION_ID=OPERATION_ID
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/operations/${SUGGEST_OPERATION_ID}"
응답을 받지 못하는 경우 suggestTrial
요청이 완료되지 않았기 때문일 수 있습니다. 필요한 경우 이전 명령어를 반복합니다.
응답은 다음 형식으로 시도 추천을 제공합니다.
{
"name": "projects/<project>/locations/<region>/operations/<operation-id>",
"metadata": {...},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.ml.v1.SuggestTrialsResponse",
"trials": [
{
"name": "projects/<project>/locations/<region>/studies/<study-id>/trials/TRIAL_ID",
"state": "ACTIVE",
"parameters": [
{
"parameter": "x",
"floatValue": 0.1
}
],
...
}
],
...
}
}
위의 예시에서 이 시도는 매개변수 x
의 값 0.1
을 사용하여 추천합니다.
이전 응답의 시도 ID를 사용하면 다음 명령어를 사용하여 시도를 가져올 수 있습니다.
TRIAL_ID=TRIAL_ID
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/${TRIAL_ID}"
결과 평가
시도 추천을 받은 후 각 시도를 평가하고 각 결과를 측정값으로 기록합니다.
예를 들어 최적화하려는 함수가 y = x^2
이면 시도에서 추천하는 값 x
를 사용하여 함수를 평가합니다.
이 함수는 추천 값 0.1
을 사용하여 y = 0.1 * 0.1
로 계산되며 결과는 0.01
이 됩니다.
측정값 추가
시도 추천을 평가하여 측정값을 얻은 다음 이 측정값을 시도에 추가합니다. 먼저, 측정한 측정항목과 결과를 포함하는 JSON 파일을 만듭니다.
그런 다음 이 정보를 AI Platform Vizier로 전달하는 POST
요청을 보냅니다.
측정값을 저장하고 다음 명령어를 사용하여 JSON 파일을 만듭니다. 이 예시에서는 RESULT를 측정값으로 바꿉니다. 최적화하는 함수가 y = x^2
이고 x
의 추천 값이 0.1
이면 결과는 0.01
입니다.
METRIC_VALUE=RESULT
cat > /tmp/add_measurement.json <<EOF
{
"measurement": {
"stepCount": 1,
"metrics": [
{
"metric": "y",
"value": ${METRIC_VALUE}
}
]
}
}
EOF
이 측정값을 시도에 추가하려면 다음 POST
요청을 전송합니다.
curl -X POST -H "Content-Type: application/json" \
-d @/tmp/add_measurement.json \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/${TRIAL_ID}:addMeasurement"
시도 완료
시도의 모든 측정값을 추가한 후 다음 명령어를 사용하여 시도를 완료합니다. 원하는 경우 completeTrial
을 호출할 때 최종 측정값을 추가할 수 있습니다.
최종 측정값 제외
최종 측정값을 추가하지 않고 시도를 완료하려면 다음 POST
요청을 전송합니다.
curl -X POST -H "Content-Type: application/json" \
-d "" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/${TRIAL_ID}:complete"
최종 측정값 포함
평가판 사용을 마칠 때 최종 측정값을 포함하려면 먼저 최종 측정값을 저장하고 다음 명령어를 사용하여 JSON 파일을 만들고 RESULT를 최종 측정값으로 바꿉니다.
FINAL_METRIC_VALUE=RESULT
cat > /tmp/complete_trial.json <<EOF
{
"finalMeasurement": {
"stepCount": 1,
"metrics": [
{
"metric": "y",
"value": ${FINAL_METRIC_VALUE}
}
]
}
}
EOF
다음 POST
요청을 보냅니다.
curl -X POST -H "Content-Type: application/json" \
-d @/tmp/complete_trial.json \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/${TRIAL_ID}:complete"
시도 나열
특정 학습의 시도를 나열하려면 다음 요청을 보냅니다.
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/"
대기중인 시도를 모두 완료하면 suggestTrial
을 호출하여 추가 추천을 확인하고 시도 평가 프로세스를 반복할 수 있습니다.
다음 단계
API 사용 방법의 예시는 다음을 참조하세요.