Google Cloud 계정 설정 및 연결

TensorFlow.org에서 보기 Google Colab에서 실행 GitHub에서 보기 노트북 다운로드 캐글 로고캐글에서 실행

이 가이드는 Google Cloud AI Platform에서 대규모 교육을 쉽게 실행하기 위해 tensorflow_cloud를 사용하려는 의도로 처음 사용자가 Google Cloud Platform 계정을 설정하는 데 도움을 주기 위한 것입니다. TensorFlow Cloud는 사용자가 로컬 또는 Kaggle 환경에서 Keras 및 TensorFlow 코드를 디버깅, 교육, 조정하는 것부터 클라우드의 분산 교육/조정까지 쉽게 이동할 수 있도록 하는 API를 제공합니다.

1. 구글 클라우드 플랫폼에 가입하세요

시작하려면 https://cloud.google.com/ 으로 이동하여 "무료로 시작하기"를 클릭하세요. 이는 이름, 주소 및 신용 카드를 제공해야 하는 2단계 가입 절차입니다. 시작 계정 무료이며 사용할 수 있는 $300 크레딧이 제공됩니다. 이 단계에서는 로그인하려면 Google 계정(예: Gmail 계정)을 제공해야 합니다.

가입 절차를 완료하면 Google Cloud Platform 시작 페이지 로 리디렉션됩니다. "홈" 탭을 클릭하고 프로젝트 ID와 프로젝트 번호를 적어두세요. ( 프로젝트 식별 참조)

GCP_PROJECT_ID = 'YOUR_PROJECT_ID'
PROJECT_NUMBER = 'YOUR_PROJECT_NUMBER'

2.Google Cloud SDK를 활성화하고 노트북을 인증하세요.

이제 프로젝트를 설정했으므로 이 노트북에서 직접 나머지 구성 단계를 계속할 수 있습니다. 세 가지 유형의 노트북이 있는데, 이 단계(2단계)는 노트북마다 약간씩 다르며, 나머지 단계(3단계~6단계)는 모든 노트북에서 동일합니다.

  • 2.1. Kaggle 노트북에 대한 인증
  • 2.2. Colab 노트북 인증
  • 2.3. Cloud AI Notebooks에 대한 인증 - 지원되지 않습니다.

2.1 Kaggle Notebook에 대한 인증 설정

Kaggle 노트북을 사용하는 경우 이 프로젝트에 사용하는 새 노트북에 대해 이 단계를 반복해야 합니다. 노트북에서 부가기능 -> Google Cloud SDK를 클릭하고 프롬프트의 지침을 따르세요. 그런 다음 다음 명령을 실행하여 이 노트북에 인증 자격 증명을 추가합니다.

import sys
if "kaggle_secrets" in sys.modules:
    from kaggle_secrets import UserSecretsClient
    UserSecretsClient().set_gcloud_credentials(project=GCP_PROJECT_ID)

2.2 Colab 노트북에 대한 인증 설정

Colab 노트북을 사용하는 경우 이 프로젝트에 사용하는 모든 새 노트북에 대해 이 단계를 반복해야 합니다. 다음 명령을 실행하여 이 노트북에 인증 자격 증명을 추가하세요.

import sys
if "google.colab" in sys.modules:
    from google.colab import auth
    auth.authenticate_user()

다음 단계는 이 프로젝트의 결제 계정을 설정하는 것입니다. Google Cloud는 기본적으로 'My First Project'라는 프로젝트를 만듭니다. 이 기본 프로젝트를 사용하겠습니다. 프로젝트 ID(1단계)를 사용하여 다음 명령어를 실행하세요. 그러면 Billing Account_ID가 표시됩니다. 다음 단계를 위해 이를 기록해 두세요.

gcloud beta billing accounts list

위에서 Billing Account_ID를 사용하고 다음을 실행하여 청구 계정을 프로젝트와 연결하세요.

기존 프로젝트를 사용하는 경우 Account_ID가 표시되지 않을 수 있습니다. 이는 다음 명령을 실행하거나 관리자에게 문의하거나 새 프로젝트를 생성할 수 있는 적절한 권한이 없음을 의미합니다.

BILLING_ACCOUNT_ID = 'YOUR_BILLING_ACCOUNT_ID'

!gcloud beta billing projects link $GCP_PROJECT_ID --billing-account $BILLING_ACCOUNT_ID

4. 프로젝트에서 tensorflow-cloud에 필요한 API를 활성화합니다.

tensorflow_cloud의 경우 AI Platform Training Jobs APICloud Builder API 라는 두 가지 특정 API를 사용합니다. 이는 이 프로젝트에 대한 일회성 설정이므로 모든 노트북에 대해 이 명령을 다시 실행할 필요가 없습니다.

gcloud services --project $GCP_PROJECT_ID enable ml.googleapis.com cloudbuild.googleapis.com

5. Google Cloud Storage 버킷 만들기

이 스토리지 버킷을 임시 자산용으로 사용하고 모델 체크포인트를 저장합니다. 나중에 참조할 수 있도록 버킷 이름을 기록해 두십시오. 참고 버킷 이름은 전역적으로 고유합니다.

BUCKET_NAME = 'YOUR_BUCKET_NAME'

GCS_BUCKET = f'gs://{BUCKET_NAME}'
!gsutil mb -p $GCP_PROJECT_ID $GCS_BUCKET

HP Tuning 작업을 위한 서비스 계정 만들기

CloudTuner를 사용하여 Google Cloud에서 HP Tuning을 사용하려면 이 단계가 필요합니다. 서비스 계정을 만들고 프로젝트 편집자 액세스 권한을 부여하려면 다음 명령어를 실행하고 서비스 계정 이름을 기록해 둡니다.

SERVICE_ACCOUNT_NAME ='YOUR_SERVICE_ACCOUNT_NAME'

SERVICE_ACCOUNT_EMAIL = f'{SERVICE_ACCOUNT_NAME}@{GCP_PROJECT_ID}.iam.gserviceaccount.com'
!gcloud iam --project $GCP_PROJECT_ID service-accounts create $SERVICE_ACCOUNT_NAME
!gcloud projects add-iam-policy-binding $GCP_PROJECT_ID \
    --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \
    --role=roles/editor

default AI Platform service account service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com 형식의 이메일 주소로 식별됩니다. 1단계의 프로젝트 번호를 사용하여 서비스 계정 이메일을 구성하고 새 서비스 계정에 default AI Platform service account 관리자 역할(roles/iam.serviceAccountAdmin)을 부여합니다.

DEFAULT_AI_PLATFORM_SERVICE_ACCOUNT = f'service-{PROJECT_NUMBER}@cloud-ml.google.com.iam.gserviceaccount.com'

!gcloud iam --project $GCP_PROJECT_ID service-accounts add-iam-policy-binding \
--role=roles/iam.serviceAccountAdmin \
--member=serviceAccount:$DEFAULT_AI_PLATFORM_SERVICE_ACCOUNT \
$SERVICE_ACCOUNT_EMAIL

축하해요 !

이제 tensorflow-cloud를 실행할 준비가 되었습니다. 이 단계는 한 번만 실행하면 됩니다. 프로젝트를 설정한 후에는 향후 실행에 동일한 프로젝트 및 버킷 구성을 재사용할 수 있습니다. 새 노트북의 경우 2단계를 반복하여 Google Cloud 인증 사용자 인증 정보를 추가해야 합니다.

tensorflow-cloud를 실행하는 데 필요한 다음 값을 기록해 두세요.

print(f"Your GCP_PROJECT_ID is:       {GCP_PROJECT_ID}")
print(f"Your SERVICE_ACCOUNT_NAME is: {SERVICE_ACCOUNT_NAME}")
print(f"Your BUCKET_NAME is:          {BUCKET_NAME}")
Your GCP_PROJECT_ID is:       YOUR_PROJECT_ID
Your SERVICE_ACCOUNT_NAME is: YOUR_SERVICE_ACCOUNT_NAME
Your BUCKET_NAME is:          YOUR_BUCKET_NAME