MLflowとは
機械学習のライフサイクル全体で、workflow, artifactを管理できるOSS。様々なMLライブラリで利用することができる。MLのコードに対して、最小限の変更を行うだけで、各data scientistが実行した実験結果を再現できるようになる。
なお、ここでいうartifactはどういう形式でもOK(png, pickled data, parquet etc)。
Component
5つのcomponentからなる。
MLflow tracking
parameter, metrics, env, model artifactなどを管理できる。local file, database, tracking serverなど、様々な形で出力・保存できる。
MLflow models
trainingしたモデルを管理できる。あとからモデルをloadできる。
MLflow model registry
MLflowモデルの承認・品質保証・展開に焦点を当てた集中型のモデルストア・API・UI。実験で良かったモデルにタグをつけたり、registerできる。
MLflow projects
再利用可能なデータサイエンスのコードをパッケージ化できる。Databricks, k8sなどの環境でも実行可能。Dockerファイルにして、k8sで実行するなど。
MLflow recipes
分類・回帰など、一般的なタスク向けモデルを開発するための事前定義されたtemplate。簡単にMLモデルが作れる?
MLflow AI gateway
LLM向けに開発された。APIキーの集中管理が可能。gatewayをコマンドラインで起動しておくことで、Python側ではgatewayにリクエストを送るだけで、LLMからリクエストが帰ってくる。
- 実験管理したいdata scientist
- modelパフォーマンスを比較したいMLOps engineer
- productionにdeployしたいMLOps engineer
- 結果をシェアしたり、容易なparameter変更をしたいdata scientist
LLM
LLMの実験もtrackingできる。prompt, output, version, parameterなど。
その他
databricksのworkspaceでもMLflowを使える。
疑問
- 各環境における、MLflow運用のベストプラクティス。
- 例えば、コンテナ内でML学習させていて、それをlocalファイルとして保存しても、消えてしまう。どういう実行環境では、どこにoutputを集約すべきなのか?
- また、複数人のチームにおいて、各々が勝手にMLflowを使うより、組織的に使った方が管理しやすいだろう。その場合、どういう形で管理すべき?
- wandbでも似たようなことが出来そうだが、どちらが優れているのか?