mcpField
M
model-deployment

model-deployment

github.com/alphaonedevクラウド・DevOps46 回インストール
リポジトリ

model-deployment について

model-deploymentは、MLOpsワークフローで機械学習モデルを本番環境にデプロイするスキルです。DockerとKubernetesでモデルのバージョン、ローリング更新、トラフィックに応じたスケーリングを管理します。

主な機能

  1. 01モデル成果物からのDockerイメージ作成
  2. 02Kubernetesへのモデルデプロイ
  3. 03タグによるモデルバージョン管理
  4. 04デプロイのローリング更新とロールバック
  5. 05トラフィックに応じた自動スケーリング

活用シーン

  1. 01学習済みモデルをオンライン推論用にデプロイ
  2. 02再学習後に既存のデプロイを更新
  3. 03MLOpsパイプラインでのバージョン管理とロールバック

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill model-deployment

インストール後、Claude Code で/model-deploymentを入力して読み込まれたか確認します。

詳細

モデルデプロイ

目的

このスキルは、コンテナ(例:Docker)とオーケストレーションツール(例:Kubernetes)を使用して、機械学習モデルを本番環境にデプロイする作業を自動化し、スケーラブルで信頼性の高いMLモデルのサービングを実現します。

使用するタイミング

  • トレーニング済みのMLモデルをコンテナ化し、本番環境でリアルタイム推論に使用する必要があるとき。
  • モデルの再トレーニングやパフォーマンスの問題に応じて、既存のデプロイを更新するとき。
  • モデルのバージョン管理、監視、ロールバックを容易に行う必要があるMLOpsパイプラインで使用するとき。
  • マネージドオーケストレーションのために、AWS EKSやGoogle GKEなどのクラウドプロバイダーと連携するとき。

主な機能

  • モデルアーティファクトからDockerイメージをビルドし、Kubernetesクラスターにデプロイします。
  • タグによるモデルのバージョン管理をサポートし、ダウンタイムのないデプロイのためのローリングアップデートを処理します。
  • TensorFlowやPyTorchなどのMLフレームワークと連携し、API経由でモデルをサービングします。
  • Kubernetesポッド内のCPU/GPUリクエストなど、リソース割り当てを管理します。例:resources: limits: cpu: 2。
  • Kubernetes Horizontal Pod Autoscalersを使用して、トラフィックに基づくスケーリングを自動化します。

使用パターン

このスキルを使用するには、まずモデルをDockerに適した形式で準備してから、ビルドしてデプロイします。Kubernetesへのアクセスに使用する$KUBECONFIGなど、認証用の環境変数は必ず設定してください。

パターン1:基本的なデプロイ

  • モデルを保存済みファイル(例:model.h5)としてエクスポートし、Dockerfileを作成します。
  • ローカルまたはCI/CDでイメージをビルドします。
  • KubernetesデプロイメントYAMLを適用し、コンテナをオーケストレーションします。

パターン2:既存のデプロイを更新

  • 新しいモデルバージョンにタグを付け、Dockerイメージを再ビルドします。
  • 新しいイメージタグを指定して、kubectlで変更を適用します。
  • ロールアウトを監視し、必要に応じて組み込みコマンドを使ってロールバックします。

開始前に必ずクラスターへのアクセスを確認してください。kubectl get nodesを実行して接続を確認します。

よく使うコマンド/API

主要な操作には、以下のCLIコマンドを使用します。APIを利用する場合は、Kubernetes REST APIエンドポイントを参照してください。

  • Dockerイメージをビルドしてタグ付けする:
    docker build -t mymlmodel:v1 .
    カレントディレクトリからイメージを作成します。

  • イメージをレジストリにプッシュする:
    docker push mymlmodel:v1
    環境変数として$DOCKER_REGISTRY_TOKENによる認証が必要です。

  • Kubernetesにデプロイする:
    kubectl apply -f deployment.yaml
    deployment.yamlには以下を含めます:
    apiVersion: apps/v1
    kind: Deployment
    metadata: name: myml-deployment
    spec: replicas: 3, template: spec: containers: - name: model-server image: mymlmodel:v1

  • デプロイをスケールする:
    kubectl scale deployment myml-deployment --replicas=5

  • デプロイを照会するAPIエンドポイント:
    Kubernetes APIのGET /apis/apps/v1/namespaces/default/deploymentsを使用します。認証には$KUBE_API_TOKENのベアラートークンを使用します。

設定形式には、以下のようなKubernetes YAMLファイルを使用します:

apiVersion: v1  
kind: Service  
metadata: name: model-service  
spec: selector: app: mymlmodel, ports: - protocol: TCP port: 80

統合に関する注意事項

パイプラインYAMLにステップを追加して、このスキルをGitHub ActionsやJenkinsなどのCI/CDツールと統合します。たとえば、GitHub Actionsでは以下のようにします:

jobs:  
  deploy:  
    runs-on: ubuntu-latest  
    steps:  
      - uses: actions/checkout@v2  
      - run: docker build -t mymlmodel:${{ github.sha }} .  
      - run: kubectl apply -f k8s/deployment.yaml --context=$KUBE_CONTEXT

シークレット用の環境変数を設定します。例:リポジトリへのアクセスには$GITHUB_TOKEN、クラスターの選択には$KUBE_CONTEXTを使用します。Dockerとのシームレスな統合のため、ピクル化したモデルファイルなど、MLパイプラインの出力を標準形式にしてください。

エラー処理

よくあるエラーには事前に対処してください。docker build が「no such file」エラーで失敗する場合は、Dockerfile のパスと必要なファイルを確認してください。「image pull failed」のような Kubernetes のエラーが発生した場合は、$DOCKER_REGISTRY_TOKEN を使ってイメージレジストリの認証情報を確認してください。

  • エラー:Pod が準備完了にならない – kubectl logs <pod-name> でログを調べ、デプロイメント YAML 内のリソース設定が一致していることを確認して修正してください。たとえば、resources: requests: memory: "1Gi" を追加します。
  • エラー:認証失敗 – 環境変数を正しく設定してください。たとえば、export KUBECONFIG=~/.kube/config を実行し、kubectl get pods でテストします。
  • 401 Unauthorized などの API エラーが発生した場合は、$KUBE_API_TOKEN から更新済みのトークンを取得して再試行し、スクリプトでは指数バックオフを使用してください。

自動化スクリプトには必ず try-catch を含めてください。例:

import subprocess  
try:  
    subprocess.run(["kubectl", "apply", "-f", "deployment.yaml"], check=True)  
except subprocess.CalledProcessError as e:  
    print(f"Deployment failed: {e}")

グラフの関係

  • 関連クラスター:aimlops
  • 関連タグ:mlops、deployment、containers
  • 関連スキル:model-training(デプロイ前)、monitoring(デプロイ後の可観測性)

コメント