次の方法で共有


ジョブのデバッグとトレーニングの進行状況の監視

機械学習モデルのトレーニングは、反復的なプロセスであり、多くの実験が必要です。 Azure Machine Learning の対話型ジョブ エクスペリエンスを使用すると、データ サイエンティストは Azure Machine Learning Python SDK、Azure Machine Learning CLI、または Azure Studio を使用して、ジョブが実行されているコンテナーにアクセスできます。 ジョブ コンテナーにアクセスしたら、ユーザーは、ローカル コンピューターで通常実行するのと同様に、トレーニング スクリプトを反復処理したり、トレーニングの進行状況を監視したり、リモートでジョブをデバッグしたりすることができます。 ジョブとは、JupyterLab、TensorBoard、VS Code などのさまざまなトレーニング アプリケーションを介して、または SSH 経由でジョブ コンテナーに直接接続することで対話できます。

対話型トレーニングは、Azure Machine Learning コンピューティング クラスターAzure Arc 対応 Kubernetes クラスターでサポートされています。

前提条件

  • Azure Machine Learning でのトレーニングの開始に関するページを確認します。
  • 詳細については、Azure Machine Learning 拡張機能を設定するための VS Code のこのリンクを参照してください。
  • ジョブ環境に openssh-server および ipykernel ~=6.0 パッケージがインストールされていることを確認します (すべての Azure Machine Learning のキュレーション済みトレーニング環境には、これらのパッケージが既定でインストールされています)。
  • 分散の種類が PyTorch、TensorFlow、MPI 以外である分散トレーニングの実行では、対話型アプリケーションを有効にすることはできません。 カスタム分散トレーニングのセットアップ (上記の分散フレームワークを使用しないマルチノード トレーニングの構成) は現在サポートされていません。
  • SSH を使用するには、SSH キーの組が必要です。 ssh-keygen -f "<filepath>" コマンドを使用して、公開キーと秘密キーの組を生成できます。

ジョブ コンテナーと対話する

ジョブの作成時に対話型アプリケーションを指定すると、ジョブが実行されているコンピューティング ノード上のコンテナーに直接接続できます。 ジョブ コンテナーにアクセスしたら、実行するのとまったく同じ環境でジョブをテストまたはデバッグできます。 ローカルの場合と同様、VS Code を使用して、実行中のプロセスにアタッチし、デバッグすることもできます。

ジョブの送信中に有効にする

  1. スタジオ ポータルの左側のナビゲーション ウィンドウから新しいジョブを作成します。

  2. コンピューティングの種類としてコンピューティング クラスターまたはアタッチ型コンピューティング (Kubernetes) を選択し、コンピューティング ターゲットを選択し、Instance count で必要なノード数を指定します。

ジョブのコンピューティング場所の選択のスクリーンショット。

  1. ウィザードに従って、ジョブを開始する環境を選択します。

  2. トレーニング スクリプト手順で、トレーニング コード (および入出力データ) を追加し、それをコマンド内で参照して、それがジョブにマウントされていることを確認します。

下書きのジョブを確認し、作成を完了しているスクリーンショット。

コマンドの最後に sleep <specific time> を配置して、コンピューティング リソースを予約する時間を指定できます。 形式は次のとおりです。

  • sleep 1s
  • sleep 1m
  • sleep 1h
  • sleep 1d

また、ジョブを無期限に維持する sleep infinity コマンドを使用することもできます。

注意

sleep infinity を使用する場合、コンピューティング リソースを解放 (および課金を停止) するには、手動でジョブをキャンセルする必要があります。

  1. [コンピューティング] 設定で、[アプリケーションのトレーニング] のオプションを展開します。 ジョブとの対話に使用するトレーニング アプリケーションを少なくても 1 つ選択します。 アプリケーションを選択しないと、デバッグ機能は使用できません。

ユーザーがジョブに使用するトレーニング アプリケーションの選択のスクリーンショット。

  1. ジョブを確認して作成します。

エンドポイントに接続する

実行中のジョブと対話するには、ジョブの詳細ページで [デバッグと監視] ボタンを選択します。

対話型ジョブのデバッグと監視パネルの場所のスクリーンショット。

パネルでアプリケーションをクリックすると、アプリケーションの新しいタブが開きます。 アプリケーションにアクセスできるのは、アプリケーションが実行中の状態で、ジョブ所有者のみがアプリケーションへのアクセスを認可されている場合のみです。 複数のノードでトレーニングしている場合は、対話する特定のノードを選択できます。

対話型ジョブの右側のパネル情報のスクリーンショット。情報の内容はユーザーのデータによって異なります。

ジョブおよびジョブの作成時に指定したトレーニング アプリケーションを開始するのに数分かかる場合があります。

アプリケーションと対話する

ジョブと対話するためのエンドポイントを選択すると、作業ディレクトリの下のユーザー コンテナーに移動します。ここでは、コード、入力、出力、ログにアクセスできます。 アプリケーションへの接続中に問題が発生した場合、対話型の機能とアプリケーションのログは、[出力とログ] タブの system_logs->interactive_capability にあります。

対話型ジョブの対話型ログ パネルの場所のスクリーンショット。

  • Jupyter Lab からターミナルを開き、ジョブ コンテナー内での対話を開始できます。 Jupyter Lab を使用してトレーニング スクリプトを直接反復処理することもできます。

    対話型ジョブの Jupyter lab コンテンツ パネルのスクリーンショット。

  • VS Code 内でジョブ コンテナーと対話することもできます。 ジョブの送信中にデバッガーをジョブにアタッチし、実行を一時停止するには、こちらに移動します

    Note

    VS Code を使用してジョブ コンテナーを操作する場合、プライベート リンクが有効なワークスペースは現在サポートされません。

    最初に開いたときの対話型ジョブの VS Code パネルのスクリーンショット。これは、2 つの行を出力するために作成されたサンプル python ファイルを示しています。

  • ジョブの tensorflow イベントをログに記録した場合は、TensorBoard を使用して、ジョブの実行中にメトリックを監視できます。

    最初に開いたときの対話型ジョブの TensorBoard パネルのスクリーンショット。この情報は、お客様のデータによって異なります

ジョブを終了する

対話型トレーニングが完了したら、ジョブの詳細ページにアクセスしてジョブをキャンセルすることもできます。これによってコンピューティング リソースが解放されます。 または、CLI で az ml job cancel -n <your job name>、SDK で ml_client.job.cancel("<job name>") を使用します。

対話型ジョブのジョブのキャンセルオプションとユーザーが選択する場所のスクリーンショット

デバッガーをジョブにアタッチする

デバッガーがアタッチされ、実行が一時停止された状態のジョブを送信するには、debugpy と VS Code を使用できます (debugpy がジョブ環境にインストールされている必要があります)。

Note

VS Code でジョブにデバッガーをアタッチする場合、プライベート リンクが有効なワークスペースは現在サポートされません。

  1. (UI、CLI、SDK のいずれかを介した) ジョブの送信中に、debugpy コマンドを使用して Python スクリプトを実行します。 たとえば、次のスクリーンショットは、debugpy を使用して tensorflow スクリプトのデバッガーをアタッチするサンプル コマンドを示しています (tfevents.py はトレーニング スクリプトの名前に置き換えることができます)。

対話型ジョブの debugpy の構成のスクリーンショット

  1. ジョブの送信が完了したら、VS Code に接続し、組み込みのデバッガーを選択します。

    対話型ジョブの左側のパネルでデバッガーを開く場所を示すスクリーンショット

  2. "リモートアタッチ" デバッグ構成を使用して、送信されたジョブにアタッチし、ジョブ送信コマンドで構成したパスとポートを渡します。 この情報は、ジョブの詳細ページでも確認できます。

    対話型ジョブの完了ジョブのスクリーンショット

    対話型ジョブの [リモートアタッチの追加] ボタンのスクリーンショット

  3. ブレークポイントを設定し、ローカル デバッグ ワークフローの場合と同様にジョブの実行をウォーク スルーします。

    Visual Studio Code エディターで設定されているサンプル ブレークポイントの場所のスクリーンショット

注意

debugpy を使用してジョブを開始する場合、VS Code でデバッガーをアタッチしてスクリプトを実行しない限り、ジョブは実行されません。 これを行わない場合、ジョブがキャンセルされるまで、コンピューティングは予約されます。

次のステップ