Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 0品質スコア 50/100

mlflow

MLflowを使用して、機械学習の実験トラッキング、バージョン管理付きモデルレジストリの管理、本番環境へのモデルデプロイ、および実験の再現を行います。特定のフレームワークに依存しないMLライフサイクル管理プラットフォームです。

description の原文を見る

Track ML experiments, manage model registry with versioning, deploy models to production, and reproduce experiments with MLflow - framework-agnostic ML lifecycle platform

SKILL.md 本文

MLflow: ML ライフサイクル管理プラットフォーム

このスキルを使用する場合

以下が必要な場合にMLflowを使用してください:

  • ML実験を追跡する (パラメータ、メトリクス、アーティファクト)
  • モデルレジストリを管理する (バージョン管理とステージ遷移)
  • モデルをデプロイする (ローカル、クラウド、サービング環境)
  • 実験を再現する (プロジェクト設定)
  • モデルバージョンとパフォーマンスメトリクスを比較する
  • ML プロジェクトでチームと協力する
  • 任意の ML フレームワークと統合する (フレームワーク非依存)

ユーザー: 20,000以上の組織 | GitHub スター: 23k以上 | ライセンス: Apache 2.0

インストール

# MLflowをインストール
pip install mlflow

# 追加機能付きでインストール
pip install mlflow[extras]  # SQLAlchemy, boto3等を含む

# MLflow UIを起動
mlflow ui

# http://localhost:5000 でアクセス

クイックスタート

基本的な追跡

import mlflow

# 実行を開始
with mlflow.start_run():
    # パラメータをログ
    mlflow.log_param("learning_rate", 0.001)
    mlflow.log_param("batch_size", 32)

    # 訓練コード
    model = train_model()

    # メトリクスをログ
    mlflow.log_metric("train_loss", 0.15)
    mlflow.log_metric("val_accuracy", 0.92)

    # モデルをログ
    mlflow.sklearn.log_model(model, "model")

自動ログ (自動追跡)

import mlflow
from sklearn.ensemble import RandomForestClassifier

# 自動ログを有効化
mlflow.autolog()

# 訓練 (自動的にログされます)
model = RandomForestClassifier(n_estimators=100, max_depth=5)
model.fit(X_train, y_train)

# メトリクス、パラメータ、モデルが自動的にログされます!

コア概念

1. 実験と実行

実験: 関連する実行のための論理的なコンテナ 実行: MLコードの単一実行 (パラメータ、メトリクス、アーティファクト)

import mlflow

# 実験を作成/設定
mlflow.set_experiment("my-experiment")

# 実行を開始
with mlflow.start_run(run_name="baseline-model"):
    # パラメータをログ
    mlflow.log_param("model", "ResNet50")
    mlflow.log_param("epochs", 10)

    # 訓練
    model = train()

    # メトリクスをログ
    mlflow.log_metric("accuracy", 0.95)

    # モデルをログ
    mlflow.pytorch.log_model(model, "model")

# 実行IDは自動生成されます
print(f"Run ID: {mlflow.active_run().info.run_id}")

2. パラメータのログ

with mlflow.start_run():
    # 単一パラメータ
    mlflow.log_param("learning_rate", 0.001)

    # 複数パラメータ
    mlflow.log_params({
        "batch_size": 32,
        "epochs": 50,
        "optimizer": "Adam",
        "dropout": 0.2
    })

    # ネストされたパラメータ (辞書として)
    config = {
        "model": {
            "architecture": "ResNet50",
            "pretrained": True
        },
        "training": {
            "lr": 0.001,
            "weight_decay": 1e-4
        }
    }

    # JSON文字列または個別パラメータとしてログ
    for key, value in config.items():
        mlflow.log_param(key, str(value))

3. メトリクスのログ

with mlflow.start_run():
    # 訓練ループ
    for epoch in range(NUM_EPOCHS):
        train_loss = train_epoch()
        val_loss = validate()

        # 各ステップでメトリクスをログ
        mlflow.log_metric("train_loss", train_loss, step=epoch)
        mlflow.log_metric("val_loss", val_loss, step=epoch)

        # 複数メトリクスをログ
        mlflow.log_metrics({
            "train_accuracy": train_acc,
            "val_accuracy": val_acc
        }, step=epoch)

    # 最終メトリクスをログ (ステップなし)
    mlflow.log_metric("final_accuracy", final_acc)

4. アーティファクトのログ

with mlflow.start_run():
    # ファイルをログ
    model.save('model.pkl')
    mlflow.log_artifact('model.pkl')

    # ディレクトリをログ
    os.makedirs('plots', exist_ok=True)
    plt.savefig('plots/loss_curve.png')
    mlflow.log_artifacts('plots')

    # テキストをログ
    with open('config.txt', 'w') as f:
        f.write(str(config))
    mlflow.log_artifact('config.txt')

    # 辞書を JSON としてログ
    mlflow.log_dict({'config': config}, 'config.json')

5. モデルのログ

# PyTorch
import mlflow.pytorch

with mlflow.start_run():
    model = train_pytorch_model()
    mlflow.pytorch.log_model(model, "model")

# Scikit-learn
import mlflow.sklearn

with mlflow.start_run():
    model = train_sklearn_model()
    mlflow.sklearn.log_model(model, "model")

# Keras/TensorFlow
import mlflow.keras

with mlflow.start_run():
    model = train_keras_model()
    mlflow.keras.log_model(model, "model")

# HuggingFace Transformers
import mlflow.transformers

with mlflow.start_run():
    mlflow.transformers.log_model(
        transformers_model={
            "model": model,
            "tokenizer": tokenizer
        },
        artifact_path="model"
    )

自動ログ

人気のあるフレームワークのメトリクス、パラメータ、モデルを自動的にログします。

自動ログを有効化

import mlflow

# サポートされているすべてのフレームワークに対して有効化
mlflow.autolog()

# または特定のフレームワークに対して有効化
mlflow.sklearn.autolog()
mlflow.pytorch.autolog()
mlflow.keras.autolog()
mlflow.xgboost.autolog()

Scikit-learn での自動ログ

import mlflow
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# 自動ログを有効化
mlflow.sklearn.autolog()

# データを分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 訓練 (パラメータ、メトリクス、モデルが自動的にログされます)
with mlflow.start_run():
    model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)
    model.fit(X_train, y_train)

    # 正確度、f1_scoreなどのメトリクスが自動的にログされます
    # モデルが自動的にログされます
    # 訓練期間がログされます

PyTorch Lightning での自動ログ

import mlflow
import pytorch_lightning as pl

# 自動ログを有効化
mlflow.pytorch.autolog()

# 訓練
with mlflow.start_run():
    trainer = pl.Trainer(max_epochs=10)
    trainer.fit(model, datamodule=dm)

    # ハイパーパラメータがログされます
    # 訓練メトリクスがログされます
    # 最高のモデルチェックポイントがログされます

モデルレジストリ

バージョン管理とステージ遷移によってモデルのライフサイクルを管理します。

モデルを登録

import mlflow

# モデルをログして登録
with mlflow.start_run():
    model = train_model()

    # モデルをログ
    mlflow.sklearn.log_model(
        model,
        "model",
        registered_model_name="my-classifier"  # すぐに登録
    )

# または後で登録
run_id = "abc123"
model_uri = f"runs:/{run_id}/model"
mlflow.register_model(model_uri, "my-classifier")

モデルステージ

モデルをステージ間で遷移: なしステージング本番アーカイブ

from mlflow.tracking import MlflowClient

client = MlflowClient()

# ステージングに昇格
client.transition_model_version_stage(
    name="my-classifier",
    version=3,
    stage="Staging"
)

# 本番に昇格
client.transition_model_version_stage(
    name="my-classifier",
    version=3,
    stage="Production",
    archive_existing_versions=True  # 古い本番バージョンをアーカイブ
)

# モデルをアーカイブ
client.transition_model_version_stage(
    name="my-classifier",
    version=2,
    stage="Archived"
)

レジストリからモデルをロード

import mlflow.pyfunc

# 最新の本番モデルをロード
model = mlflow.pyfunc.load_model("models:/my-classifier/Production")

# 特定のバージョンをロード
model = mlflow.pyfunc.load_model("models:/my-classifier/3")

# ステージングからロード
model = mlflow.pyfunc.load_model("models:/my-classifier/Staging")

# モデルを使用
predictions = model.predict(X_test)

モデルバージョニング

client = MlflowClient()

# すべてのバージョンをリスト
versions = client.search_model_versions("name='my-classifier'")

for v in versions:
    print(f"Version {v.version}: {v.current_stage}")

# ステージ別の最新バージョンを取得
latest_prod = client.get_latest_versions("my-classifier", stages=["Production"])
latest_staging = client.get_latest_versions("my-classifier", stages=["Staging"])

# モデルバージョンの詳細を取得
version_info = client.get_model_version(name="my-classifier", version="3")
print(f"Run ID: {version_info.run_id}")
print(f"Stage: {version_info.current_stage}")
print(f"Tags: {version_info.tags}")

モデルアノテーション

client = MlflowClient()

# 説明を追加
client.update_model_version(
    name="my-classifier",
    version="3",
    description="ResNet50 classifier trained on 1M images with 95% accuracy"
)

# タグを追加
client.set_model_version_tag(
    name="my-classifier",
    version="3",
    key="validation_status",
    value="approved"
)

client.set_model_version_tag(
    name="my-classifier",
    version="3",
    key="deployed_date",
    value="2025-01-15"
)

実行の検索

プログラムで実行を見つけます。

from mlflow.tracking import MlflowClient

client = MlflowClient()

# 実験内のすべての実行を検索
experiment_id = client.get_experiment_by_name("my-experiment").experiment_id
runs = client.search_runs(
    experiment_ids=[experiment_id],
    filter_string="metrics.accuracy > 0.9",
    order_by=["metrics.accuracy DESC"],
    max_results=10
)

for run in runs:
    print(f"Run ID: {run.info.run_id}")
    print(f"Accuracy: {run.data.metrics['accuracy']}")
    print(f"Params: {run.data.params}")

# 複雑なフィルタを使用して検索
runs = client.search_runs(
    experiment_ids=[experiment_id],
    filter_string="""
        metrics.accuracy > 0.9 AND
        params.model = 'ResNet50' AND
        tags.dataset = 'ImageNet'
    """,
    order_by=["metrics.f1_score DESC"]
)

統合の例

PyTorch

import mlflow
import torch
import torch.nn as nn

# 自動ログを有効化
mlflow.pytorch.autolog()

with mlflow.start_run():
    # 設定をログ
    config = {
        "lr": 0.001,
        "epochs": 10,
        "batch_size": 32
    }
    mlflow.log_params(config)

    # 訓練
    model = create_model()
    optimizer = torch.optim.Adam(model.parameters(), lr=config["lr"])

    for epoch in range(config["epochs"]):
        train_loss = train_epoch(model, optimizer, train_loader)
        val_loss, val_acc = validate(model, val_loader)

        # メトリクスをログ
        mlflow.log_metrics({
            "train_loss": train_loss,
            "val_loss": val_loss,
            "val_accuracy": val_acc
        }, step=epoch)

    # モデルをログ
    mlflow.pytorch.log_model(model, "model")

HuggingFace Transformers

import mlflow
from transformers import Trainer, TrainingArguments

# 自動ログを有効化
mlflow.transformers.autolog()

training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=16,
    evaluation_strategy="epoch",
    save_strategy="epoch",
    load_best_model_at_end=True
)

# MLflow実行を開始
with mlflow.start_run():
    trainer = Trainer(
        model=model,
        args=training_args,
        train_dataset=train_dataset,
        eval_dataset=eval_dataset
    )

    # 訓練 (自動的にログされます)
    trainer.train()

    # 最終モデルをレジストリにログ
    mlflow.transformers.log_model(
        transformers_model={
            "model": trainer.model,
            "tokenizer": tokenizer
        },
        artifact_path="model",
        registered_model_name="hf-classifier"
    )

XGBoost

import mlflow
import xgboost as xgb

# 自動ログを有効化
mlflow.xgboost.autolog()

with mlflow.start_run():
    dtrain = xgb.DMatrix(X_train, label=y_train)
    dval = xgb.DMatrix(X_val, label=y_val)

    params = {
        'max_depth': 6,
        'learning_rate': 0.1,
        'objective': 'binary:logistic',
        'eval_metric': ['logloss', 'auc']
    }

    # 訓練 (自動的にログされます)
    model = xgb.train(
        params,
        dtrain,
        num_boost_round=100,
        evals=[(dtrain, 'train'), (dval, 'val')],
        early_stopping_rounds=10
    )

    # モデルとメトリクスが自動的にログされます

ベストプラクティス

1. 実験で整理

# ✅ 良い: 異なるタスク向けに別の実験
mlflow.set_experiment("sentiment-analysis")
mlflow.set_experiment("image-classification")
mlflow.set_experiment("recommendation-system")

# ❌ 悪い: すべてを1つの実験に
mlflow.set_experiment("all-models")

2. わかりやすい実行名を使用

# ✅ 良い: わかりやすい名前
with mlflow.start_run(run_name="resnet50-imagenet-lr0.001-bs32"):
    train()

# ❌ 悪い: 名前なし (自動生成UUID)
with mlflow.start_run():
    train()

3. 包括的なメタデータをログ

with mlflow.start_run():
    # ハイパーパラメータをログ
    mlflow.log_params({
        "learning_rate": 0.001,
        "batch_size": 32,
        "epochs": 50
    })

    # システム情報をログ
    mlflow.set_tags({
        "dataset": "ImageNet",
        "framework": "PyTorch 2.0",
        "gpu": "A100",
        "git_commit": get_git_commit()
    })

    # データ情報をログ
    mlflow.log_param("train_samples", len(train_dataset))
    mlflow.log_param("val_samples", len(val_dataset))

4. モデル系統を追跡

# 系統を理解するために実行をリンク
with mlflow.start_run(run_name="preprocessing"):
    data = preprocess()
    mlflow.log_artifact("data.csv")
    preprocessing_run_id = mlflow.active_run().info.run_id

with mlflow.start_run(run_name="training"):
    # 親実行を参照
    mlflow.set_tag("preprocessing_run_id", preprocessing_run_id)
    model = train(data)

5. デプロイメント向けにモデルレジストリを使用

# ✅ 良い: 本番用にレジストリを使用
model_uri = "models:/my-classifier/Production"
model = mlflow.pyfunc.load_model(model_uri)

# ❌ 悪い: 実行IDをハードコード
model_uri = "runs:/abc123/model"
model = mlflow.pyfunc.load_model(model_uri)

デプロイメント

モデルをローカルでサーブ

# 登録済みモデルをサーブ
mlflow models serve -m "models:/my-classifier/Production" -p 5001

# 実行からサーブ
mlflow models serve -m "runs:/<RUN_ID>/model" -p 5001

# エンドポイントをテスト
curl http://127.0.0.1:5001/invocations -H 'Content-Type: application/json' -d '{
  "inputs": [[1.0, 2.0, 3.0, 4.0]]
}'

クラウドにデプロイ

# AWS SageMaker にデプロイ
mlflow sagemaker deploy -m "models:/my-classifier/Production" --region-name us-west-2

# Azure ML にデプロイ
mlflow azureml deploy -m "models:/my-classifier/Production"

設定

トラッキングサーバー

# バックエンドストアを使用してトラッキングサーバーを起動
mlflow server \
  --backend-store-uri postgresql://user:password@localhost/mlflow \
  --default-artifact-root s3://my-bucket/mlflow \
  --host 0.0.0.0 \
  --port 5000

クライアント設定

import mlflow

# トラッキングURIを設定
mlflow.set_tracking_uri("http://localhost:5000")

# または環境変数を使用
# export MLFLOW_TRACKING_URI=http://localhost:5000

リソース

関連項目

  • references/tracking.md - 包括的なトラッキングガイド
  • references/model-registry.md - モデルのライフサイクル管理
  • references/deployment.md - 本番デプロイメントパターン

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
davila7
リポジトリ
davila7/claude-code-templates
ライセンス
MIT
最終更新
不明

Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: davila7 · davila7/claude-code-templates · ライセンス: MIT