🎉

MLflow と GitHub Actions の役割

2025/03/06に公開

MLflowとGitHub Actionsは、機械学習のCI/CDパイプラインを構築する際に一緒に使うことができるツールです。それぞれの役割と連携方法について詳しく解説します。


1. MLflow と GitHub Actions の役割

ツール 主な役割
MLflow 機械学習モデルの管理・トラッキング・デプロイ
GitHub Actions CI/CD の自動化(コードテスト、ビルド、デプロイ)

MLflowは 機械学習モデルのライフサイクルを管理 し、GitHub Actionsは 開発ワークフローを自動化 するため、それぞれ補完し合う形で利用できます。


2. MLflow + GitHub Actions の主なユースケース

(1) モデルの自動トレーニングと登録

  • GitHubリポジトリにコードをPushしたら、GitHub Actionsがトレーニングを実行し、MLflowにモデルを登録。

実装例

jobs:
  train_model:
    runs-on: ubuntu-latest
    steps:
      - name: コードを取得
        uses: actions/checkout@v4
      
      - name: Python環境のセットアップ
        uses: actions/setup-python@v4
        with:
          python-version: '3.9'

      - name: 依存関係のインストール
        run: pip install -r requirements.txt

      - name: モデルをトレーニングし、MLflow に登録
        run: python train.py

train.py 内でMLflowを使ってモデルを記録:

import mlflow
mlflow.log_param("learning_rate", 0.01)
mlflow.log_metric("accuracy", 0.95)
mlflow.sklearn.log_model(model, "model")

(2) モデルのバージョン管理

GitHub Actionsが新しいモデルのバージョンをMLflowにプッシュし、過去のモデルと比較して最適なものを選択。

実装例

- name: MLflowに新しいモデルを登録
  run: mlflow models serve -m models:/my_model/latest -p 5001

(3) 自動デプロイ

  • 新しいモデルがMLflowに登録されたら、GitHub Actionsがモデルを本番環境にデプロイ。
  • MLflow Model Registry でステージを管理(StagingProduction に昇格)。

実装例

jobs:
  deploy_model:
    runs-on: ubuntu-latest
    steps:
      - name: MLflowから最新のモデルを取得
        run: mlflow models download -m models:/my_model/latest -d ./latest_model

      - name: Dockerコンテナでモデルをデプロイ
        run: docker run -p 5001:5001 my_model:latest

3. MLflow + GitHub Actions の組み合わせで気をつけるポイント

データの保存先:MLflowのデータ(モデル、メトリクス)をどこに保存するか決める(AWS S3 / Azure Blob Storage など)。
Secrets管理:GitHub Actions で MLflow Tracking Server の API トークンを secrets に保存する。
モデルの品質チェック:GitHub Actionsで自動テストを行い、精度が低いモデルはデプロイしない。


4. まとめ

MLflowとGitHub Actionsは一緒に使うことで、機械学習のトレーニング、管理、デプロイの自動化が可能になります。特に、CI/CDパイプラインを構築する際に非常に有効な組み合わせです。

Discussion