機械学習エンジニアが毎日使うGitの使い方【MLプロジェクトのブランチ戦略】

機械学習エンジニアが毎日使うGitの使い方【MLプロジェクトのブランチ戦略】 AI資格・学習

はじめに

機械学習のコードも「バージョン管理」が必要です。「モデルが急に精度が落ちた、前の版に戻したい」「チームで実験を並行して進めたい」という場面でGitが欠かせません。機械学習プロジェクト特有のGitの使い方をまとめます。

機械学習プロジェクトのディレクトリ構成

ml-project/
├── data/              # データ(.gitignoreに追加必須)
│   ├── raw/           # 生データ
│   └── processed/     # 前処理済みデータ
├── notebooks/         # Jupyter Notebook(探索用)
├── src/               # Pythonスクリプト(本番用)
│   ├── data/          # データ処理
│   ├── models/        # モデル定義
│   └── utils/         # ユーティリティ
├── models/            # 学習済みモデル(DVC管理推奨)
├── tests/             # テストコード
├── requirements.txt   # 依存ライブラリ
├── .gitignore         # 除外ファイル設定
└── README.md          # プロジェクト説明

MLプロジェクトの.gitignore設定

# データファイル(大容量のためGitに含めない)
data/raw/
data/processed/
*.csv
*.parquet
*.h5

# 学習済みモデル(DVCで管理)
models/
*.pkl
*.pt
*.onnx

# Jupyter Notebookの実行結果
.ipynb_checkpoints/

# 環境設定
.env
secrets.yaml

# Pythonキャッシュ
__pycache__/
*.pyc

MLプロジェクトのブランチ戦略

mainブランチは本番デプロイ済みの安定版のみを置きます。developブランチは開発中のコードを統合する場所です。feature/experiment-xgboostのような実験ブランチを試行ごとに切り、実験が成功したらdevelopにマージします。実験ブランチは結果が良ければdevelopにマージ・悪ければそのまま保留という運用が効率的です。

MLflowとGitのコミットIDを紐付ける

import mlflow
import subprocess

def get_git_hash():
    """現在のGitコミットハッシュを取得"""
    return subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode().strip()

# 実験の記録
with mlflow.start_run():
    mlflow.log_param('git_hash', get_git_hash())
    mlflow.log_param('model_type', 'lightgbm')
    # ... 学習・評価 ...
    mlflow.log_metric('accuracy', 0.95)

GitコミットIDとMLflowの実験IDを紐付けることで「このモデルはどのコードで学習したか」の追跡が可能になります。

よくある質問

「Jupyter NotebookはGitで管理できますか」という質問をよく受けます。管理できますが、Notebookの出力(グラフ・テーブル)がGit差分に含まれて大きくなる問題があります。nbstripoutというツールで出力をクリアしてからコミットする習慣をつけましょう。「モデルファイル(.pkl等)をGitに入れてもいいですか」という質問については、大容量のモデルファイルはGitに入れずDVC(Data Version Control)で管理することをおすすめします。DVCはGitと連携してデータ・モデルをバージョン管理できるツールです。

まとめ

MLプロジェクトのGit管理は適切な.gitignore設定・実験ブランチ戦略・MLflowとのコミットID紐付けという3点が重要です。データ・モデルファイルはGitに入れずDVCで管理することでリポジトリが肥大化を防げます。まず現在のMLプロジェクトに.gitignoreを設定して、実験ブランチを切る習慣をつけることから始めましょう。

MLプロジェクトでのGit活用は「後で困らないための保険」です。.gitignoreの設定・実験ブランチの切り方・MLflowとのコミットID紐付けという3点を今のプロジェクトに追加することで、チームでの共同開発と実験の再現性が大幅に向上します。まず.gitignoreにdata/フォルダを追加することを今日のアクションにしましょう。

📌 プログラミング・AI学習のおすすめスクール

コメント

タイトルとURLをコピーしました