今回は機械学習の実験管理用ツールのmlflowのTracking APIの基本操作を紹介します。
mlflow とは
mlflow は機械学習の実験等を管理するためのツールの一つです。
実験結果やパラメータなど簡単に管理できてとても便利です。
様々な API がありますが、今回は実験結果の管理が行える Tracking API を使ってみます。
mlflow を触ってみる
mlflow の導入
まずは mlflow をインストールします。
pip install mlflow
mlflow の準備
python コードで import します。
import mlflow
mlflowの結果を保存するディレクトリを指定します。
(どこでも良いなら指定しなくても大丈夫です。現在のディレクトリにmlrunsというディレクトリが自動で作られます)
# ※自分で保存したいディレクトリを指定したい場合。今回はtest_mlflow_dirに保存していく
mlflow.set_tracking_uri("test_mlflow_dir")
実験の名前などを指定してmlflow.start_run
で実験をスタートします。
exp_name = "test"
mlflow.set_experiment(exp_name)
tracking = mlflow.tracking.MlflowClient()
experiment = tracking.get_experiment_by_name(exp_name)
with mlflow.start_run(experiment_id=experiment.experiment_id):
# 以下に処理を記述していく
あとは with ブロック内に実験のコードを書いていきます。
もしくは、以下でも大丈夫です。
mlflow.start_run(experiment_id=experiment.experiment_id)
<処理>
mlflow.end_run()
パラメータの保存
パラメータを一つ保存したい場合には mlflow.log_param
をつかいます。
mlflow.log_param("param1", param1)
まとめて保存したいときは mlflow.log_params
を使います。
mlflow.log_params({"param1":param1, "param2":param2}
argparse をまとめて保存したい時には以下のようにすることで保存できます。
parser = argparse.ArgumentParser("Test")
parser.add_argument("--test", type=str, default="test_param")
args = parser.parse_args()
mlflow.log_params(vars(args))
メトリックの保存
実験のメトリックを一つ保存したい時には mlflow.log_metric
を使います。
mlflow.log_metric("metric1", metric1)
実験のメトリックを複数保存したい時には mlflow.log_metrics
を使います。
mlflow.log_metrics({"metric1": metric1, "metric2": metric2})
図などのスカラー以外を保存する時
png などを保存する場合には保存した Path を与えて mlflow.log_artifact
を使って保存します。
mlflow.log_artifact("test.png")
mlflow.log_artifact("test.csv")
UI で実験結果を見る
シェルから以下のコマンドを実行します。
今回は local の test_mlflow_dir に保存しているので、以下のように引数を与えてあげます。
mlflow ui --backend-store-uri file:test_mlflow_dir
出力されたurlにアクセスすると以下のようなUIが出てきます。
このUIからmetricの推移やパラメータなどを確認できます。実験の比較もかんたんにできます。
実験結果を python で取得してみる
※ここはまだ調査中
実験結果は mlflow.search_runs を使って取得できます。
experiment_ids に実験の id を指定します。(ID は UI 上でも確認できます)
mlflow.set_tracking_uri()
result = mlflow.search_runs(experiment_ids="0")
おわりに
実際にはもっとたくさんできることがあります。
詳細は公式の document 等を参照してください。
コメント