Vertex AI Pipelines용으로 Google Cloud 프로젝트 구성

Vertex AI Pipelines를 사용하여 머신 러닝(ML) 파이프라인을 조정하려면 먼저 Google Cloud 프로젝트를 설정해야 합니다. Vertex ML 메타데이터에 사용되는 메타데이터 저장소와 같은 일부 리소스는 파이프라인을 처음 실행할 때 Google 클라우드 프로젝트에 생성됩니다.

다음 안내에 따라 Vertex AI Pipelines용으로 프로젝트를 구성하세요.

  1. Google 클라우드 프로젝트를 만들고 Vertex AI Pipelines에 사용할 수 있도록 구성합니다.

  2. 서비스 계정을 지정하지 않으면 Vertex AI Pipelines가 Compute Engine 기본 서비스 계정을 사용하여 파이프라인을 실행합니다. Compute Engine 기본 서비스 계정에 대한 자세한 내용은 Compute Engine 기본 서비스 계정 사용을 참조하세요.

    파이프라인 실행을 위해 서비스 계정을 만든 후 파이프라인 실행에 필요한 Google Cloud 리소스에 대해 세부적인 권한을 이 계정에 부여하는 것이 좋습니다.

  3. Vertex AI Pipelines는 Cloud Storage를 사용하여 파이프라인 실행의 아티팩트를 저장합니다. Cloud Storage 버킷을 만들고 이 버킷에 대한 액세스 권한을 서비스 계정에 부여합니다.

  4. Vertex AI Pipelines는 Vertex ML Metadata를 사용하여 파이프라인 실행으로 생성된 메타데이터를 저장합니다. 파이프라인을 처음 실행할 때 프로젝트의 메타데이터 저장소가 없으면 Vertex AI가 프로젝트의 메타데이터 저장소를 만듭니다.

    고객 관리 암호화 키(CMEK)를 사용하여 데이터를 암호화하려면 파이프라인을 실행하기 전에 CMEK 키를 사용하여 메타데이터 저장소를 만들 수 있습니다. 그렇지 않고 프로젝트에 기존 기본 메타데이터 저장소가 없으면 파이프라인을 처음 실행할 때 사용되는 CMEK 키를 사용하여 Vertex AI가 프로젝트의 메타데이터 저장소를 만듭니다. 메타데이터 저장소를 만든 다음에는 파이프라인 실행에 사용된 CMEK 키와 다른 CMEK 키를 사용합니다.

Google Cloud 프로젝트 설정

다음 안내에 따라 Google 클라우드 프로젝트를 만들고 Vertex AI Pipelines에 사용하도록 구성합니다.

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

    프로젝트 선택기로 이동

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

  4. API Vertex AI and Cloud Storage 사용 설정

    API 사용 설정

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

    gcloud init
  7. gcloud 구성요소를 업데이트 및 설치합니다.
    gcloud components update
    gcloud components install beta
  8. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

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

  10. API Vertex AI and Cloud Storage 사용 설정

    API 사용 설정

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

    gcloud init
  13. gcloud 구성요소를 업데이트 및 설치합니다.
    gcloud components update
    gcloud components install beta

세분화된 권한으로 서비스 계정 구성

파이프라인을 실행할 때 서비스 계정을 지정할 수 있습니다. 파이프라인 실행은 이 서비스 계정의 권한으로 작동합니다.

서비스 계정을 지정하지 않으면 파이프라인 실행에 Compute Engine 기본 서비스 계정이 사용됩니다. Compute Engine 기본 서비스 계정에 대한 자세한 내용은 Compute Engine 기본 서비스 계정 사용을 참조하세요.

  • 다음 안내에 따라 서비스 계정을 만들고 Google Cloud 리소스에 대해 세부 권한을 부여합니다.

    1. 다음 명령어를 실행하여 서비스 계정을 만듭니다.

      gcloud iam service-accounts create SERVICE_ACCOUNT_ID \
          --description="DESCRIPTION" \
          --display-name="DISPLAY_NAME" \
          --project=PROJECT_ID
      

      다음 값을 바꿉니다.

      • SERVICE_ACCOUNT_ID: 서비스 계정의 ID입니다.
      • DESCRIPTION: (선택사항) 서비스 계정에 대한 설명입니다.
      • DISPLAY_NAME: 이 서비스 계정의 표시 이름입니다.
      • PROJECT_ID: 서비스 계정을 만들 프로젝트입니다.

      서비스 계정 만들기에 대해 자세히 알아보세요.

    2. 서비스 계정에 Vertex AI 액세스 권한을 부여합니다. 액세스 변경사항이 전파되는 데 다소 시간이 걸릴 수 있습니다. 자세한 내용은 액세스 변경 전파를 참조하세요.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/aiplatform.user"
      

      다음 값을 바꿉니다.

      • PROJECT_ID: 서비스 계정이 생성된 프로젝트입니다.
      • SERVICE_ACCOUNT_ID: 서비스 계정의 ID입니다.
    3. Artifact Registry를 사용하여 컨테이너 이미지와 Kubeflow Pipelines 템플릿을 호스팅할 수 있습니다.

      Artifact Registry에 대한 자세한 내용은 Artifact Registry 문서를 참조하세요.

    4. 파이프라인에서 사용하는 모든 Google Cloud 리소스에 대한 액세스 권한을 서비스 계정에 부여합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \
          --role="ROLE_NAME"
      

      다음 값을 바꿉니다.

      • PROJECT_ID: 서비스 계정이 생성된 프로젝트입니다.
      • SERVICE_ACCOUNT_ID: 서비스 계정의 ID입니다.
      • ROLE_NAME: 이 서비스 계정에 부여할 Identity and Access Management 역할입니다.
    5. Vertex AI Pipelines를 사용하여 이 서비스 계정으로 파이프라인을 실행하려면 다음 명령어를 실행하여 서비스 계정에 해당 서비스 계정에 대한 roles/iam.serviceAccountUser 역할을 부여합니다.

      gcloud iam service-accounts add-iam-policy-binding \
          SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
          --member="user:USER_EMAIL" \
          --role="roles/iam.serviceAccountUser"
      

      다음 값을 바꿉니다.

      • SERVICE_ACCOUNT_ID: 서비스 계정의 ID입니다.
      • PROJECT_ID: 서비스 계정이 생성된 프로젝트입니다.
      • USER_EMAIL: 파이프라인을 이 서비스 계정으로 실행하는 사용자의 이메일 주소입니다.
  • Compute Engine 기본 서비스 계정을 사용하여 파이프라인을 실행하려는 경우 Compute Engine API를 사용 설정하고 기본 서비스 계정에 Vertex AI 액세스 권한을 부여합니다. 액세스 변경사항이 전파되는 데 다소 시간이 걸릴 수 있습니다. 자세한 내용은 액세스 변경 전파를 참조하세요.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
        --role="roles/aiplatform.user"
    

    다음 값을 바꿉니다.

    • PROJECT_ID: 기본 서비스 계정이 생성된 프로젝트입니다.
    • PROJECT_NUMBER: 기본 서비스 계정이 생성된 프로젝트 번호입니다.

    API 사용 설정

파이프라인 아티팩트에 대해 Cloud Storage 버킷 구성

Vertex AI Pipelines는 Cloud Storage를 사용하여 파이프라인 실행의 아티팩트를 저장합니다. 다음 안내에 따라 Cloud Storage 버킷을 만들고 서비스 계정(또는 Compute Engine 기본 서비스 계정)에 해당 버킷에서 객체를 읽고 쓸 수 있는 액세스 권한을 부여합니다.

  1. 다음 명령어를 실행하여 파이프라인을 실행하려는 리전에 Cloud Storage 버킷을 만듭니다.

    gsutil mb -p PROJECT_ID -l BUCKET_LOCATION gs://BUCKET_NAME
    

    다음 값을 바꿉니다.

    • PROJECT_ID: 버킷이 연결된 프로젝트를 지정합니다.
    • BUCKET_LOCATION: 버킷의 위치를 지정합니다. 예를 들면 US-CENTRAL1입니다.
    • BUCKET_NAME: 이름 지정 요구사항에 따라 버킷에 지정할 이름입니다. 예를 들면 my-bucket입니다.

    Cloud Storage 버킷 만들기에 대해 자세히 알아봅니다.

  2. 다음 명령어를 실행하여 서비스 계정에 이전 단계에서 만든 버킷에 있는 파이프라인 아티팩트를 읽고 쓸 수 있는 액세스 권한을 부여합니다.

    gsutil iam ch \
    serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com:roles/storage.objectCreator,objectViewer \
    gs://BUCKET_NAME
    

    다음 값을 바꿉니다.

    • SERVICE_ACCOUNT_ID: 서비스 계정의 ID입니다.
    • PROJECT_ID: 서비스 계정이 생성된 프로젝트입니다.
    • BUCKET_NAME: 서비스 계정에 부여하는 액세스 권한의 대상 버킷 이름입니다.

    또는 Compute Engine 기본 서비스 계정을 사용하여 파이프라인을 실행하려면 gcloud iam service-accounts list 명령어를 실행하여 해당 계정의 프로젝트 번호를 찾습니다.

    gcloud iam service-accounts list
    

    Compute Engine 기본 서비스 계정 이름은 PROJECT_NUMBER-compute@developer.gserviceaccount.com과 같이 지정됩니다.

    다음 명령어를 실행하여 Compute Engine 기본 서비스 계정에 이전 단계에서 만든 버킷에서 파이프라인 아티팩트를 읽고 쓸 수 있는 액세스 권한을 부여합니다.

    gsutil iam ch \
    serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com:roles/storage.objectCreator,objectViewer \
    gs://BUCKET_NAME
    

    다음 값을 바꿉니다.

    • PROJECT_NUMBER: Compute Engine 기본 서비스 계정의 프로젝트 번호입니다.
    • BUCKET_NAME: 서비스 계정에 부여하는 액세스 권한의 대상 버킷 이름입니다.

    Cloud Storage 버킷에 대한 액세스 제어에 대해 자세히 알아보세요.

CMEK를 사용하는 메타데이터 저장소 만들기(선택사항)

다음 안내에 따라 CMEK를 만들고 이 CMEK를 사용하는 Vertex ML 메타데이터 저장소를 설정합니다.

  1. Cloud Key Management Service를 사용하여 고객 관리 암호화 키를 구성합니다.

  2. 다음 REST 호출을 사용하고 CMEK를 사용해서 프로젝트의 기본 메타데이터 저장소를 만듭니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • LOCATION_ID: 리전
    • PROJECT_ID: 프로젝트 ID
    • KEY_RING: 암호화 키가 설정된 Cloud Key Management Service 키링의 이름입니다.
    • KEY_NAME: 이 메타데이터 저장소에 사용하려는 암호화 키의 이름입니다.

    HTTP 메서드 및 URL:

    POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores?metadata_store_id=default

    JSON 요청 본문:

    {
      "encryption_spec": {
        "kms_key_name": "projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY_NAME"
      },
    }
    

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATIONS_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateMetadataStoreOperationMetadata",
        "genericMetadata": {
          "createTime": "2021-05-18T18:47:14.494997Z",
          "updateTime": "2021-05-18T18:47:14.494997Z"
        }
      }
    }