TensorFlow.org で見る | Google Colab で実行する | GitHub で見る | ノートブックをダウンロード | 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()
3. 請求先アカウントをプロジェクトにリンクする
次のステップは、このプロジェクトの請求先アカウントを設定することです。 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 APIとCloud 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