モデルとジョブの管理

モデルをトレーニングしてデプロイし、予測を取得するというプロセスの間、Google Cloud Platform 上のリソースを管理することが必要です。このページでは、モデル、バージョン、ジョブを取り扱う方法を説明します。

AI Platform Prediction リソースに名前を付ける

作成するすべてのジョブに名前を指定する必要があります。命名規則はこの 3 種類のリソースすべてに共通で、次のとおりです。

  • 使用できるのは英数字とアンダースコアのみです。
  • 大文字と小文字が区別されます。
  • 先頭は英文字でなければなりません。
  • 長さは 128 文字以下でなければなりません。
  • その名前空間(モデルとジョブの場合はプロジェクト、バージョンの場合は親モデル)内で一意でなければなりません。

リソースのリスト(ジョブログなど)の中で区別しやすい名前を作成する必要があります。次の方法を参考にしてください。

  • 同じモデルのすべてのジョブに、そのモデルの名前とジョブ インデックスを使用した名前を付けます(ジョブ作成時のタイムスタンプが役立ちます)。
  • モデルで使用されるデータセットで簡単にモデルを特定できるように名前を付けます(たとえば、通常は my_new_model よりも census_wide_deep の方が特定しやすくなります)。
  • バージョンを簡単に読み取れることが最善です。タイムスタンプなどの一意の値を使用する代わりに、単純なバージョン指定子(v1 など)を使用することをおすすめします。

モデルの管理

AI Platform Prediction のモデルリソースは、機械学習モデルの個々の実装の論理コンテナです。これは、取り扱いが最も単純なリソースといえます。複雑なオペレーションはなく、割り当てや保守のための追加リソースも必要としないからです。

次の表に、モデルのオペレーションの要約と、その実行に使用できるインターフェースの一覧を示します。

オペレーション インターフェース メモ
create projects.models.create
gcloud ai-platform models create
AI Platform Prediction の [モデル] ページの [モデルの作成]。
delete projects.models.delete

モデルの削除は長時間実行オペレーションです。

モデルを削除できるのは、そのモデルにバージョンが関連付けられていない場合に限られます。

gcloud ai-platform models delete
[モデル] リストまたは [モデルの詳細] ページの [削除]。
get projects.models.get

取得できる情報については、Model リソースのリファレンスをご覧ください。

gcloud ai-platform models describe
[モデルの詳細] ページ([モデル] リストにあるリンクから移動)。
list projects.models.list
gcloud ai-platform models list
AI Platform Prediction の [モデル] ページ

バージョンの管理

バージョンは、モデルの反復を具体的に表すものです。モデル バージョンの中核は、TensorFlow SavedModel です。

次の表に、バージョンのオペレーションの要約と、その実行に使用できるインターフェースの一覧を示します。

オペレーション インターフェース メモ
create projects.models.versions.create

バージョンの作成とは、SavedModel を AI Platform Prediction にデプロイすることです。詳細については、モデルデプロイ ガイドをご覧ください。

gcloud ai-platform versions create
[モデルの詳細] ページ([モデル] リストにあるリンクから移動)の [バージョンを作成]。
delete projects.models.versions.delete

バージョンの削除は長時間実行オペレーションです。

モデルのデフォルト バージョンは、それがそのモデルに割り当てられた唯一のバージョンでない限り、削除することはできません。

gcloud ai-platform versions delete
[モデルの詳細] ページの [バージョン] リストの [削除]。
get projects.models.versions.get

取得できる情報については、Version リソースのリファレンスをご覧ください。

gcloud ai-platform versions describe
[バージョンの詳細] ページ([モデルの詳細] ページの [バージョン] リストにあるリンクから移動)。
list projects.models.versions.list
gcloud ai-platform versions list
[モデルの詳細] ページの [バージョン] リスト。
setDefault projects.models.versions.setDefault

これは、モデルに新しいデフォルト バージョンを割り当てる唯一の方法です。最初のバージョンを作成した後は、新しいバージョンを作成してもそれがデフォルトになることはありません。

gcloud ai-platform versions set-default
[モデルの詳細] ページの [バージョン] リストの [デフォルトに設定]。

ジョブの管理

AI Platform Prediction がサポートするジョブには、トレーニングとバッチ予測の 2 種類があります。それぞれの詳細は異なりますが、基本的なオペレーションは同じです。

次の表に、ジョブのオペレーションの要約と、その実行に使用できるインターフェースの一覧を示します。

オペレーション インターフェース メモ
create projects.jobs.create

ジョブの作成の詳細については、トレーニングおよびバッチ予測のガイドをご覧ください。

gcloud ai-platform jobs submit training

gcloud ai-platform jobs submit prediction

コンソールからは実行できません。
キャンセル projects.jobs.cancel

実行中のジョブをキャンセルします。

gcloud ai-platform jobs cancel

[ジョブの詳細] ページでキャンセルします。
get projects.jobs.get 取得できる情報については、Jobs リソースのリファレンスをご覧ください。

gcloud ai-platform jobs describe

[ジョブの詳細] ページ([ジョブ] リストにあるリンクから移動)。
リスト projects.jobs.list 過去 90 日間に作成されたジョブのみが表示されます。

gcloud ai-platform jobs list

[ジョブ] リスト

非同期オペレーションの処理

AI Platform Prediction のリソース管理オペレーションのほとんどは、可能な限り短時間で完了し、完全なレスポンスが返されます。ただし、2 種類の非同期オペレーションがあることを理解しておく必要があります。その 2 種類とは、ジョブと長時間実行オペレーションです。

非同期オペレーションを開始するときに、いつ完了するかを知りたいのは当然のことです。ステータスを取得するプロセスは、ジョブと長時間実行オペレーションで異なります。

ジョブのステータスを取得する

projects.jobs.get を使用すると、ジョブのステータスを取得できます。この方法は、gcloud ai-platform jobs describe として、Google Cloud コンソールの [ジョブ] ページでも使用できます。ステータスの取得方法に関係なく、ジョブリソースのメンバーに基づいて情報が返されます。ジョブが完了しているといえるのは、レスポンスの Job.state が次の値のいずれかに等しいときです。

  • SUCCEEDED
  • FAILED
  • CANCELLED

長時間実行オペレーションのステータスの取得

AI Platform Prediction の長時間実行オペレーションには、次の 3 つがあります。

  • バージョンの作成
  • モデルの削除
  • バージョンの削除

長時間実行オペレーションのうち、完了までにかなりの時間がかかるのはバージョンの作成だけです。モデルやバージョンの削除は、一般的にリアルタイムに近い速さで完了します。

Google Cloud CLI または Google Cloud コンソールでバージョンを作成すると、オペレーションの完了がインターフェースで自動的に通知されます。API を使用してバージョンを作成する場合は、次の方法でオペレーションのステータスを自分で調べます。

  1. サービスによって割り当てられたオペレーション名を取得します。これは、projects.models.versions.create の呼び出しに対するレスポンスの中の Operation オブジェクトから取得します。名前値のキーは "name" です。

  2. projects.operations.get を使用して、オペレーションのステータスを定期的に問い合わせます。

    1. 最初のステップで取得したオペレーション名を使用して、次の形式の名前文字列を作成します。

      'projects/my_project/operations/operation_name'
      

      レスポンス メッセージの中に Operation オブジェクトがあります。

    2. "done" キーに対応する値を取得します。これは、オペレーション完了を示すブール値です。true の場合はオペレーションが完了しています。

  3. 完了すると、Operation オブジェクトの中に次の 2 つのキーのいずれかが存在するようになります。

    • "response" キーが存在する場合、オペレーションは成功しています。値は google.protobuf.Empty です。これは AI Platform Prediction の長時間実行オペレーションがレスポンス オブジェクトを持たないためです。

    • "error" キーが存在する場合は、エラーが発生しています。値は Status オブジェクトです。

次のステップ