model-deployment について
model-deploymentは、MLOpsワークフローで機械学習モデルを本番環境にデプロイするスキルです。DockerとKubernetesでモデルのバージョン、ローリング更新、トラフィックに応じたスケーリングを管理します。
主な機能
- 01モデル成果物からのDockerイメージ作成
- 02Kubernetesへのモデルデプロイ
- 03タグによるモデルバージョン管理
- 04デプロイのローリング更新とロールバック
- 05トラフィックに応じた自動スケーリング
活用シーン
- 01学習済みモデルをオンライン推論用にデプロイ
- 02再学習後に既存のデプロイを更新
- 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(デプロイ後の可観測性)