MLflowのdocumentを読んだメモ

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からリクエストが帰ってくる。

 

ユースケース

  1. 実験管理したいdata scientist
  2. modelパフォーマンスを比較したいMLOps engineer
  3. productionにdeployしたいMLOps engineer
  4. 結果をシェアしたり、容易なparameter変更をしたいdata scientist

LLM

LLMの実験もtrackingできる。prompt, output, version, parameterなど。

その他

databricksのworkspaceでもMLflowを使える。

疑問

  • 各環境における、MLflow運用のベストプラクティス。
  • 例えば、コンテナ内でML学習させていて、それをlocalファイルとして保存しても、消えてしまう。どういう実行環境では、どこにoutputを集約すべきなのか?
  • また、複数人のチームにおいて、各々が勝手にMLflowを使うより、組織的に使った方が管理しやすいだろう。その場合、どういう形で管理すべき?
  • wandbでも似たようなことが出来そうだが、どちらが優れているのか?