<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>「start_run」タグの記事一覧Python Tech</title>
	<atom:link href="https://tech.nkhn37.net/tag/start_run/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech.nkhn37.net</link>
	<description>Python学習サイト</description>
	<lastBuildDate>Sat, 08 Nov 2025 08:11:25 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://tech.nkhn37.net/wp-content/uploads/2021/01/cropped-lion-normal-clear-1-32x32.png</url>
	<title>「start_run」タグの記事一覧Python Tech</title>
	<link>https://tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【MLflow】基本的な使い方 ~機械学習のライフサイクル管理~</title>
		<link>https://tech.nkhn37.net/mlflow-basic/</link>
					<comments>https://tech.nkhn37.net/mlflow-basic/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Fri, 15 Dec 2023 20:00:00 +0000</pubDate>
				<category><![CDATA[MLflow]]></category>
		<category><![CDATA[end_run]]></category>
		<category><![CDATA[log_metric]]></category>
		<category><![CDATA[log_model]]></category>
		<category><![CDATA[log_param]]></category>
		<category><![CDATA[mlflow ui]]></category>
		<category><![CDATA[mlruns]]></category>
		<category><![CDATA[set_experiment]]></category>
		<category><![CDATA[start_run]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=9871</guid>

					<description><![CDATA[機械学習ライフサイクル管理のための MLflow の基本的な使い方を解説します。 MLflow を使った機械学習のライフサイクル管理 MLflowとは、機械学習のライフサイクルを管理するためのオープンソースのプラットフォ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">機械学習ライフサイクル管理のための <span class="jinr-d--text-color d--marker1 d--bold">MLflow の基本的な使い方</span>を解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold">MLflow を使った機械学習のライフサイクル管理</h2>



<p class="wp-block-paragraph"><span class="jinr-d--text-color d--marker1 d--bold">MLflow</span>とは、機械学習のライフサイクルを管理するためのオープンソースのプラットフォームです。MLflow は、データサイエンティストやエンジニアが機械学習のプロジェクトを効率的に実行できるように設計されています。</p>



<p class="wp-block-paragraph">MLflow の主な機能は以下のようなものがあります。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>機能</th><th>概要</th></tr></thead><tbody><tr><td>MLflow Tracking</td><td>実験のパラメータ、コード、メトリクス、結果を記録する機能です。ユーザーは異なる実験結果を比較し、最適なモデルを選択できます。</td></tr><tr><td>MLflow Projects</td><td>プロジェクトの構造や依存関係を定義するための形式です。これによりコード、データ、環境設定を一元管理して、再現性と共有の容易さを向上させます。</td></tr><tr><td>MLflow Models</td><td>異なる機械学習フレームワークからのモデルを一つの標準フォーマットで保存、再利用、共有するための機能です。これにより、異なる環境へのモデルのデプロイが容易になります。</td></tr><tr><td>MLflow Model Registry</td><td>モデルのバージョン管理、ライフサイクルのステージング、注釈の付与などができる中央リポジトリ。モデルの使用状況を追跡して運用環境での利用を管理する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">MLflow は上記のような機能により、機械学習プロジェクトの管理、実行、デプロイメントの効率を大幅に向上させることができます。</p>



<p class="wp-block-paragraph">この記事では <span class="jinr-d--text-color d--marker1 d--bold">MLflow の基本的な使い方</span>を説明します。</p>



<h3 class="wp-block-heading jinr-heading d--bold">MLflow の環境準備</h3>



<p class="wp-block-paragraph">MLflow の環境準備方法ついて説明します。</p>



<h4 class="wp-block-heading jinr-heading d--bold">MLflow のインストール</h4>



<p class="wp-block-paragraph">MLflow を使用する場合にはインストールが必要です。以下のように pip でインストールしてください。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">pip install mlflow</pre>



<h4 class="wp-block-heading jinr-heading d--bold">MLflow サーバーの実行</h4>



<p class="wp-block-paragraph">MLflow サーバーを実行して利用します。リモートサーバーを立てる方法やローカルで実行する方法がありますが、この記事では MLflow の使い方を紹介するのが主目的であるため、ローカルで実行する方法を紹介します。</p>



<p class="wp-block-paragraph">実行する python プログラムがあるフォルダで以下のコマンドを実行してください。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">mlflow ui </pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
>mlflow ui
INFO:waitress:Serving on http://127.0.0.1:5000</pre>



<p class="wp-block-paragraph">実行するとサーバーのURLが表示されます。<code>http://127.0.0.1:5000</code> または <code>http://localhost:5000/</code> で MLflow UI にアクセスできます。</p>



<p class="wp-block-paragraph">MLflow UI は、機械学習の実行結果を Web ブラウザ上で管理するインターフェースです。これにより、異なる実験結果を視覚的に比較し、効果的な分析が可能になります。</p>



<h3 class="wp-block-heading jinr-heading d--bold">MLflow の使用方法</h3>



<p class="wp-block-paragraph">MLflow の使用方法を簡単な例を使って紹介します。今回は、MNIST という手書き画像データ分類を例にします。なお、分類手法は CNN（Convolutional Neural Network：畳み込みニューラルネットワーク）で、実装フレームワークとしては Tensorflow / Keras を使用します。</p>



<p class="wp-block-paragraph">CNN に関する説明はこの記事ではしません。CNN による画像分類の説明は「<a href="https://tech.nkhn37.net/tensorflow-keras-cnn-basic-mnist/" target="_blank" rel="noreferrer noopener">CNN（畳み込みニューラルネットワーク）による画像分類の基本</a>」を参考にしてください。</p>



<p class="wp-block-paragraph">MLflow を使用した実装例の全体は以下のようになります。ポイントとなる部分の詳細を以降で説明していきます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.datasets import mnist

import mlflow
import mlflow.keras


def main():
    """メイン関数"""
    # ===== MLflowの実験設定
    mlflow.set_experiment("mnist_cnn_classification")

    # ===== MNIST(エムニスト)データの読込
    (train_imgs, train_labels), (test_imgs, test_labels) = mnist.load_data()
    train_imgs = train_imgs.reshape((60000, 28, 28, 1))
    test_imgs = test_imgs.reshape((10000, 28, 28, 1))
    # 訓練データの一部(20%)を評価データとして使う
    idx = int(train_imgs.shape[0] * 0.2)
    train_imgs, val_imgs = train_imgs[idx:], train_imgs[:idx]
    train_labels, val_labels = train_labels[idx:], train_labels[:idx]

    # ===== CNNモデルの構築
    # MNIST画像は28×28でチャンネルは1
    inputs = keras.Input(shape=(28, 28, 1))
    # 前処理0~1へ正規化
    x = layers.Rescaling(1.0 / 255)(inputs)
    # 畳み込み層とプーリング層の定義
    x = layers.Conv2D(32, kernel_size=3, activation="relu")(x)
    x = layers.MaxPooling2D(pool_size=2)(x)
    x = layers.Conv2D(64, kernel_size=3, activation="relu")(x)
    x = layers.MaxPooling2D(pool_size=2)(x)
    x = layers.Conv2D(128, kernel_size=3, activation="relu")(x)
    x = layers.MaxPooling2D(pool_size=2)(x)
    # 平坦化する
    x = layers.Flatten()(x)
    # ドロップアウトを設定
    x = layers.Dropout(0.5)(x)
    # 分類のために10のノードに接続
    outputs = layers.Dense(10, activation="softmax")(x)

    # モデルの作成
    model = keras.Model(inputs=inputs, outputs=outputs)
    # モデル構成の表示
    print(model.summary())
    # # モデルの画像保存
    # keras.utils.plot_model(model, "mnist_cnn_classifier.png", show_shapes=True)

    # モデルのパラメータ設定
    model_optimizer = "adam"
    model_loss = "sparse_categorical_crossentropy"
    # 実行パラメータ設定
    num_epochs = 5
    batch_size = 32

    with mlflow.start_run():
        # モデルパラメータを記録
        mlflow.log_param("optimizer", model_optimizer)
        mlflow.log_param("loss", model_loss)
        # 実行パラメータを登録
        mlflow.log_param("num_epochs", num_epochs)
        mlflow.log_param("batch_size", batch_size)

        # ===== オプティマイザ、損失関数、指標を設定してコンパイル
        model.compile(
            optimizer=model_optimizer,
            loss=model_loss,
            metrics=["accuracy"],
        )

        # ===== fitを使ったモデルの訓練
        history = model.fit(
            train_imgs,
            train_labels,
            epochs=num_epochs,
            batch_size=batch_size,
            validation_data=(val_imgs, val_labels),
        )

        # ===== MLflowにトレーニングのメトリクスを記録
        for epoch in range(num_epochs):
            mlflow.log_metric(
                "loss", history.history["loss"][epoch], step=epoch
            )
            mlflow.log_metric(
                "accuracy", history.history["accuracy"][epoch], step=epoch
            )
            mlflow.log_metric(
                "val_loss", history.history["val_loss"][epoch], step=epoch
            )
            mlflow.log_metric(
                "val_accuracy",
                history.history["val_accuracy"][epoch],
                step=epoch,
            )

        # ===== evaluateを使ったテストデータでの評価
        result = model.evaluate(test_imgs, test_labels)
        print(result)

        # ===== predictを使って予測結果を表示
        pred = model.predict(test_imgs)
        print(f"予測: {np.argmax(pred[0])}, 正解: {test_labels[0]}")

        # ===== MLflowにモデルを記録
        # モデルを保存する
        mlflow.keras.log_model(model, "model")


if __name__ == "__main__":
    main()
</pre>



<h4 class="wp-block-heading jinr-heading d--bold">実装の詳細説明</h4>



<p class="wp-block-paragraph">上記で紹介したプログラムについて MLflow の実装に関わる部分をピックアップして詳細を説明していきます。</p>



<h5 class="wp-block-heading jinr-heading d--bold">インポート</h5>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import mlflow
import mlflow.keras</pre>



<p class="wp-block-paragraph">MLflow を利用するためにインポートしている部分です。<span class="jinr-d--text-color d--marker1 d--bold"><code>mlflow.keras</code></span> は、後述するモデルの保存の際に使用するためにインポートしています。</p>



<h5 class="wp-block-heading jinr-heading d--bold">MLFlow の実験設定</h5>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    # ===== MLflowの実験設定
    mlflow.set_experiment("mnist_cnn_classification")</pre>



<p class="wp-block-paragraph">MLFlow を実行する際に今回のプログラムがどういった実験 (Experiment) であるか設定します。設定は <span class="jinr-d--text-color d--marker1 d--bold"><code>mlflow.set_experiment</code></span> に実験名を文字列で指定します。</p>



<p class="wp-block-paragraph">このコードは省略することも可能ですが、省略した場合、MLflow は当該プログラムを &#8220;Default&#8221; 実験として記録します。ただし、複数の実験を行うことが通常だと思いますので、後々で識別をするために実験設定をしておくことを推奨します。</p>



<h5 class="wp-block-heading jinr-heading d--bold">MLflow の実行とパラメータ記録</h5>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    # モデルのパラメータ設定
    model_optimizer = "adam"
    model_loss = "sparse_categorical_crossentropy"
    # 実行パラメータ設定
    num_epochs = 5
    batch_size = 32

    with mlflow.start_run():
        # モデルパラメータを記録
        mlflow.log_param("optimizer", model_optimizer)
        mlflow.log_param("loss", model_loss)
        # 実行パラメータを登録
        mlflow.log_param("num_epochs", num_epochs)
        mlflow.log_param("batch_size", batch_size)</pre>



<p class="wp-block-paragraph">上記は、記録するモデルや実行のパラメータを設定して、MLflow を実行している部分です。今回は、オプティマイザーとして <code>"adam"</code>、損失関数はクロスエントロピー  <code>"sparse_categorical_crossentropy"</code> を使用しています。また、エポック数は 5、バッチサイズは 32 としています。</p>



<p class="wp-block-paragraph">MLflow は、<span class="jinr-d--text-color d--marker1 d--bold"><code>mlflow.start_run()</code></span> を実行して起動し、実験を開始します。<code>start_run</code> を実行すると MLflow は、当該実行が一意になるような Run Name を付与し、後述する MLflow UI で区別することができます。もし、明示的に Run Name を指定したい場合は <code>mlflow.start_run(run_name="My_Run_Name")</code> のように <code>run_name</code> 引数に指定してください。</p>



<p class="wp-block-paragraph">上記例では <code>start_run</code> を <code>with</code> 句を使用して、その中に実験の内容を記載しています。なお、<code>with</code> 句を使わずに以下のように使うことも可能です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">mlflow.start_run()

# 実験のコードを記載

mlflow.end_run()</pre>



<p class="wp-block-paragraph"><code>with</code> 句を使わない場合は <span class="jinr-d--text-color d--marker1 d--bold"><code>mlflow.end_run()</code></span> で実験を明示的に終了し、リソースを適切に開放する必要があります。基本的には <code>with</code> 句を使うのが良いでしょう。</p>



<p class="wp-block-paragraph">MLflow にパラメータを記録するには、<code>mlflow.log_param("optimizer", model_optimizer)</code> のように <span class="jinr-d--text-color d--marker1 d--bold"><code>mlflow.log_param</code></span> を使用します。第 1 引数にパラメータ名、第 2 引数に記録する値を指定します。</p>



<p class="wp-block-paragraph">モデルパラメータを探索する場合には、値を変えつつ <code>log_param</code> でしっかり記録をしておきます。これにより、どのパラメータで実験した結果がどういった結果となったが後で確認しやすくなります。</p>



<h5 class="wp-block-heading jinr-heading d--bold">MLflow にトレーニングのメトリクスを記録</h5>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">        # (省略：モデルのコンパイル、トレーニング実行)

        # ===== MLflowにトレーニングのメトリクスを記録
        for epoch in range(num_epochs):
            mlflow.log_metric(
                "loss", history.history["loss"][epoch], step=epoch
            )
            mlflow.log_metric(
                "accuracy", history.history["accuracy"][epoch], step=epoch
            )
            mlflow.log_metric(
                "val_loss", history.history["val_loss"][epoch], step=epoch
            )
            mlflow.log_metric(
                "val_accuracy",
                history.history["val_accuracy"][epoch],
                step=epoch,
            )</pre>



<p class="wp-block-paragraph">モデルのコンパイルやトレーニングの実行をしたら、結果のメトリクスを記録します。</p>



<p class="wp-block-paragraph">メトリクスの記録には <span class="jinr-d--text-color d--marker1 d--bold"><code>mlflow.log_metric</code></span> を使用します。上記例は <code>for</code> 文で各エポックにおけるメトリクスの値を記録するように記載しています。第 1 引数にメトリクス名、第 2 引数に値を指定してます。<code>step</code> 引数にエポックの数値を指定することでどのエポックにおけるメトリクスかを指定しています。</p>



<h5 class="wp-block-heading jinr-heading d--bold">モデルを記録</h5>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">        # (省略：モデルの評価や予測）

        # ===== MLflowにモデルを記録
        # モデルを保存する
        mlflow.keras.log_model(model, "model")</pre>



<p class="wp-block-paragraph">テストデータでのモデルの評価や予測を行った後に、最後に MLflow にモデルを記録しています。モデルの記録には <span class="jinr-d--text-color d--marker1 d--bold"><code>mlflow.keras.log_model</code></span> を使用します。これにより実行時のモデルを記録し、バージョン管理や他者との共有などに使うことができます。</p>



<p class="wp-block-paragraph">なお、モデルの記録のための関数は、scikit-learn のモデルの場合は <span class="jinr-d--text-color d--marker1 d--bold"><code>mlflow.sklearn.log_model</code></span>、Pytorch の場合は <span class="jinr-d--text-color d--marker1 d--bold"><code>mlflow.pytorch.log_model</code></span> のように用意されていますので、適切な関数を調べて使用しましょう。</p>



<h4 class="wp-block-heading jinr-heading d--bold">MLflow UI を使った結果確認・管理</h4>



<p class="wp-block-paragraph">プログラム実行後は MLflow UI を使って実行結果の確認等の各種管理ができます。</p>



<p class="wp-block-paragraph">MLflow UI は上記でも説明した通り「<code>mlflow ui</code>」でサーバを起動したうえで <code>http://127.0.0.1:5000</code> または <code>http://localhost:5000/</code> にアクセスします。</p>



<p class="wp-block-paragraph">MLflow UI にアクセスすると以下のような画面が表示されます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img fetchpriority="high" decoding="async" width="1024" height="285" src="https://tech.nkhn37.net/wp-content/uploads/2023/12/image-4-1024x285.png" alt="" class="wp-image-9889" srcset="https://tech.nkhn37.net/wp-content/uploads/2023/12/image-4-1024x285.png 1024w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-4-300x84.png 300w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-4-768x214.png 768w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-4-1536x428.png 1536w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-4.png 1710w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">画面左側の Experiments の部分には、実験が表示されています。プログラムの説明で <code>mlflow.set_experiment</code> にて指定した「mnist_cnn_classification」という実験が表示されます。なお、<code>mlflow.set_experiment</code> を省略した場合は、Default に実験が記録されます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="382" height="208" src="https://tech.nkhn37.net/wp-content/uploads/2023/12/image-3.png" alt="" class="wp-image-9888" srcset="https://tech.nkhn37.net/wp-content/uploads/2023/12/image-3.png 382w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-3-300x163.png 300w" sizes="(max-width: 382px) 100vw, 382px" /></figure>
</div>


<p class="wp-block-paragraph">Experiments にて mnist_cnn_classification を選択したときには、以下のように実験した記録が表示されます。各行がプログラムの 1 回の実行結果だと思ってください。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="289" src="https://tech.nkhn37.net/wp-content/uploads/2023/12/image-5-1024x289.png" alt="" class="wp-image-9890" srcset="https://tech.nkhn37.net/wp-content/uploads/2023/12/image-5-1024x289.png 1024w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-5-300x85.png 300w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-5-768x217.png 768w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-5.png 1326w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">Run Name には、一意になるように MLFlow が値を設定します。今回上記サンプルコードを実行した 1 回目は「gifted-chimp-416」、2 回目で <code>epoch</code> 数を 100 にして再実行した結果が「indecisive-zebra-710」という Run Name で実行されました。</p>



<p class="wp-block-paragraph">1 回目の実行結果をクリックした画面を一部抜粋したのが以下になります。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="360" height="1024" src="https://tech.nkhn37.net/wp-content/uploads/2023/12/image-10-360x1024.png" alt="" class="wp-image-9896" srcset="https://tech.nkhn37.net/wp-content/uploads/2023/12/image-10-360x1024.png 360w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-10.png 416w" sizes="(max-width: 360px) 100vw, 360px" /></figure>
</div>


<p class="wp-block-paragraph">設定したパラメータ情報やメトリックスが表示されていることが分かります。また、登録したモデルは Artifacts の部分に表示されます。</p>



<p class="wp-block-paragraph">なお、メトリックスの部分のリンクをクリックすると以下のようにグラフを確認することが可能です。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="477" src="https://tech.nkhn37.net/wp-content/uploads/2023/12/image-11-1024x477.png" alt="" class="wp-image-9897" srcset="https://tech.nkhn37.net/wp-content/uploads/2023/12/image-11-1024x477.png 1024w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-11-300x140.png 300w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-11-768x358.png 768w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-11-1536x716.png 1536w, https://tech.nkhn37.net/wp-content/uploads/2023/12/image-11.png 1704w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">プログラムでは matplotlib などの可視化ライブラリを使ってグラフ化するところを、MLflow UI に任せてしまうことが可能です。</p>



<p class="wp-block-paragraph">MLflow UI は、他にも実験間の比較をするなど、様々な機能が使えますが今回は概要の紹介にとどめたいと思います。</p>



<h4 class="wp-block-heading jinr-heading d--bold">MLflow におけるリポジトリ (mlruns)</h4>



<p class="wp-block-paragraph">MLflow について紹介してきましたが、MLflow の各種情報が記録されるリポジトリについて簡単に紹介しておきます。</p>



<p class="wp-block-paragraph">MLflow を使った実行を行うと実行フォルダに「<span class="jinr-d--text-color d--marker1 d--bold">mlruns</span>」というフォルダが生成されることが分かるかと思います。このフォルダが、MLflow のリポジトリとなっていて、各実験データやメタデータ、モデルデータなどを蓄積しています。</p>



<p class="wp-block-paragraph">mlruns の具体的な構成としては以下のようになります。なお、バージョンによりフォルダ構成が異なる場合があるのでご注意ください。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">mlruns/
│
├── 0/                          # 実験ID 0
│   ├── meta.yaml               # 実験0のメタデータ
│   ├── 1234567890abcdef/       # 実行ID
│   │   ├── meta.yaml           # 実行のメタデータ
│   │   ├── params/             # パラメータ
│   │   ├── metrics/            # メトリクス
│   │   ├── tags/               # タグ
│   │   └── artifacts/          # アーティファクト
│   └── ...
├── 1/                          # 実験ID 1
│   └── ...
├── .trash/                     # 削除された実験・実行のデータ
│   └── ...
└── models/                     # モデルレジストリデータ
    ├── MyModelName/            # 登録されたモデル名
    │   ├── 1/                  # モデルのバージョン1
    │   │   ├── artifacts/      # バージョン1のアーティファクト
    │   │   └── meta.yaml       # バージョン1のメタデータ
    │   └── 2/                  # モデルのバージョン2
    │       ├── artifacts/      # バージョン2のアーティファクト
    │       └── meta.yaml       # バージョン2のメタデータ
    └── ...
</pre>



<p class="wp-block-paragraph">個々のフォルダの説明は省略しますが、このように MLflow のデータが管理されていることを把握しておいてもらえればと思います。</p>



<p class="wp-block-paragraph">基本的には実行する Python プログラム配置フォルダに mlruns フォルダがあれば問題ありませんが、異なるフォルダ内にあるリポジトリを使ってプログラムを実行する場合には <span class="jinr-d--text-color d--marker1 d--bold"><code>mlflow.set_tracking_uri()</code></span> で mlruns フォルダのパスを指定します。</p>



<p class="wp-block-paragraph"><code>set_tracking_uri</code> を使えば共有フォルダに mlruns を配置しておいて、複数人で共有してリポジトリを使用するといったことも可能です。</p>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p class="wp-block-paragraph">機械学習ライフサイクル管理のための <span class="jinr-d--text-color d--marker1 d--bold">MLflow の基本的な使い方</span>を解説しました。</p>



<p class="wp-block-paragraph">MLflow は、機械学習のライフサイクルを管理するためのオープンソースのプラットフォームで、データサイエンティストやエンジニアが機械学習のプロジェクトを効率的に実行できるようになります。</p>



<p class="wp-block-paragraph">この記事では、MNIST の手書き画像分類を例にして基本的な使い方を紹介してきました。プログラムでパラメータや実験結果、モデルを記録する方法や MLflow UI を使って結果を確認・管理する方法についても紹介しています。</p>



<p class="wp-block-paragraph">MLflow は、機械学習プロジェクトのライフサイクル管理を容易にしてくれるツールですので、是非使い方を覚えて色々試してもらうと良いかなと思います。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">MLflow の公式ドキュメントは<a href="https://mlflow.org/docs/latest/index.html" target="_blank" rel="noreferrer noopener">こちら</a>を参照してください。</p>
</div>
		</div></section>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--heading-box8  "><div class="a--simple-box-title d--bold">ソースコード<a href="https://github.com/nkhn37/python-tech-sample-source/tree/main/python-data-analysis/mlflow" target="_blank" rel="noreferrer noopener"></a></div><div class="c--simple-box-inner">
<p class="wp-block-paragraph">上記で紹介しているソースコードについては <a href="https://github.com/nkhn37/python-tech-sample-source/tree/main/python-data-analysis/mlflow" target="_blank" rel="noreferrer noopener">GitHub</a> にて公開しています。参考にしていただければと思います。</p>
</div></div></section>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/mlflow-basic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: tech.nkhn37.net @ 2026-11-04 07:22:05 by W3 Total Cache
-->