AI Platform Prediction は、AI Platform Prediction プロジェクトにアクセス権を付与した Cloud Storage ロケーションからデータを読み取ります。このページでは、AI Platform Prediction で Cloud Storage を使用する方法を簡単に説明します。
概要
AI Platform Prediction の次のサービスを利用する場合は、Cloud Storage の使用が必須になります(あるいは推奨されます)。
オンライン予測
- 保存済みのモデルを保存し、モデル バージョンにする。
- カスタム予測ルーチン(ベータ版)またはカスタムコードを使用した scikit-learn パイプライン(ベータ版)を使用している場合、予測リクエストを処理するカスタムコードを保存する。
- 予測の処理時にアクセスするカスタムコード用の追加データを保存する。
バッチ予測
- バッチ予測の入力ファイルを保存する。
- バッチ予測の出力を保存する。
- AI Platform Prediction にモデルをデプロイせずにバッチ予測を使用する場合、モデルを保存する。
リージョンに関する考慮事項
AI Platform Prediction で使用する Cloud Storage バケットを作成する場合、次のことを行う必要があります。
- マルチリージョン値ではなく、特定のコンピューティング リージョンに割り当てます。
- トレーニング ジョブを実行するのと同じリージョンを使用します。
詳しくは、AI Platform Prediction で利用可能なリージョンをご覧ください。
Cloud Storage バケットを設定する
このセクションでは、新しいバケットを作成する方法を説明します。既存のバケットを使用することもできますが、AI Platform ジョブを実行する予定のリージョンと同じリージョンにある必要があります。また、AI Platform Prediction を実行するプロジェクトに含まれていない場合は、明示的に AI Platform Prediction サービス アカウントへのアクセスを許可する必要があります。
-
新しいバケットに名前を指定します。名前は Cloud Storage のすべてのバケット全体で重複しないようにする必要があります。
BUCKET_NAME="YOUR_BUCKET_NAME"
たとえば、プロジェクト名に
-aiplatform
を追加したものを使います。PROJECT_ID=$(gcloud config list project --format "value(core.project)") BUCKET_NAME=${PROJECT_ID}-aiplatform
-
作成したバケット名を確認します。
echo $BUCKET_NAME
-
バケットのリージョンを選択して、
REGION
環境変数を設定します。AI Platform Prediction ジョブを実行する予定のリージョンと同じリージョンを使用してください。詳しくは、AI Platform Prediction サービスの利用可能なリージョンをご覧ください。
たとえば、次のコードは
REGION
を作成し、us-central1
に設定します。REGION=us-central1
-
新しいバケットを作成します。
gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION
バケット内のモデル編成
モデルの多数の反復に対応できるように、バケット内のフォルダ構造を編成します。
- 保存済みの各モデルをバケット内の別々のディレクトリに配置します。
- バケット内のディレクトリに名前を付ける場合は、タイムスタンプの使用を検討してください。
たとえば、gs://your-bucket/your-model-DATE1/your-saved-model-file
に似た構造に最初のモデルを配置します。モデルの後続のイテレーションで使用するディレクトリ名を指定するには、更新されたタイムスタンプ(gs://your-bucket/your-model-DATE2/your-saved-model-file
など)を使用します。
予測時に Cloud Storage にアクセスする
カスタム予測ルーチン(ベータ版)またはカスタムコードを使用した scikit-learn パイプライン(ベータ版)をデプロイすると、モデル バージョンでは、予測の処理時に、同じプロジェクト内の任意の Cloud Storage バケットからデータを読み取ることができます。
カスタム予測コード内では、Cloud Storage からの読み取りに対応できる Python モジュール(Google Cloud Storage 用 Python クライアント、TensorFlow の tf.io.gfile.GFile
モジュール、pandas 0.24.0 以降など)を使用します。認証は AI Platform Prediction によって処理されます。
カスタム予測ルーチンをデプロイするときにサービス アカウントを指定することで、デプロイでアクセスできる Cloud Storage リソースをカスタマイズすることもできます。
別のプロジェクトの Cloud Storage バケットを使用する
このセクションでは、AI Platform Prediction がバケットにアクセスできるように、プロジェクトの外部から Cloud Storage バケットを構成する方法について説明します。
AI Platform Prediction を使用しているプロジェクトで Cloud Storage バケットを設定している場合、Cloud Storage バケットへのアクセスに必要な権限が AI Platform Prediction サービス アカウントにすでに付与されています。
次の場合に行う手順について説明します。
- 大規模なデータセットを複数のプロジェクト間で共有する場合など、自分のプロジェクトからバケットを使用できない場合。
- AI Platform Prediction で複数のバケットを使用する場合。バケットごとに AI Platform Prediction のサービス アカウントにアクセス権を付与する必要があります。
ステップ 1: クラウド プロジェクトから必要な情報を取得する
コンソール
Google Cloud コンソールで IAM ページを開きます。
IAM ページには、プロジェクトにアクセスできるすべてのプリンシパルのリストとそれに関連するロールが表示されます。AI Platform Prediction のプロジェクトには複数のサービス アカウントがあります。Cloud ML サービス アカウントのロールを持つサービス アカウントをリストから探して、そのサービス アカウントの ID をコピーします。ID は次のような形式になっています。
"service-111111111111@cloud-ml.google.com.iam.gserviceaccount.com"
次の手順で、このサービス アカウント ID を Google Cloud コンソール の別のページに貼り付ける必要があります。
コマンドライン
このセクションでは、プロジェクトの AI Platform Prediction サービス アカウントのアクセス制御を変更するために必要な Google Cloud プロジェクトの情報を取得します。後で使用できるように、値を環境変数に保存します。
選択したプロジェクトで Google Cloud CLI を使用し、プロジェクト ID を取得します。
PROJECT_ID=$(gcloud config list project --format "value(core.project)")
gcloud
を使用して、プロジェクト用のアクセス トークンを取得します。AUTH_TOKEN=$(gcloud auth print-access-token)
REST サービスからプロジェクトの構成をリクエストして、サービス アカウント情報を取得します。
SVC_ACCOUNT=$(curl -X GET -H "Content-Type: application/json" \ -H "Authorization: Bearer $AUTH_TOKEN" \ https://ml.googleapis.com/v1/projects/${PROJECT_ID}:getConfig \ | python3 -c "import json; import sys; response = json.load(sys.stdin); \ print(response['serviceAccount'])")
ステップ 2: Cloud Storage バケットへのアクセスを構成する
コンソール
Google Cloud コンソールで [ストレージ] ページを開きます。
バケット名の左側にあるボックスをオンにして、モデルのデプロイに使用する Cloud Storage バケットを選択します。
右上隅にある [情報パネルを表示] ボタンをクリックして、[権限] タブを表示します。
サービス アカウントの ID を [プリンシパルを追加] フィールドに貼り付けます。 このフィールドの右で、必要なロール(ストレージのレガシー バケット読み取りなど)を選択します。
選択するロールが不明な場合、複数のロールを選択すると、ロールに設定された権限の簡単な説明が [プリンシパルを追加] フィールドの下に表示されます。
サービス アカウントに目的のロールを割り当てるには、[プリンシパルを追加] フィールドの右側にある [追加] ボタンをクリックします。
コマンドライン
プロジェクトとサービス アカウントの情報があるので、Cloud Storage バケットのアクセス権を更新する必要があります。以下の手順では、前のセクションと同じ変数名を使用します。
BUCKET_NAME
という名前の環境変数にバケットの名前を設定します。BUCKET_NAME="your_bucket_name"
Cloud Storage バケット内のオブジェクトに対する読み取りアクセス権をサービス アカウントに付与します。
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME --member=user:$SVC_ACCOUNT --role=roles/storage.legacyObjectReader
書き込みアクセス権を許可します。
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME --member=user:$SVC_ACCOUNT --role=roles/storage.legacyObjectWriter
AI Platform Prediction のサービス アカウントに付与するロールについては、Cloud Storage IAM のロールをご覧ください。Cloud Storage で IAM ロールを更新する方法については、リソースのサービス アカウントにアクセス権を付与する方法をご覧ください。
次のステップ
- スタートガイドの手順に沿って AI Platform Prediction を実際に体験する。
- AI Platform の仕組みについて学習する。
- AI Platform Prediction の仕組みについて学習する。