はじめに
今回はAzure MLで作成したデザイナーを実行し、ジョブが完了したかどうかをPythonから確認してみました。
開発環境
- OS Windows 10(NVIDIA GTX 1650Ti,16GB RAM, i5-10300H CPU)
- Visual Studio Code 1.73.1
- Python 3.9
Azure ML上でジョブのStatusの確認
まずはこちらの二項分類のパイプラインを実行してみます!
学習データを後からでも追加できるように、Import Dataコンポーネントを入力データとしました。
そして、Export DataをScore ModelとEvaluate Modelの下にそれぞれ追加しました。
これは訓練したModelから得られた予測結果とその評価を取り出すためです。
入力データ、出力データともにパイプラインパラメータでパスの設定を行ったら実行をしてみます。
(パイプラインパラメータの設定方法などは前回の記事をご覧ください。)
実行が終わり、ジョブで確認していくと状態が「完了」になります。
PythonでStatusを確認
それでは今行ったStatusのチェックを今度はPythonから行ってみましょう!
まずは
az login
でAzure CLIにログインしたらこちらのコードを実行してみます。
from azureml.core import Workspace
from azureml.core.experiment import Experiment
from azureml.core.run import Run
ws = Workspace.from_config()
print(Experiment.list(workspace=ws))
experiment = Experiment(workspace=ws, name='<実験の名前>')
run = Run(experiment, "<ジョブID>")
print(run.get_details())
experiment
のname
のところは
ジョブを実行するときに入力する、実験の名前を入れます。
そしてジョブIDについては「ジョブの概要」を開いたときに表示される
こちらの「ジョブ名(実行ID)」を入れます。
これで実行したら、
print(Experiment.list(workspace=ws))
Experimentクラスのlist関数で、現在のワークスペースにある実験のリストが表示され、
Experimentクラスの詳細はこちらを参照ください。
print(run.get_details())
Runクラスのget_details関数でJSON形式の結果が返ってきます。
Runクラスの詳細はこちらを参照ください。
{
'runId': '<実験ID>',
'status': 'Completed',
'startTimeUtc': '2022-11-29T08:40:26.563972Z',
'endTimeUtc': '2022-11-29T08:47:52.595374Z',
'services': {},
'properties': {
'azureml.runsource': 'azureml.PipelineRun',
'runSource': 'Designer',
'runType': 'HTTP',
'azureml.parameters': '{
"Export_data_path":"/t-kawano-export-20221129",
"Import_data_path":"UI/2022-11-29_082600_UTC/train.csv",
"Score_data_path":"/t-kawano-score-20221129"
}',
'azureml.continue_on_step_failure': 'True',
'azureml.continue_on_failed_optional_input': 'True',
'azureml.pipelineComponent': 'pipelinerun',
'stages': '{"Initialization":null,
"Execution":{
"StartTime":"2022-11-29T08:40:26.99405+00:00",
"EndTime":"2022-11-29T08:47:52.5223544+00:00",
"Status":"Finished"
}
}'
},
'inputDatasets': [],
'outputDatasets': [],
'logFiles': {
'logs/azureml/executionlogs.txt': 'https://',
'logs/azureml/stderrlogs.txt': 'https://',
'logs/azureml/stdoutlogs.txt': 'https://'
},
'submittedBy': 'アカウント名'
}
runID
で取得した実験のIDが表示されています。
そしてstatus
のところでジョブが完了しているかどうかを確認できます。
今回は「Completed」となっているので、無事にジョブを実行できたようです。
また、properties
のところでは設定したパイプラインパラメータなどが見られます。
まとめ
- PythonからジョブのStatusをチェックしてみた
- Runクラスの
get_details()
のstatus
から完了したかどうかを確認できる