Google Cloud アカウントのセットアップと接続

TensorFlow.org で見る Google Colab で実行するGitHub で見るノートブックをダウンロードKaggleのロゴKaggle で実行する

このガイドは、特にtensorflow_cloudを使用して Google Cloud AI Platform で大規模なトレーニングを簡単に実行することを目的とした、初めてのユーザーが Google Cloud Platform アカウントをセットアップするのに役立ちます。 TensorFlow Cloud は、ユーザーがローカルまたは kaggle 環境での Keras および TensorFlow コードのデバッグ、トレーニング、チューニングからクラウド上の分散トレーニング/チューニングに簡単に移行できる API を提供します。

1. Google Cloud Platform にサインアップする

開始するには、 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を有効にしてノートブックを認証する

プロジェクトのセットアップが完了したので、このノートブックから直接残りの構成手順を続行できます。ノートブックには 3 種類あり、このステップ (ステップ #2) はノートブックごとに若干異なりますが、残りのステップ (ステップ #3 ~ #6) はすべてのノートブックで同じです。

  • 2.1. Kaggle ノートブックの認証
  • 2.2. Colab ノートブックの認証
  • 2.3. Cloud AI ノートブックの認証 - サポートされていません。

2.1 Kaggle ノートブックの認証のセットアップ

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 のもの) を使用して、次のコマンドを実行します。これにより、請求先アカウント 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という 2 つの特定の API を使用します。これはこのプロジェクトの 1 回限りのセットアップであり、ノートブックごとにこのコマンドを再実行する必要はないことに注意してください。

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 チューニング ジョブのサービス アカウントを作成する

この手順は、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 を実行する準備ができました。これらの手順は 1 回だけ実行する必要があることに注意してください。プロジェクトをセットアップしたら、今後の実行で同じプロジェクトとバケット構成を再利用できます。新しいノートブックの場合は、ステップ 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