パイプライン UI を使用して Azure Machine Learning パイプラインのエラーをデバッグする方法

パイプラインを送信すると、Azure Machine Learning ワークスペースにパイプライン ジョブへのリンクが表示されます。 このリンクから Azure Machine Learning スタジオのパイプライン ジョブ ページに移動して、結果の確認とパイプライン ジョブのデバッグを行うことができます。

この記事では、パイプライン ジョブ ページを使用して、機械学習パイプラインのエラーをデバッグする方法について説明します。

重要

この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 プレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

アウトラインを使ってノードをすばやく見つける

パイプライン ジョブの詳細ページのキャンバスの左側にはアウトラインがあり、パイプライン ジョブの全体構造が示されています。 いずれかの行をポイントして [検索] ボタンを選ぶと、キャンバス内でそのノードを見つけることができます。

アウトラインとキャンバス内の検索を示すスクリーンショット。.

失敗したノードまたは完了したノードをフィルター処理し、コンポーネントまたはデータセットのみでフィルター処理してさらに検索できます。 左側のペインには、一致したノードと、状態、期間、作成日時などの詳細情報が表示されます。

アウトラインと検索でのクイック フィルターを示すスクリーンショット。

フィルター処理したノードを並べ替えることもできます。

アウトラインと検索での検索結果の並べ替えのスクリーンショット。

コンポーネントのログと出力を調べる

パイプラインが失敗したり、ノードでスタックする場合は、最初にログを見ます。

  1. 特定のノードを選んで、右側のペインを開きます。

  2. [出力とログ] タブを選ぶと、このノードのすべての出力とログを調べることができます。

    user_logs フォルダーには、ユーザー コードで生成されたログに関する情報が含まれています。 このフォルダーは既定で開いており、std_log.txt ログが選択されています。 std_log.txt には、コードのログ (print ステートメントなど) が表示されます。

    system_logs フォルダーには、Azure Machine Learning によって生成されたログが含まれています。 詳細については、「診断ログの表示とダウンロード」を参照してください。

    ノード ログの確認方法を示すスクリーンショット。

    それらのフォルダーが表示されない場合は、コンピューティング ランタイムの更新がまだコンピューティング クラスターにリリースされていないためであり、最初に azureml-logs フォルダーの下の 70_driver_log.txt を確認できます。

さまざまなパイプラインを比較して、エラーや他の予期しない問題をデバッグする (プレビュー)

パイプラインを比較すると、複数のジョブの間の相違 (トポロジ、コンポーネント プロパティ、ジョブ プロパティなど) が明らかになります。 たとえば、成功したパイプラインと失敗したパイプラインを比較でき、これはパイプラインを失敗させる変更を見つけるのに役立ちます。

パイプラインの比較がデバッグに役立つ 2 つの主要なシナリオ:

  • 失敗したパイプライン ジョブを、完了したパイプライン ジョブと比較してデバッグします。
  • パイプライン内の失敗したノードを、完了した類似ノードと比較してデバッグします。

この機能を有効にするには:

  1. Azure Machine Learning スタジオ UI に移動します。
  2. 画面の右上にあるアイコンの中から [プレビュー機能の管理] (メガホン アイコン) を選択します。
  3. [プレビュー機能の管理] パネルで、[パイプライン ジョブを比較して、エラーや予期しない問題をデバッグする] 機能をオンに切り替えます。

プレビュー機能の管理をオンに切り替えたスクリーンショット。

失敗したパイプライン ジョブを、完了したパイプライン ジョブと比較してデバッグする方法

反復モデルの開発中に、ベースライン パイプラインを作成してから、パラメーター、データセット、コンピューティング リソースの変更など、何らかの変更を行うことがあります。新しいパイプラインが失敗した場合、パイプラインの比較を使って、ベースライン パイプラインと比較することで何が変更されたかを特定でき、これは失敗した理由を明らかにするのに役立ちます。

パイプラインとその親を比較する

デバッグ時に最初に調べる必要があるのは、失敗したノードを見つけてログを確認することです。

たとえば、メモリ不足のためにパイプラインが失敗したことを示すエラー メッセージが表示されることがあります。 完成した親パイプラインからパイプラインを複製した場合は、パイプラインの比較を使って、何が変更されたかを確認できます。

  1. [系列の表示] を選びます。

  2. [複製元] の下のリンクを選びます。 これにより、親パイプラインを含む新しいブラウザー タブが開きます。

    [複製元] リンクと前のステップが示され、系列ボタンが強調されているスクリーンショット。

  3. 失敗したパイプラインと親パイプラインで [比較のために追加] を選びます。 これにより、それらが比較候補リストに追加されます。

    親と子のパイプラインが追加された比較リストを示すスクリーンショット。

トポロジを比較する

比較リストに 2 つのパイプラインを追加した後は、[詳細の比較][グラフの比較] の 2 つのオプションがあります。 [グラフの比較] を使うと、パイプラインのトポロジを比較できます。

[グラフの比較] では、パイプライン A と B の間のグラフ トポロジの変化が示されます。パイプライン A の特別なノードは赤で強調表示され、"A のみ" とマークされます。 パイプライン B の特別なノードは緑で示され、"B のみ" とマークされます。 共通のノードは灰色で表示されます。 共通のノードに違いがある場合は、変更された内容がノードの上部に表示されます。

変更には 3 つのカテゴリ (パラメーターの変更、入力ソース、パイプライン コンポーネント) があり、詳細ページで概要を見ることができます。 パイプライン コンポーネントが変更されると、内部のトポロジの変更または内部ノードのパラメーターの変更があることを意味し、パイプラインのコンポーネント ノードのフォルダー アイコンを選んで詳細を確認できます。 他の変更は、比較グラフの色付きノードを表示することで検出できます。

変更されたパラメーターとコンポーネント情報タブを示すスクリーンショット。

パイプラインのメタ情報とプロパティを比較する

データセットの違いを調査し、データまたはトポロジがエラーの根本原因ではないことがわかった場合は、パイプライン パラメーター、出力、実行設定などのパイプラインの詳細を調べることもできます。

[グラフの比較] はパイプラインのトポロジを比較するために使われ、[詳細の比較] はパイプライン プロパティのリンク メタ情報または設定を比較するために使われます。

詳細比較にアクセスするには、比較リストに移動し [詳細の比較] を選ぶか、パイプライン比較ページで [比較の詳細を表示する] を選びます。

[パイプラインのプロパティ][実行のプロパティ] が表示されます。

  • パイプラインのプロパティには、パイプライン パラメーター、実行と出力の設定などが含まれます。
  • 実行のプロパティには、ジョブの状態、送信時刻、継続時間などが含まれます。

次のスクリーンショットは詳細比較の使用例を示したもので、既定のコンピューティング設定がエラーの原因である可能性があります。

既定のコンピューティングの比較の概要を示すスクリーンショット。

トポロジの比較をすばやく調べるには、パイプライン名を選んで、[グラフの比較] を選びます。

[グラフの比較] が強調されている詳細比較のスクリーンショット。

完了した類似ノードと比較することでパイプライン内の失敗したノードをデバッグする方法

ノードのプロパティのみを更新し、パイプラインでは何も変更していない場合、同じコンポーネントから送信されたジョブと比較することでノードをデバッグできます。

比較対象のジョブを見つける

  1. 同じコンポーネントから送信されたすべての実行を表示して、比較対象の成功したジョブを見つけます。
    1. 失敗したノードを右クリックして、[ジョブの表示] を選びます。 これにより、すべてのジョブの一覧が表示されます。

      [ジョブの表示] が強調されている、失敗したノードを示すスクリーンショット。

    2. 完了したジョブを比較対象として選びます。

  2. 比較する失敗したジョブと完了したジョブが見つかったら、2 つのジョブを比較候補リストに追加します。
    1. 失敗したノードの場合は、右クリックして [比較のために追加] を選びます。
    2. 完了したジョブの場合は、その親パイプラインに移動し、完了したジョブを見つけます。 次に、[比較のために追加] を選びます。
  3. 2 つのジョブを比較リストに追加したら、[詳細の比較] を選んで相違を表示します。

比較結果を共有する

比較結果を共有するには、[共有] を選んでリンクをコピーします。 たとえば、データセットの違いが失敗の原因である可能性があることがわかっても、データセットの専門家ではない場合は、比較結果をチームのデータ エンジニアと共有できます。

共有ボタンとコピーする必要があるリンクを示すスクリーンショット。

次のステップ

この記事では、パイプラインのエラーをデバッグする方法について説明しました。 パイプラインの使用方法について詳しくは、次の記事をご覧ください。