mcpField
M
mlflow

mlflow

github.com/alphaonedevデータ・データベース46 回インストール
リポジトリ

mlflow について

MLflowは、実験の追跡、モデルのパッケージ化、デプロイを行うオープンソースの機械学習プラットフォームです。再現性のあるワークフローを求めるMLチーム向けに、Web UI、Python API、複数の成果物ストレージを備えています。

主な機能

  1. 01実験パラメーター、指標、成果物の記録
  2. 02標準形式でのモデルパッケージ化
  3. 03REST APIまたはKubernetes経由のデプロイ
  4. 04Web UIとPython API
  5. 05複数バックエンドでの成果物保存

活用シーン

  1. 01ハイパーパラメーター実験結果の比較
  2. 02学習指標とモデルファイルの記録
  3. 03評価済みモデルの登録とデプロイ
  4. 04実験追跡のワークフローへの統合

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill mlflow

インストール後、Claude Code で/mlflowを入力して読み込まれたか確認します。

詳細

mlflow

目的

MLflowは、機械学習のライフサイクルにおける実験の追跡、MLモデルのパッケージ化、デプロイを行うためのオープンソースプラットフォームです。再現性とコラボレーションを実現するため、ワークフローの標準化に役立ちます。

使用する場面

複数のML実験を管理する場合、モデルを比較する場合、本番環境にデプロイする場合は、MLflowを使用してください。Jupyterノートブックでのハイパーパラメーター調整や、AWSやAzureなどのクラウド環境でのモデルデプロイのスケーリングなど、MLOpsパイプラインに取り組むチームに最適です。

主な機能

  • 実験の追跡:各実行のメトリクス、パラメーター、アーティファクトを記録します。
  • モデルのパッケージ化:共有しやすい標準形式(例:MLmodel)でモデルを保存します。
  • モデルのデプロイ:モデルをREST APIとして提供したり、Kubernetesなどのプラットフォームと統合したりできます。
  • UIとAPI:可視化用のWeb UIと、プログラムからアクセスするためのPython APIを提供します。
  • アーティファクトのストレージ:出力の保存先として、S3、Azure Blob、ローカルファイルなどのバックエンドに対応しています。

使用パターン

まず、トラッキングサーバーを初期化するか、ローカルバックエンドを使用します。一般的なワークフローでは、スクリプトにMLflowをインポートし、トレーニング中にメトリクスを記録し、評価後にモデルを登録します。必ず最初にトラッキングURIを設定してください(例:環境変数を使用)。本番環境では、モデルをパッケージ化し、MLflowのサービングツールを使ってデプロイします。再現性が失われないよう、追跡せずに実験を実行することは避けてください。

主なコマンド/API

簡単な操作にはMLflow CLIを、コードへの統合にはPython APIを使用します。

  • CLIコマンド:

    • トラッキングサーバーを起動する:mlflow server --host 0.0.0.0 --port 5000
    • 実験を実行する:mlflow run . -e main --experiment-name my_exp
    • スクリプトでメトリクスを記録する:パラメーターには--param key=valueなどのフラグを使用します。
    • モデルをデプロイする:mlflow models serve -m models:/MyModel/1 -p 5001
  • Python APIの例:

    • トラッキングを開始する:
      import mlflow
      mlflow.set_tracking_uri("http://localhost:5000")
      with mlflow.start_run():
          mlflow.log_param("alpha", 0.1)
      
    • メトリクスを記録する:
      mlflow.log_metric("accuracy", 0.95)
      mlflow.log_artifact("model.pkl")
      
    • モデルを登録する:
      mlflow.sklearn.log_model(sk_model, "model")
      mlflow.register_model("runs:/<run_id>/model", "MyModel")
      

設定形式には、プロジェクト仕様用のYAMLが含まれます(例:mlflow projectsでのentry_points: main: parameters: alpha: {type: float, default: 0.1})。セキュリティ保護されたサーバーを使用する場合は、export MLFLOW_TRACKING_USERNAME=$YOUR_USERNAMEやexport MLFLOW_TRACKING_PASSWORD=$YOUR_PASSWORDなどを使って、認証用の環境変数を設定します。

統合に関する注意事項

Scikit-learn、TensorFlow、PyTorchなどのフレームワークとは、それぞれのロギング関数(例:mlflow.sklearn.autolog())を使ってMLflowを統合できます。クラウドストレージを使用する場合は、S3との互換性のためにMLFLOW_S3_ENDPOINT_URLを設定します。Airflowなどのツールと組み合わせる場合は、MLflowのAPIを使ってDAGから実行を開始します。APIを呼び出す前に、必ずos.environ['MLFLOW_TRACKING_URI'] = 'http://your-server:5000'でトラッキングURIを指定してください。リモート環境で認証する場合は、APIキー用に$MLFLOW_TRACKING_TOKENなどの環境変数を使用します。

エラー処理

到達できないトラッキングURIや無効なモデル形式などの問題を確認し、一般的なエラーに対処します。たとえば、サーバーが停止している場合は、PythonでMlflowExceptionを捕捉します:

try:
    mlflow.set_tracking_uri("http://localhost:5000")
except mlflow.exceptions.MlflowException as e:
    print(f"Error: {e}. Check server status and retry.")

CLIでは、失敗した実行をデバッグするために--verboseで詳細モードを使用します。記録する前に入力を検証してください(例:メトリクスが数値であることを確認します)。アーティファクトのアップロードに失敗した場合は、ストレージのアクセス許可を確認するか、--backend-store-uri sqlite:///mlflow.dbなどの代替バックエンドを使用します。

具体的な使用例

  1. Scikit-learn モデルの追跡:スクリプト内でモデルをトレーニングし、記録します。

    import mlflow.sklearn
    from sklearn.ensemble import RandomForestClassifier
    model = RandomForestClassifier()
    model.fit(X_train, y_train)
    with mlflow.start_run():
        mlflow.sklearn.log_model(model, "rf_model")
    

    次に、mlflow ui で実行を表示し、メトリクスを比較します。

  2. トレーニング済みモデルのデプロイ:トレーニング後、パッケージ化してサーブします。
    mlflow models build-docker -m runs:/<run_id>/model -n my_image を実行します。次に、docker run -p 5000:8080 my_image でデプロイし、curl -d 'json data' http://localhost:5000/invocations でエンドポイントにクエリを送信します。

グラフの関係性

  • 関連するクラスター:aimlops(Kubeflow や DVC などの他の MLOps ツールと連携します)。
  • タグ:mlflow(直接一致)、mlops(ワークフローの統合)、machine-learning(中核機能)。
  • 依存関係:Python の ML ライブラリ(scikit-learn など)やストレージシステム(S3 など)と組み合わせて使用されることがよくあります。

コメント