概要MLFlowの機能をざっと試す第二弾。前回はtrackingを扱ったので今回はprojects。projectsはdockerやcondaでプロジェクトの管理ができる。本稿ではdockerは扱わずcondaを利用する。今回の例で利用するexperimentを用意しておく。MNISTの手書き数字分類を行うので、experiment名をmnist_digitとしてCLIから生成してみる。mnist_digittensorflowのプロジェクトを作るtensorflow(CPU版)のプロジェクトをmlflowで作ってみる。必要な依存関係をyamlで記述する。click続いてmlflowのプロジェクトファイルを生成する。ファイル名はMLprojectとすること。下記の記述ではプロジェクト名、先ほど書いたcondaの設定のパス、それから実行するコマンドとパラメータを記述している。{batch_size}"最後にtensorflowで何かしらtrainするコードを用意する。kerasでMNISTの数字認識を学習させて、引数やaccuracyの情報をmlflowに記録している。runをすればよしなにやってくれる。main()コマンドライン引数としてepochsとbatch-sizeの2つを取るようにしている。階層としてはこんな風にファイルが格納されているものとする。train.py作成したプロジェクトを実行するコマンド。--experiment-nameでexperimentを指定。ような形で指定できる。最後のtf_exampleは作成したプロジェクトが入っているディレクトリのパス。uiを起動してtrackingされた結果を表示。しなくても勝手に引数で設定したexperiment_idやtracking_uriが設定されて処理が実行される。これらの値は環境変数に設定されているのでスクリプトからも参照可能。mlflow.tracking._TRACKING_URI_ENV_VARMLprojectから呼ばれるコマンドに下記のようなprint文を追加。上で利用したサンプルでは、entry_pointの名前がmainになっている。デフォルトはmain。指定することもできる。下記は前処理と学習処理を分けた例。前処理は1度だけ実行し、その後の学習処理は引数を変えながら回すような場合はentry-pointを分けておくと楽そう。{epochs}"前処理を実行後、mainの処理を引数を変えながら実行する例。run上述のコマンドではローカルファイルにtracking関連のデータが生成される。serverでサーバを立ち上げてそれに対してtrackingしてみる。serverを立ち上げる。artifacttracking_uriを指定してexperimentを生成。tf_examplegitにあるコードに対して実行するgitにプロジェクトを置いておいて直接実行することもできる。複数のブランチを作ってどのブランチが勝つかといった比較もできる。例として下記のgithubプロジェクトにdev1とdev2、2つのブランチが切ってありそれぞれ手書き文字認識のコードを実行していみる。mnist_digit/dev1/dev2、それぞれを実行してみる。下記のようにコマンドを記述する。epochs=50実行後にuiを見ると4つのrunが登録されている。versionはブランチ名ではなくコミットIDで表示される。347ca5はCNNで実装した方でepochs=50を指定した場合がaccuracy=0.994ともっとも良い結果になっている。versionのリンクからgithubの当該バージョンに飛べる。githubのprivateレポジトリの利用githubのprivateレポジトリを利用している場合、毎回ユーザー名とパスワードの入力が求められる。いうprivateレポジトリを利用した場合。ユーザー名とパスワードの入力が要求されている。'https://mwsoft@github.com':.netrc等を使ってパスワードの省略をしていればこの要求は発生しない。runする以外にもPython上からも叩ける。runはデフォルトでは個別にcondaのenvを生成するので気がつくとmlflow-{uuid}なenvが溜まっていく。指定して新規にenvを作らないように指定できる。--no-condaメモ。mlflowが作ったenvを滅ぼすコマンド(非推奨)。MLFlowの機能をざっと試す第三弾。(1)リンク株式会社iMindスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。