トレーニング ジョブのモニタリング

データセットのサイズやモデルの複雑さによっては、トレーニングに時間がかかることがあります。実世界のデータを使用したトレーニングは、何時間も続く可能性があります。ジョブの実行中にいくつかの側面をモニタリングできます。

ジョブ ステータスの確認

全体的な状況を確認する場合、Google Cloud Platform Console で AI Platform のジョブページを使うのが最も簡単な方法です。同様の詳細情報は、プログラムや gcloud コマンドライン ツールでも取得できます。

Console

  1. GCP Console で AI Platform の [ジョブ] ページを開きます。

    GCP Console で [ジョブ] を開く

  2. リスト内のジョブ名をクリックして、[ジョブの詳細] ページを開きます。

  3. レポートの上部のジョブのステータスを見つけます。ジョブの現在の状態がアイコンとテキストで表示されます。

    [ジョブの詳細] ページの上部にあるジョブのステータス情報。

gcloud

コマンドラインで gcloud ml-engine jobs describe を使用して、ジョブの現在の状態の詳細を取得します。

gcloud ml-engine jobs describe job_name

gcloud ml-engine jobs list を使用すると、プロジェクトに関連付けられたジョブのリストを取得できます。このリストにはジョブのステータスや作成時間が記載されます。最も単純な形式のこのコマンドでは、プロジェクトで作成されたすべてのジョブが一覧表示されます。報告されるジョブの数を制限するように、リクエストを絞り込む必要があります。次の例から始められます。

--limit 引数を使用して、ジョブの数を制限します。この例では、5 つの最新ジョブが一覧表示されます。

gcloud ml-engine jobs list --limit=5

--filter 引数を使用して、指定された属性値を持つジョブのリストに限定します。ジョブ オブジェクトの 1 つ以上の属性をフィルタリングできます。コアジョブの属性だけでなく、TrainingInput オブジェクトなど、ジョブ内のオブジェクトもフィルタリングできます。

リストのフィルタリングの例:

  • 特定の時間の後に開始されたすべてのジョブを一覧表示します。この例では、2017 年 1 月 15 日の夜 7 時を使用しています。

    gcloud ml-engine jobs list --filter='createTime>2017-01-15T19:00'
    
  • 指定された文字列で始まる名前を持つ最新の 3 つのジョブを一覧表示します。たとえば、文字列は、特定のモデルのすべてのトレーニング ジョブに使用する名前を表します。この例では、'census' の後に、ジョブごとに増分されるインデックスのサフィックスを付けたジョブ識別子を持つモデルを使用しています。

    gcloud ml-engine jobs list --filter='jobId:census*' --limit=3
    
  • 名前が 'rnn' で始まる失敗したすべてのジョブを一覧表示します。

    gcloud ml-engine jobs list --filter='jobId:rnn* AND state:FAILED'
    

filter オプションでサポートされる式の詳細については、gcloud コマンドのドキュメントをご覧ください。

Python

  1. プロジェクト名とジョブ名を 'projects/your_project_name/jobs/your_job_name' の形式で組み合わせて、ジョブ識別子の文字列を作成します。

    projectName = 'your_project_name'
    projectId = 'projects/{}'.format(projectName)
    jobName = 'your_job_name'
    jobId = '{}/jobs/{}'.format(projectId, jobName)
    
  2. projects.jobs.get へのリクエストを作成します。

    request = ml.projects().jobs().get(name=jobId)
    
  3. リクエストを実行します(この例では、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.
    
  4. レスポンスをチェックして、HTTP エラーに関係なく、サービス呼び出しからデータが返されたことを確認します。

    if response == None:
        # Treat this condition as an error as best suits your
        # application.
    
  5. ステータス データを取得します。レスポンス オブジェクトは、Job リソースの該当するメンバーを含む辞書です。これには完全な TrainingInput リソースと、TrainingOutput リソースの該当するメンバーが含まれます。次の例では、ジョブ ステータスとジョブで消費された ML ユニットの数を出力します。

    print('Job status for {}.{}:'.format(projectName, jobName))
    print('    state : {}'.format(response['state']))
    print('    consumedMLUnits : {}'.format(
        response['trainingOutput']['consumedMLUnits']))
    

トレーニング アプリケーションや AI Platform インフラストラクチャに問題がある場合、ジョブが失敗する可能性があります。Stackdriver Logging を使用してデバッグを開始できます。

リソース消費のモニタリング

[ジョブの詳細] ページには、ジョブの CPU およびメモリ使用率の集計のグラフが表示されます。

  1. GCP Console で AI Platform の [ジョブ] ページに移動します。

    AI Platform のジョブページに移動

  2. リストでジョブを見つけます。

  3. リスト内のジョブ名をクリックして、[ジョブの詳細] ページを開きます。

  4. 下にスクロールして、リソース使用率グラフを表示します。

    AI Platform の [ジョブの詳細] ページに表示された CPU とメモリの使用率グラフ

トレーニング ジョブで Stackdriver Monitoring に使用するオンライン リソースに関する詳細情報を入手できます。AI Platform は、Stackdriver に 2 つの指標をエクスポートします。

  • ml/training/memory/utilization は、現在使用されている割り当て済みメモリの割合を示します。

  • ml/training/cpu/utilization は、現在使用されている割り当て済み CPU の割合を示します。

これらの指標を使用して、ジョブ内の各タスク(ワーカー、パラメータ サーバー、マスター)の CPU およびメモリ使用率を確認できます。

次のステップ

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

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

scikit-learn と XGBoost の AI Platform