データセットのサイズやモデルの複雑さによっては、トレーニングに時間がかかることがあります。実際のデータを使用したトレーニングは、何時間も続く場合があります。ジョブの実行中にいくつかの側面をモニタリングできます。
ジョブ ステータスの確認
ジョブ全体のステータスは、Google Cloud Console の AI Platform Training の [ジョブ] ページで簡単に確認できます。同じ詳細情報をプログラムまたは Google Cloud CLI で取得することもできます。
コンソール
Google Cloud コンソールで AI Platform Training の [ジョブ] ページを開きます。
リスト内のジョブ名をクリックして、[ジョブの詳細] ページを開きます。
レポートの上部のジョブのステータスを見つけます。ジョブの現在の状態がアイコンとテキストで表示されます。
ジョブのフィルタリング
[ジョブ] ページでは、タイプ、JobID、状態、ジョブ作成時間などのさまざまなパラメータでジョブをフィルタリングできます。
- Click within the ジョブのリストの上にある、[前方一致でフィルタ] フィールド内をクリックします。フィルタリングで使用する接頭辞を選択します。たとえば、タイプを選択します。
フィルタを完成するには、使用するフィルタ接尾辞をクリックします。たとえば、タイプ接頭辞の接尾辞には次のオプションがあります。
- カスタムコード トレーニング
- 組み込みアルゴリズム トレーニング
- 予測
フィルタはジョブリストに適用され、フィルタの名前はフィルタ フィールドに表示されます。たとえば、カスタムコード トレーニングを選択した場合、タイプ: カスタムコード トレーニング フィルタが最上部に表示され、このフィルタによってジョブのリストがフィルタリングされます。必要に応じて、複数のフィルタを追加できます。
ハイパーパラメータ トライアルの表示
[ジョブの詳細] ページで、HyperTune トライアル テーブルの各トライアルの指標を表示できます。このテーブルは、ハイパーパラメータ調整を使用するジョブの場合にのみ表示されます。指標を切り替えて、トライアルを rmse
、Training steps
、learning_rate
の降順または昇順で表示できます。
特定のトライアルのログを表示するには、
gcloud
コマンドラインで gcloud ai-platform jobs describe
を使用して、現在のジョブの状態の詳細を取得します。
gcloud ai-platform jobs describe job_name
プロジェクトに関連付けられたジョブと各ジョブのステータスおよび作成時間のリストを取得するには、gcloud ai-platform jobs list
を使用します。このコマンドの最も単純な形式では、プロジェクトで作成されたすべてのジョブが一覧表示されます。報告されるジョブの数を制限するには、リクエストにスコープを設定する必要があります。次の例を参考にしてください。
ジョブの数を制限するには、--limit
引数を使用します。この例では、5 つの最新ジョブが一覧表示されます。
gcloud ai-platform jobs list --limit=5
特定の属性値を持つジョブにジョブリストを絞り込むには、--filter
属性を使用します。ジョブ オブジェクトの 1 つ以上の属性を基準にフィルタリングできます。コアジョブの属性だけでなく、TrainingInput オブジェクトなど、ジョブ内のオブジェクトもフィルタリングできます。
リストのフィルタリングの例:
特定の時間の後に開始されたすべてのジョブを一覧表示します。この例では、2017 年 1 月 15 日の夜 7 時を使用しています。
gcloud ai-platform jobs list --filter='createTime>2017-01-15T19:00'
指定された文字列で始まる名前を持つ最新の 3 つのジョブを一覧表示します。たとえば、文字列は、特定のモデルのすべてのトレーニング ジョブに使用する名前を表します。この例では、'census' の後に、ジョブごとに増分されるインデックスのサフィックスを付けたジョブ識別子を持つモデルを使用しています。
gcloud ai-platform jobs list --filter='jobId:census*' --limit=3
名前が 'rnn' で始まる失敗したすべてのジョブを一覧表示します。
gcloud ai-platform jobs list --filter='jobId:rnn* AND state:FAILED'
filter オプションでサポートされる式の詳細については、gcloud
コマンドのドキュメントをご覧ください。
Python
プロジェクト名とジョブ名を
'projects/your_project_name/jobs/your_job_name'
の形式で結合してジョブ ID 文字列を作成します。projectName = 'your_project_name' projectId = 'projects/{}'.format(projectName) jobName = 'your_job_name' jobId = '{}/jobs/{}'.format(projectId, jobName)
projects.jobs.get へのリクエストを作成します。
request = ml.projects().jobs().get(name=jobId)
リクエストを実行します(この例では、
execute
呼び出しをtry
ブロックに入れて例外をキャッチします)。response = None try: response = request.execute() except errors.HttpError, err: # Something went wrong. Handle the exception in an appropriate # way for your application.
レスポンスをチェックして、HTTP エラーに関係なく、サービス呼び出しからデータが返されたことを確認します。
if response == None: # Treat this condition as an error as best suits your # application.
ステータス データを取得します。レスポンス オブジェクトは、Job リソースの該当するメンバーをすべて含む辞書です。これには完全な TrainingInput リソースと、TrainingOutput リソースの該当するメンバーが含まれます。次の例では、ジョブ ステータスとジョブで消費された ML ユニットの数を出力します。
print('Job status for {}.{}:'.format(projectName, jobName)) print(' state : {}'.format(response['state'])) print(' consumedMLUnits : {}'.format( response['trainingOutput']['consumedMLUnits']))
トレーニング アプリケーションや AI Platform Training インフラストラクチャに問題がある場合、ジョブが失敗する可能性があります。Cloud Logging を使用してデバッグを開始できます。
インタラクティブなシェルを使用して、トレーニング ジョブの実行中にトレーニング コンテナを検査することもできます。
リソース消費のモニタリング
[ジョブの詳細] ページには、トレーニング ジョブに関する次のリソース使用率のグラフがあります。
- ジョブの CPU または GPU 使用率と、メモリ使用率の集計。これらは、マスター、ワーカー、パラメータ サーバーごとに分類されています。
- ジョブのネットワーク使用量(バイト/秒)。送信バイト数、受信バイト数を示す別個のグラフがあります。
Google Cloud Console で AI Platform Training の [ジョブ] ページに移動します。
リストでジョブを見つけます。
リスト内のジョブ名をクリックして、[ジョブの詳細] ページを開きます。
CPU、GPU、またはネットワークのラベルが付いたタブを選択すると、対応するリソース使用率のグラフが表示されます。
トレーニング ジョブが Cloud Monitoring で使用するオンライン リソースに関する情報にもアクセスできます。AI Platform Training から Cloud Monitoring に指標がエクスポートされます。
AI Platform トレーニングの各指標タイプの名前には「training」が含まれます。例: ml.googleapis.com/training/cpu/utilization
、ml.googleapis.com/training/accelerator/memory/utilization
TensorBoard によるモニタリング
TensorBoard を使用して調査および可視化できる概要データを保存するように、トレーニング アプリケーションを構成できます。
概要データを Cloud Storage の場所に保存し、TensorBoard にその場所を指定して調べるように指示します。TensorBoard に、複数のジョブからの出力が含まれるサブディレクトリを持つディレクトリを指定することもできます。
TensorBoard と AI Platform Training の詳細については、スタートガイドをご覧ください。
次のステップ
- トレーニング ジョブの問題のトラブルシューティングを行う。
- トレーニング済みモデルをデプロイして、オンライン テストと予測に使用する。