🐥
GitHub Actionsを使ったMLOpsのCI/CD設定ガイド
MLOpsでは、機械学習モデルのトレーニングやデプロイを自動化することが重要です。本記事では、GitHub Actionsを活用して、モデルの継続的インテグレーション(CI)と継続的デプロイ(CD)を行う方法を細かく解説します。
1. GitHub Actionsとは?
GitHub Actionsは、リポジトリの変更に応じて自動的にジョブを実行できるCI/CDツールです。機械学習のワークフローでは、以下のようなタスクを自動化できます。
MLOpsにおけるGitHub Actionsの活用例
- モデルのトレーニングを自動実行
- モデルの精度評価を自動化
- Dockerイメージのビルドとプッシュ
- Kubernetes(K8s)クラスタやAWS/GCPへ自動デプロイ
- モニタリングの自動化(Prometheus, Grafanaなど)
2. MLOpsでのGitHub Actionsワークフロー構成
MLOpsでのGitHub Actionsの一般的な流れ
1. 開発者がコードをプッシュ(mainブランチ or featureブランチ)
2. GitHub Actionsがトリガーされ、以下のジョブが実行
├── データの前処理
├── モデルのトレーニング
├── モデルの精度評価
├── Dockerコンテナのビルド・プッシュ
├── 推論APIサーバーにデプロイ(AWS/GCP/K8s)
├── モニタリング設定(Prometheus/Grafana)
.env
ファイル例)
必要な環境変数(AWS_ACCESS_KEY_ID=xxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxx
DOCKER_USERNAME=your_dockerhub_username
DOCKER_PASSWORD=your_dockerhub_password
3. GitHub Actionsのワークフロー設定(例)
.github/workflows/mlops_pipeline.yml
)
ワークフローの定義ファイル(name: MLOps Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
train_model:
runs-on: ubuntu-latest
steps:
- name: リポジトリのチェックアウト
uses: actions/checkout@v3
- name: Python環境のセットアップ
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: 依存ライブラリのインストール
run: pip install -r requirements.txt
- name: モデルのトレーニング
run: python train.py
- name: モデルの精度評価
run: python evaluate.py
build_and_push_docker:
runs-on: ubuntu-latest
needs: train_model
steps:
- name: リポジトリのチェックアウト
uses: actions/checkout@v3
- name: Docker Hubへログイン
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
- name: Dockerイメージのビルド
run: docker build -t your_dockerhub_username/mlops-model:latest .
- name: Docker Hubへプッシュ
run: docker push your_dockerhub_username/mlops-model:latest
deploy_model:
runs-on: ubuntu-latest
needs: build_and_push_docker
steps:
- name: Kubernetesへデプロイ
run: |
kubectl apply -f k8s/deployment.yaml
kubectl rollout status deployment/mlops-model
4. 主要なポイント解説
✅ モデルトレーニングジョブ(train_model)
-
train.py
を実行し、学習したモデルを作成。 -
evaluate.py
でモデルの評価。 - 結果をGitHub ActionsのアーティファクトやS3へ保存することも可能。
✅ Dockerイメージのビルドとプッシュ(build_and_push_docker)
- モデルを含むAPIをDockerイメージ化。
-
docker push
でDocker Hubへプッシュし、デプロイ準備。
✅ Kubernetesへデプロイ(deploy_model)
-
kubectl apply -f k8s/deployment.yaml
でモデルをデプロイ。 -
kubectl rollout status deployment/mlops-model
で正常デプロイを確認。
5. GitHub ActionsのSecrets設定
セキュリティのため、AWSやDockerの認証情報はGitHubのSecretsに保存し、ワークフローで利用します。
Secretsの設定方法
- GitHubリポジトリへアクセス
-
Settings
→Secrets and variables
→Actions
-
New repository secret
をクリックし、以下の値を追加-
DOCKER_USERNAME
: Docker Hubのユーザー名 -
DOCKER_PASSWORD
: Docker Hubのパスワード -
AWS_ACCESS_KEY_ID
: AWSアクセスキー -
AWS_SECRET_ACCESS_KEY
: AWSシークレットキー
-
6. まとめ(MLOpsでGitHub Actionsを使うメリット)
- 自動化の効率化:モデルのトレーニングからデプロイまで一連の流れを自動化。
- 再現性の向上:同じ環境で実行されるため、環境差異が少なくなる。
- CI/CDパイプラインの強化:GitHub上で簡単にMLパイプラインを構築。
GitHub Actionsを活用することで、MLOpsの運用がスムーズになり、モデルの継続的デプロイが容易になります。ぜひ活用してみてください!
Discussion