AI Platform Vizier에 API 요청 보내기

이 페이지에서는 curl을 사용하여 AI Platform Vizier에 대한 API를 요청하는 방법을 설명합니다.

시작하기 전에

  1. AI Platform Vizier 개요를 읽고 AI Platform Vizier의 작동 방식을 알아보세요.
  2. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  3. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  4. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  5. AI Platform Training and Prediction API 사용 설정

    API 사용 설정

  6. Google Cloud CLI를 설치합니다.
  7. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  8. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  9. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  10. AI Platform Training and Prediction API 사용 설정

    API 사용 설정

  11. Google Cloud CLI를 설치합니다.
  12. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init

Cloud Billing 계정에 로그인

다음 명령어를 사용하여 Google Cloud 계정에 로그인합니다.

gcloud auth application-default login
gcloud auth login

상수 정의

USERNAMEPROJECT_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 사용 방법의 예시는 다음을 참조하세요.