ノートブックでモデルをトレーニングおよび追跡する
データ サイエンティストは、ノートブックを使用してモデルの実験とトレーニングを行います。 モデルのトレーニング結果をグループ化するには、 実験を使用します。 ノートブックでモデルをトレーニングするときに MLflow を使用してモデル メトリックを追跡するには、MLflow のログ機能を使用できます。
MLflow 実験を作成する
MLflow 実験を作成して、実行をグループ化できます。 実験を作成しない場合、MLflow は名前が Default の既定の実験を想定します。
実験を作成するには、ノートブックで次のコマンドを実行します。
import mlflow
mlflow.set_experiment(experiment_name="heart-condition-classifier")
MLflow を使用して結果をログに記録する
これで、モデルをトレーニングする準備ができました。 MLflow によって追跡される実行を開始するには、 start_run()を使用します。 次に、モデルを追跡するために、次のことができます。
- 自動ログ記録を有効にします。
- カスタム ログを使用します。
自動ログ記録を有効にする
MLflow では、一般的な機械学習ライブラリの自動ログ記録がサポートされています。 自動ログ記録を有効にすると、MLflow はメトリック、パラメーター、成果物、モデルを自動的にログに記録するようにフレームワークに指示します。 フレームワークが関連するものを決定するときに、ログに記録する内容を指定する必要はありません。
自動ログ記録を有効にするには、トレーニング コードの前に mlflow.autolog() を呼び出します。 さらに細かく制御するために、フレームワーク固有のメソッド ( mlflow.xgboost.autolog() など) を使用することもできます。
自動ログを使用して分類モデルをトレーニングおよび追跡するノートブック セルは、次のコード例のようになります。
from xgboost import XGBClassifier
with mlflow.start_run():
mlflow.autolog()
model = XGBClassifier(eval_metric="logloss")
model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)
mlflow.xgboost.autolog()呼び出されるとすぐに、MLflow は Azure Machine Learning の実験内で実行を開始し、実験の実行の追跡を開始します。
ジョブが完了したら、スタジオでログに記録されたすべてのメトリックを確認できます。
カスタム ログを使用する
さらに、MLflow を使用してモデルを手動でログに記録することもできます。 モデルの手動ログ記録は、自動ログ記録によってログに記録されない補足情報またはカスタム情報をログに記録する場合に役立ちます。
注
カスタム ログのみを使用することも、自動ログと組み合わせてカスタム ログを使用することもできます。
カスタム ログで使用される一般的な関数は次のとおりです。
-
mlflow.log_param(): 1 つのキー値パラメーターをログに記録します。 この関数は、ログに記録する入力パラメーターに使用します。 -
mlflow.log_metric(): 1 つのキー値メトリックをログに記録します。 値は数値である必要があります。 実行時に保存する出力に対して、この関数を使用します。 -
mlflow.log_figure(): matplotlib の図を成果物として直接ログに記録します。 -
mlflow.log_image(): numpy または PIL イメージを成果物としてログに記録します。 -
mlflow.log_artifact(): 既存のファイルを成果物としてログに記録します。 -
mlflow.log_model(): モデルをログに記録します。 この関数を使用して、カスタム署名、環境、および入力の例を含めることができる MLflow モデルを作成します。
ヒント
MLflow を使用してモデルを追跡する方法の詳細については、公式の MLflow ドキュメントまたは Azure Machine Learning のドキュメントを参照してください。
ノートブックでカスタム ログを使用するには、実行を開始し、必要なメトリックをログに記録します。
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
with mlflow.start_run():
model = XGBClassifier(eval_metric="logloss")
model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
mlflow.log_metric("accuracy", accuracy)
カスタム ログを使用すると、柔軟性が向上しますが、ログに記録するパラメーター、メトリック、またはアーティファクトを定義する必要がある場合は、より多くの作業が作成されます。
ジョブが完了したら、スタジオでログに記録されたすべてのメトリックを確認できます。