mcpField
M
model-deployment

model-deployment

github.com/alphaonedev云与 DevOps46 次安装
代码仓库

关于 model-deployment

model-deployment 是用于将机器学习模型部署到生产环境的技能,面向 MLOps 流程。它以 Docker 和 Kubernetes 管理模型版本、滚动更新及按流量扩缩容。

主要功能

  1. 01从模型工件构建 Docker 镜像
  2. 02部署模型到 Kubernetes
  3. 03通过标签管理模型版本
  4. 04滚动更新与回滚部署
  5. 05按流量自动扩缩容

适用场景

  1. 01将训练完成的模型部署为在线推理服务
  2. 02模型重新训练后更新现有部署
  3. 03在 MLOps 流程中管理版本并回滚

安装

复制下面的命令,在终端中运行。

$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 Pod 中的 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 中的 bearer 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。确保 ML 流水线输出采用标准格式(例如 pickle 格式的模型文件),以便与 Docker 无缝集成。

错误处理

主动处理常见错误。如果 docker build 因“no such file”失败,请检查 Dockerfile 路径和必需文件。对于 Kubernetes 错误(如“image pull failed”),请通过 $DOCKER_REGISTRY_TOKEN 检查镜像仓库凭据。

  • 错误:Pod 未就绪 – 通过 kubectl logs <pod-name> 检查日志,并确保部署 YAML 中的资源配置相匹配,例如添加 resources: requests: memory: "1Gi"。
  • 错误:身份验证失败 – 正确设置环境变量,例如运行 export KUBECONFIG=~/.kube/config,并使用 kubectl get pods 测试。
  • 对于 API 错误(如 401 Unauthorized),请使用 $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(用于部署后的可观测性)

评论

支持 Markdown