Cloud Storage を使用する

AI Platform は、AI Platform プロジェクトにアクセス権を付与した Cloud Storage ロケーションからデータを読み取ります。このページでは、AI Platform で Cloud Storage を使用する方法を簡単に説明します。

概要

AI Platform の次のサービスを利用する場合は、Cloud Storage の使用が必須になります(あるいは推奨されます)。

トレーニング

  • トレーニング アプリケーションとカスタム依存関係をステージングする。
  • トレーニングの入力データを保存する。
  • トレーニングの出力データを保存する。

予測

  • 保存済みのモデルを保存し、モデル バージョンにする。
  • カスタム予測ルーチン(ベータ版)を使用している場合、予測リクエストを処理するカスタムコードを保存する。
  • 予測の処理時にアクセスされるカスタムコード用の追加データを保存する。

バッチ予測

  • バッチ予測の入力ファイルを保存する。
  • バッチ予測の出力を保存する。

リージョンに関する考慮事項

AI Platform で使用する Cloud Storage バケットを作成するときは、次のことを行う必要があります。

  • マルチリージョン値ではなく、特定のコンピューティング リージョンに割り当てます。
  • トレーニング ジョブを実行するのと同じリージョンを使用します。

詳しくは、AI Platform で利用可能なリージョンをご覧ください。

Cloud Storage バケットを設定する

このセクションでは、新しいバケットの作成方法を説明します。既存のバケットを使用することもできますが、AI Platform の実行に使用するプロジェクトに属していないバケットの場合は、明示的に AI Platform のサービス アカウントにアクセス権を付与する必要があります。

  1. 新しいバケットに名前を指定します。名前は Cloud Storage のすべてのバケット全体で重複しないようにする必要があります。

    BUCKET_NAME="your_bucket_name"

    たとえば、プロジェクト名に -mlengine を追加して使用します。

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    BUCKET_NAME=${PROJECT_ID}-mlengine
  2. 作成したバケット名を確認します。

    echo $BUCKET_NAME
  3. バケットのリージョンを選択して、REGION 環境変数を設定します。

    たとえば、次のコードは REGION を作成して、その値を us-central1 に設定します。

    REGION=us-central1
  4. 新しいバケットを作成します。

    gsutil mb -l $REGION gs://$BUCKET_NAME

    注: 使用するリージョンは、AI Platform ジョブを実行するリージョンと同一にしてください。この例では us-central1 を使用しています。「使ってみる」の説明でこのリージョンが使用されているためです。

バケット内のモデル編成

モデルの多数の反復に対応できるように、バケット内のフォルダ構造を編成します。

  • 保存済みの各モデルをバケット内の別々のディレクトリに配置します。
  • バケット内のディレクトリに名前を付ける場合は、タイムスタンプの使用を検討してください。

たとえば、gs://your-bucket/your-model-DATE1/your-saved-model-file に似た構造に最初のモデルを配置します。モデルの後続の反復で使用するディレクトリ名を指定するには、更新されたタイムスタンプ(gs://your-bucket/your-model-DATE2/your-saved-model-file など)を使用します。

予測時に Cloud Storage にアクセスする

カスタム予測ルーチン(ベータ版)をデプロイすると、予測の処理中に、モデル バージョンは同じプロジェクト内の任意の Cloud Storage バケットからデータを読み取ることができます。

カスタム予測コード内では、Cloud Storage からの読み取りに対応できる Python モジュール(Google Cloud Storage 用 Python クライアント、Tensorflow の tf.gfile モジュール、pandas 0.24.0 以降など)を使用してください。認証は AI Platform によって処理されます。

デプロイでアクセスできる Cloud Storage リソースをカスタマイズするために、カスタム予測ルーチンをデプロイするときにサービス アカウントを指定することもできます。

別のプロジェクトの Cloud Storage バケットを使用する

このセクションでは、AI Platform が自分のプロジェクト以外の Cloud Storage バケットにアクセスできるようにバケットを構成します。

AI Platform を使用しているプロジェクトで Cloud Storage バケットを設定している場合は、Cloud Storage バケットへのアクセスに必要な権限が AI Platform のサービス アカウントにすでに付与されています。

次の場合に行う手順について説明します。

  • 大規模なデータセットを複数のプロジェクト間で共有する場合など、自分のプロジェクトからバケットを使用できない場合。
  • AI Platform で複数のバケットを使用する場合。バケットごとに AI Platform のサービス アカウントにアクセス権を付与する必要があります。

ステップ 1: クラウド プロジェクトから必要な情報を取得

Console

  1. Google Cloud Platform Console で IAM ページを開きます。

    [IAM] ページを開く

  2. IAM ページには、プロジェクトで関連する役割を持つすべてのメンバーが表示されます。AI Platform のプロジェクトには複数のサービス アカウントがあります。Cloud ML サービス アカウントの役割を持つサービス アカウントをリストから探して、そのサービス アカウントの ID をコピーします。ID は次のような形式になっています。

    "service-111111111111@cloud-ml.google.com.iam.gserviceaccount.com"

    以降のステップで、GCP Console の別のページにこのサービス アカウント ID を貼り付ける必要があります。

コマンドライン

このセクションでは、Google Cloud Platform プロジェクトに関する情報を取得します。この情報を使用して、プロジェクトの AI Platform サービス アカウントのアクセス制御を変更します。後で使用できるように、値を環境変数に保存します。

  1. 選択したプロジェクトで gcloud コマンドライン ツールを使用し、プロジェクト ID を取得します。

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    
  2. gcloud を使用して、プロジェクト用のアクセス トークンを取得します。

    AUTH_TOKEN=$(gcloud auth print-access-token)
    
  3. 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 \
        | python -c "import json; import sys; response = json.load(sys.stdin); \
        print response['serviceAccount']")
    

ステップ 2: Cloud Storage バケットへのアクセスの構成

Console

  1. GCP Console で [ストレージ] ページを開きます。

    [ストレージ] ページを開く

  2. バケット名の左側にあるボックスをオンにして、モデルのデプロイに使用する Cloud Storage バケットを選択します。

  3. 右上隅にある [情報パネルを表示] ボタンをクリックして、[権限] タブを表示します。

  4. サービス アカウントの ID を [メンバーを追加] フィールドに貼り付けます。このフィールドの右で、必要な役割(ストレージのレガシー バケット読み取りなど)を選択します。

    選択する役割が不明な場合、複数の役割を選択すると、役割に設定された権限の簡単な説明が [メンバーを追加] フィールドの下に表示されます。

  5. サービス アカウントに目的の役割を割り当てるには、[メンバーを追加] フィールドの右側にある [追加] ボタンをクリックします。

コマンドライン

プロジェクトとサービス アカウントの情報があるので、Cloud Storage バケットのアクセス権を更新する必要があります。以下の手順では、前のセクションと同じ変数名を使用します。

  1. BUCKET_NAME という名前の環境変数にバケットの名前を設定します。

    BUCKET_NAME="your_bucket_name"
    
  2. Cloud Storage バケットに対する読み取りアクセス権をサービス アカウントに付与します。

    gsutil -m defacl ch -u $SVC_ACCOUNT:R gs://$BUCKET_NAME
    
  3. アクセスするオブジェクトがすでにバケットに含まれている場合は、それにも読み取りアクセス権を明示的に付与する必要があります。

    gsutil -m acl ch -u $SVC_ACCOUNT:R -r gs://$BUCKET_NAME
    
  4. 書き込みアクセス権を許可します。

    gsutil -m acl ch -u $SVC_ACCOUNT:W gs://$BUCKET_NAME
    

AI Platform のサービス アカウントに付与する役割については、Cloud Storage IAM の役割をご覧ください。Cloud Storage で IAM 役割を更新する方法については、リソースのサービス アカウントにアクセス権を付与する方法をご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

TensorFlow 用 AI Platform